Hi Tobias,
Mit Auswahl meine ich eine Combobox, die moment aus 10
Einträge von 5 bis 10 besteht.
10?, komme auf 6 *g
Ich will einen Kalender erstellen, in dem ich Ereignisse
platziere. Die Combobox wird dabei gewählt um die Tage
zwischen Ereignis A und B zu kennzeichnen. Wird z.B in der
Combobox der Eintrag „5“ gewählt, so sind zwischen den Marken
von A und B 5 Tage. Bei entsprechend anderer Wahl sind es mehr
oder weniger Tage.
Also die Combobox nimmt Werte zwischen 5 und 10 ein.
Das was Munich geschrieben hat funktioniert wunderbar. Die
Bilder können nicht weiter als an der linken Rand verschoben
werden. Bei entsprechender Verschiebung nach rechts kann ich
die Marken dann richtig platzieren. Ein kleines Problem dabei
ist nur, dass dies nur funktioniert, wenn die Spaltenbreite
nicht verändert wird.
Das verschieben macht der Makrorekorder. Warum nicht gleich absolut positionieren? lege dir so eine Tabelle an in z.B. Blatt3
Tabellenblattname: Tabelle3
A B C D E
1 VPH VPAH VPPR VPKR
2 5 234 334 117 18
3 6 112 127 345 20
4 7 213 456 678 22
5 8 112 33 43 23
6 9 34 4 34 24
7 10 22 1000 5 27
Dann diesn Code benutzen:
Option Explicit
Option Base 1
Private Sub ComboBox2\_Change()
Dim Wert, n As Byte, Links, Spa As Integer, Spalten As Integer, Zeilen As Long
Wert = Array("5", "6", "7", "8", "9", "10")
With Worksheets("Tabelle3")
For n = 1 To 6
Select Case Wert(n) = CStr(ComboBox2)
Case True
Spalten = .Range("IV1").End(xlToLeft).Column
Zeilen = .Range("A65536").End(xlUp).Row
For Spa = 2 To Spalten
Worksheets(Cells(1, Spa)).Shapes("Picture 4").Left = Application.WorksheetFunction.VLookup(Wert(n), .Range(Cells(2, 2), Cells(Zeilen, Spalten)), Spa, 0)
Worksheets(Cells(1, Spa)).Shapes("Picture 5").Left = Application.WorksheetFunction.VLookup(Wert(n), .Range(Cells(2, 2), Cells(Zeilen, Spalten)), Spa, 0)
Next Spa
Exit For
Case Else
End Select
Next n
End With
End Sub
Noch ist ein fehlerchen drin in der left-Zuweisung, aber vielleicht
ist das egal. Falls du auch Spaltenbreiten verändern willst ist der Code eh hinfällig.
Angenommen Bild 1 soll immer links oben die gleichen Werte haben wie G34:
Worksheets(„VPS“).Shapes(„Picture1“).Left=Worksheets(„VPS“).Range(„G34“).left
Worksheets(„VPS“).Shapes(„Picture1“).top=Worksheets(„VPS“).Range(„G34“).top
Und falls die Breite von G34 wichitg ist:
Worksheets(„VPS“).Shapes(„Picture1“).width=Worksheets(„VPS“).Range(„h34“).left-Worksheets(„VPS“).Range(„G34“).left
Gruß
Reinhard