Hi Anja,
ich habe folgendes Problem. Ich möchte gerne bei Kästchen, die
ich in Excel gemalt habe automatisch die Höhe und Breite
verändern. Die benötigte Höhe und Breite steht z.B. in den
Zellen A1 und A2 (dies sind allerdings keine festeingetragenen
Zahlen, sondern berechnete Werte.)
du willst da eine automatische Lösung, gut. Das Problem ist Wertänderungen in A1 oder A2 durch die Berechnung einer Formel bekommt Vba nicht mit.
(Mal das Calculate-Ereignis weglassend)
Aber jede manuelle Wertänderungen in Zellen die das Ergebnis in A1 oder A2 beeinflußen bekommt Vba mit.
Beispiel, in A1 steht =B1*2 und in A2 =B2*2.
Dann könntest du im Modul des Tabellenblattes folgendes benutzen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address „$B$1“ And Target.Address „$B$2“ Then Exit Sub
Call Kästchen
End Sub
Dies bedingt in einem StandardModul, z.B. Modul1 folgenden Code:
Sub Kästchen()
Dim Rechteck As Shape
Const F As Double = 25
Set Rechteck = ActiveSheet.Shapes("Rectangle 1") 'Nummer anpassen
With Rechteck
.Height = Range("A1") \* F
.Width = Range("A2") \* F
End With
End Sub
Das „Modul des Tabellenblattes“ erreichst du wenn du im VB-Editor einen Doppelklick links auf den Blattnamen durchführst.
Das Standardmodul Modul1 erzeugst du durch Einfügen–Modul.
Besteht es schon, ebenfalls Doppelklick auf den Modulnamen.
Wenn du nun in B1 oder B2 andere Werte eingibst, passt sich die Rechteckgröße diesen Werten automatisch an.
Den Faktor F im Code kannst du dir ja anpassen.
Gruß
Reinhard
Nun habe ich über Makro aufzeichnen (zu mehr bin ich nicht
wirklich fähig) versucht genau dies zu tun, was ich möchte.
Ich habe das Kästchen markiert, bin in Objekt bearbeiten
gegangen und habe die Werte aus Zelle A1 (9) und A2 (10)
eingetragen, okay gedrückt und die Aufzeichnung beendet.
Dann habe ich mir mein Ergebnis angeschaut:
Sub Kästchen()
’
’
ActiveSheet.Shapes(„Rectangle 5“).Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 255#
Selection.ShapeRange.Width = 283.5
Selection.ShapeRange.Rotation = 0#
End Sub
Ich hätte nun irgendwo eine 9 und eine 10 erwartet und
gehofft, dass ich die durch A1 und A2 irgendwie ersetzen kann,
aber dem war nicht so.
Was muss ich tun? Wer kann mir helfen?
Vielen Dank und Grüße
Anja