412 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

möchte in vba mehreren Labels eine einheitliche Länge zuweisen. Dachte es geht mit
[code]With UserForm2
    For i = 84 To 102
        .Controls("Label" & i).Width = 216
    Next
End With[/code]

.... klappt aber nicht. Was läuft falsch?
Gruß A.

6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Andreas,

so sollte es eigentlich funktionieren. Beachte aber, dass du die Breite entweder in UserForm_Initialize() festlegst oder bevor du die Userform startest:
[code]With UserForm2
    For i = 84 To 102
        .Controls("Label" & i).Width = 216
    Next
   .Show
End With[/code]

Startest du zuerst die Userform, dann klappt der Code nicht.

Gruß

M.O.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,
wenn ich den Code aus einem separaten modul starte öffnet sich die UserForm automatisch, der Code wird aber nicht ausgeführt.
Unter initialize läuft der Code aber ohne die Länge zu verändern.
Irgendwie komisch. Ich will ja auch, daß diese "Einstellung" dann so erhalten bleibt und nicht jedes mal von neuen abgearbeitet werden muss.
Gruß A.
0 Punkte
Beantwortet von
Moin an alle!

Mal ne Frage: Die Labelcontrols haben aber auch den Namen "[i]Label[/i]" gefolgt einer Zahl, also z.B. "Label84"? Wenn das nicht so ist, wird Dein Code, egal von wo Du in ausführen läßt, nicht funktionieren. Dann musst Du in den Eigenschaften der Labels unter (Name) die Labels wieder in "[i]Labelxx[/i]" umbenennen.

Gruß,
Oliver
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Andreas,

[quote]Ich will ja auch, daß diese "Einstellung" dann so erhalten bleibt und nicht jedes mal von neuen abgearbeitet werden muss.[/quote]

Ob du das per VBA geht weiß ich nicht. Ich habe im Netz jedenfalls nichts dazu gefunden.

Gruß

M.O.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
ok, danke für euren Input!
Gruß A.
0 Punkte
Beantwortet von
Hi Andreas,

wenn du willst, dass die Einstellung dauerhaft erhalten bleibt, brauchst du doch nur im Entwurfsmodus mit der Maus einen Rahmen um die Labels ziehen und dann der Width-Eigenschaft den Wert 216 zuweisen. Oder du machst auf die Mehrfachmarkierung einen Rechtsklick und wählst Größe angleichen -> Breite. Die Einstellung wird dann für alle markierten Labels übernommen. Wozu der Umweg über VBA?

Mr. K.
...