D
derBobby
Gast
Hallo zusammen,
Info:
in einer kleinen Bastellei mit Excel 2007 habe ich drei OLEObject CommandButtons, die während der Laufzeit erstellt werden und ihren Code bekommen, wenn ein neues Blatt erzeugt wird. Diese sollen nebeneinander angezeigt werden mit den Funktionen "Blatt zurück", "Blatt vor", "zur Übersicht".
Problem:
Funktioniert alles soweit, bis auf die Positionierung. Der Wert Left lässt sich entweder nicht festlegen, oder er verändert sich, so dass die Anzeige nicht passt. Außerdem verhält er sich irgendwie seltsam.
Beispiel mit gerade erdachten Werten: zwischen 30 und 100 bewegt sich kaum etwas und ab 100 machts dann riesen Sprünge. Sprich: Verhalten scheint irgendwie nicht linear.
right.png - So sollte es sein
wrong.png - So ist es nach Ausführung
Funktion die beim Erstellen eines neuen Blattes aufgerufen wird:
Das wird nach dem erstellen eines neuen Blattes mittels Code noch mal extra ausgeführt, bringt aber auch keine Änderung:
(pNummer=Worksheet Name
Der Programmschnipsel und die Methodik dahinter mag euch Pro's sehr stümperhaft vorkommen, aber ich bin noch am Lernen. Mit Klassen etc. beschäftige ich mich, wenn der Stümper-Code läuft und es ans verbessern geht. Damit kann ich dann wohl auch die Codeerzeugung zur Laufzeit lassen!
Habt ihr einen Plan, warum die Buttons scheinbar willkürlich positioniert werden?
Gruß und Dank,
derBobby
Info:
in einer kleinen Bastellei mit Excel 2007 habe ich drei OLEObject CommandButtons, die während der Laufzeit erstellt werden und ihren Code bekommen, wenn ein neues Blatt erzeugt wird. Diese sollen nebeneinander angezeigt werden mit den Funktionen "Blatt zurück", "Blatt vor", "zur Übersicht".
Problem:
Funktioniert alles soweit, bis auf die Positionierung. Der Wert Left lässt sich entweder nicht festlegen, oder er verändert sich, so dass die Anzeige nicht passt. Außerdem verhält er sich irgendwie seltsam.
Beispiel mit gerade erdachten Werten: zwischen 30 und 100 bewegt sich kaum etwas und ab 100 machts dann riesen Sprünge. Sprich: Verhalten scheint irgendwie nicht linear.
right.png - So sollte es sein
wrong.png - So ist es nach Ausführung
Funktion die beim Erstellen eines neuen Blattes aufgerufen wird:
Code:
Private Sub Workbook_NewSheet(ByVal neuesBlatt As Object)
Dim CB1 As Object
Dim CB2 As Object
Dim zielBlatt As Object
Dim quellBlatt As Object
Dim aktZeile As Integer
If neuesBlatt.Type <> xlWorksheet Then Exit Sub
Set CB1 = neuesBlatt.OLEObjects.Add(classtype:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=8.25, Top:=410.25, Height:=30, Width:=40)
Set CB2 = neuesBlatt.OLEObjects.Add(classtype:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=60.75, Top:=410.25, Height:=30, Width:=40)
Set CB3 = neuesBlatt.OLEObjects.Add(classtype:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=113.25, Top:=410.25, Height:=30, Width:=40)
Set quellBlatt = Application.VBE.ActiveVBProject.VBComponents(Sheets("Vorlage").CodeName)
Set zielBlatt = Application.VBE.ActiveVBProject.VBComponents(neuesBlatt.CodeName)
With zielBlatt.CodeModule
.DeleteLines 1, .countoflines
For aktZeile = 1 To quellBlatt.CodeModule.countoflines
.InsertLines aktZeile, quellBlatt.CodeModule.Lines(aktZeile, 1)
Next
End With
End Sub
Das wird nach dem erstellen eines neuen Blattes mittels Code noch mal extra ausgeführt, bringt aber auch keine Änderung:
(pNummer=Worksheet Name
Code:
With Worksheets(pNummer).OLEObjects("CommandButton1")
.Object.Caption = "<<"
.Top = 410.25
.Left = 8.25
.Height = 30
.Width = 40
End With
With Worksheets(pNummer).OLEObjects("CommandButton2")
.Object.Caption = "zurück"
.Top = 410.25
.Left = 100
.Height = 30
.Width = 40
End With
With Worksheets(pNummer).OLEObjects("CommandButton3")
.Object.Caption = ">>"
.Top = 410.25
.Left = 118.75
.Height = 30
.Width = 40
End With
Der Programmschnipsel und die Methodik dahinter mag euch Pro's sehr stümperhaft vorkommen, aber ich bin noch am Lernen. Mit Klassen etc. beschäftige ich mich, wenn der Stümper-Code läuft und es ans verbessern geht. Damit kann ich dann wohl auch die Codeerzeugung zur Laufzeit lassen!
Habt ihr einen Plan, warum die Buttons scheinbar willkürlich positioniert werden?
Gruß und Dank,
derBobby