Hot News:

Unser Angebot:

  Foren auf CAD.de
  Excel
  Schleife: alle Textlabel in Worksheet

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Schleife: alle Textlabel in Worksheet (1768 mal gelesen)
runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8086
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 23. Mai. 2006 18:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
Ich versuche meine Datei etwas zu optimieren, da erstens die Speicherzeiten enorm lang sind (bis zu 1 min auf nem schnellen System, über die langsamen rede ich besser nicht) und zweitens haben sich beim Programmieren einige Fehler eingeschlichen, die ich so langsam versuche zu finden und zu entfernen, bin aber mal wieder zu doof für meine Schleife.

Was ich vorhabe:

Ich habe auf 31 sheets jeweils 15 textlabel. Diese werden durch einen ComboBox-Eintrag gefüllt,

Code:
Private Sub ComboBox15_Change()
    Reihe = Tabelle1.ComboBox15.ListIndex + 10
    Tabelle1.Label5.Caption = Tabelle34.Cells(Reihe - 1, 20)
End Sub
allerdings nur ein abgeschnittener Text (ca. 20 Zeichen, bedingt durch die Labelbreite)  Wenn ich einen Doppelclick auf das label mache, geht eine userform auf, deren Inhalt ein Textfeld ist, auf dem der ganze Text angezeigt wird.
Momentan ist mein code sehr unschön, da ich diesen code auf allen 31 Tabellenblättern wiederhole: kleiner Auszug
Code:
Private Sub Label5_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    UserForm1.Label1.Caption = Tabelle1.Label5.Caption
    UserForm1.Show
End Sub

Private Sub Label6_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    UserForm1.Label1.Caption = Tabelle1.Label6.Caption
    UserForm1.Show
End Sub
usw.



Jetzt möchte ich das ganze Spielchen verkürzen.

was ich bisher versucht habe: Gelächter bitte verkneifen 

Code:
Sub KurzTexte()
Dim lbl As Object                      'auch schon als OLEObject od. label versucht
For Each lbl In ThisWorkbook.Worksheets
    UserForm1.Label1.Caption = Tabelle2.lbl.Caption    'hier findet er das Objekt "lbl" nicht
    UserForm1.Show
End Sub

Sub LabelAuswahl()
'Dim lbl As Label
For Each lbl In ThisWorkbook.Worksheets.DblClick    'das DblClick geht natürlich auch nicht
    KurzTexte
End Sub



Ich habe es auch schon mit einer For t = 1 to 20 versucht aber Tabelle2.label & t geht leider auch nicht.
Bin mit meinem Latein am Ende. Wer kann mir sagen, wie ich die labels definieren muß, damit ich sie so allgemein ansprechen kann? Im LokalFenster sehe ich leider auch den Wald vor lauter Bäumen nicht...
Ein Problem könnte sein, daß die userform sich ja labelabhängig füllt, heißt, anderes label -> anderer Text aber gleiche userform.

Kann mir jemand helfen?

Gruß,
Nicole

------------------
Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 23. Mai. 2006 19:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für runkelruebe 10 Unities + Antwort hilfreich

Hallo Nicole,

dazu musst du eine Klasse der Labels anlegen. Da du ja die Klasse des Userforms schon hast, verwendest du gleich diese. Im Open - Ereignis der Mappe initialisierst du die Klasse:

Code:

Option Explicit

Private objLabel() As UserForm1

Private Sub Workbook_Open()
    Dim objOLEObject As OLEObject
    Dim objWorksheet As Worksheet
    Dim lngCounter As Long
    For Each objWorksheet In ThisWorkbook.Worksheets
        For Each objOLEObject In objWorksheet.OLEObjects
            If TypeOf objOLEObject.Object Is MSForms.Label Then
                lngCounter = lngCounter + 1
                ReDim Preserve objLabel(1 To lngCounter)
                Set objLabel(lngCounter) = New UserForm1
                Set objLabel(lngCounter).prpSetLabel = objOLEObject.Object
            End If
        Next
    Next
End Sub


Im Klassenmodul des Userform befindet sich folgender Code:

Code:

Option Explicit

Private WithEvents mobjLabel As MSForms.Label

Friend Property Set prpSetLabel(objLabel As MSForms.Label)
    Set mobjLabel = objLabel
End Property

Private Sub mobjLabel_Click()
    Label1.Caption = mobjLabel.Caption
    Me.Show
End Sub


------------------
Gruß
Nepumuk

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 23. Mai. 2006 19:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für runkelruebe 10 Unities + Antwort hilfreich

Hallo Nicole,

ich übersah "Doppelklick".  

Dann muss das Ereignis natürlich so aussehen:

Code:

Private Sub mobjLabel_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Label1.Caption = mobjLabel.Caption
    Me.Show
End Sub


Edit: Der Doppelklick wird in einer Tabelle etwas eigenartig interpretiert. Aber so geht's:

Code:

Private Sub mobjLabel_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
    Label1.Caption = mobjLabel.Caption
    Me.Show
End Sub


------------------
Gruß
Nepumuk

[Diese Nachricht wurde von Nepumuk am 23. Mai. 2006 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 23. Mai. 2006 20:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für runkelruebe 10 Unities + Antwort hilfreich

Ach Nicole,

das ist SCH...ade.

Das entladen des Userforms zerstört die Klasse. Ich lass mir was anderes einfallen. Erst mal eine Tasse Kaffee.

------------------
Gruß
Nepumuk

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8086
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 23. Mai. 2006 20:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo nepumuk,
erstmal Danke für's Helfen! aber nur nicht hetzen, ich versuche noch die label-Klasse zu verstehen, bin also noch ein Weilchen beschäftig 
sowas mit MSForms und OLEObject hatte ich noch dumpf im Kopf, aber natürlich nicht in dieser Reihenfolge. (Bei objOLEObject.Object sind mir einfach zuviele "Objects" drin, wer soll denn auf sowas kommen    )
Gruß,
Nicole

------------------
Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 23. Mai. 2006 20:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für runkelruebe 10 Unities + Antwort hilfreich


Mappe1.xls.txt

 
Hallo Nicole,

es geht leider nicht, ohne Excel zu überlisten. 

------------------
Gruß
Nepumuk

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8086
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 23. Mai. 2006 20:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Laufzeitfehler.JPG

 
Nachdem ich Pfeife begriffen habe, daß ich die Datei einmal schließen und wiederöffnen muß, bevor das funktionieren kann  , läuft's fast.
wir nähern uns! Auf dem ersten Blatt klappt es. Wechsel' ich aber danach das sheet, um auch an Tag 2 mal ins LV zu schauen:
Laufzeitfehler s.Bild
danach geht's nicht mehr. Ich traue mir nicht zu, selber nach dem Fehler zu fahnden...
Schaust Du wohl nochmal?

------------------
Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 23. Mai. 2006 21:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für runkelruebe 10 Unities + Antwort hilfreich

Hallo Nicole,

du musst aber deinen Code im Modul des Userform anpassen!!!

Wie schon geschrieben, zerstört das entladen des Forms die Klasse. Daher die Fehlermeldung

------------------
Gruß
Nepumuk

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8086
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 23. Mai. 2006 21:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Klar, mein Fehler, nicht close, sondern hide ist das Zauberwort.
Sorry und ein dickes Danke schön!
Meine Monster Datei nimmt schlankere Formen an 
Ich wünsche Dir noch einen Schönen Abend!

Nicole

------------------
Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz