If ActiveSheet.Shapes = 'Text Box 44' Then MsgBox

hallo liebe vba könnerInnen
ich möchte als blutiger anfänger,
in einem makro festlegen,
das wenn einE userIn bei einem textfeld die größe verändert,
das makro das textfeld nur zu einer bestimmten höhe und größe
verändern läßt.
ich dachte nun, das ich das betreffende textfeld (text box 44) an eine variable übergebe, höhe und breite an jeweils an eine weitere und die dann abgleiche mit festen variablen die das maximum beinhalten. wenn das maximum überschritten ist, solls ne msgbox geben.
nun, wenn ich wie oben die simple aktion ausführen lassen will:
wenn text box 44 selectiert = öffne msgbox.
klappt aber nicht, zumindest nicht so.
wie soll ich da erst das viel komplizierte wie o. beschrieben hinbekommen?
also:
1.) wie muss die syntax aussehen wenn ich einer variabelen die eigenschaften eines objekts übergebe?

  1. wie übergebe ich werte einer eigenschaft zurück an ein objekt?

  2. sind solche eigenscha´ften wie höhe un breite sogar in wirklichkeit argumente?

okay, bischen ville… kennt ihr ein gutes vba portal wo mensch sowas nachlesen kann?

fragen über fragen…
vielen dank aber auch schon fürs lesen…

gruß
herpes

Hi Herpes,

Die Höhe und Breite einer Textbox (etwa „Text^Box 44“) bekommst Du über

ActiveSheet.Shapes(„Text Box 1“).Height bzw. .Width

Die kannst Du dann mit den Sollwerten vergleichen und entsprechend anpassen, also

if ActiveSheet.Shapes(„Text Box 1“).Height > 100 then ActiveSheet.Shapes(„Text Box 1“).Height = 100

Das Problem liegt vielmehr darin, WANN Dein Makro ausgeführt wird. Du willst ja, dass das Verändern der Größe von Deinem Makro abgefangen wird, dass Excel auf die Änderung also reagiert. Ein benutzerdefiniertes Makro läuft nur ab, wenn Du es aufrufst oder einer Symbolleiste zuweist etc.

Du brauchst aber etwas, das auf Benutzeraktionen praktisch im Hintergrund reagiert. Ein Beispiel: Excel reagiert auf das Auswählen einer Zelle, d.h., jedesmal, wenn Du eine andere Zelle auswählst mit dem Code, der in der Sub Workbook_SheetSelectionChange steht. Diese kannst Du unter VBA in DieseArbeitsmappe einfügen.

Was Du bräuchtest, wäre eine Sub Workbook_UserHatMitTextBoxWasAngestellt, aber eine solche gibt es nicht. Leider ist mir auch kein Umweg eingefallen. Das einzige ist, den Code wirklich in die Sub Workbook_SheetSelectionChange einzufügen, dann kann der User die Textbox zwar beliebig ändern, sobald er aber wieder eine Zelle auswählt, wird die Größe korrigiert.

Gruß

Sculpture