Nepumuk , oder Klassenmodule fachmann
17.10.2005 08:02:00
chris
hätte da noch eine frage zu meinem Klassenmodul versuch.
Nepumuk hat mir bis hierhin schon sehr viel geholfen.
Jetzt wollte ich selbst meinen Code noch etwas umbauen und tests machen.
Aber aus irgeneinem Grund klappt das nicht und ich frage mich warum.?
Ich poste hier mal meinen neuen Code in dem habe ich nur diesen Aufruf ausgeklammert
'Application.OnTime Now + TimeValue("00:00:01"), "OLE_Class_Setten"
und eben die funktion aus diesem Sup in die funktion davor kopiert.
Aber aus irgeneinem mir nicht verständlichen Grund klappt das so nicht :(
Würde mich freuen wenn mir jemand erklären könnte warum. Vielen Dank !!!
Option Explicit
Public aCommbutt() As New cls_Commandbuttons
Public intCheckCount As Integer
Dim pos As Integer
Dim mysheet As Worksheet
Dim nurtest1 As String
Dim nurtest2 As String
Dim nurtest3 As String
Sub buttons_löschen_starten()
Dim objDynCommandbuttons As OLEObject
For Each objDynCommandbuttons In ActiveSheet.OLEObjects
nurtest3 = TypeName(objDynCommandbuttons.Object)
If TypeName(objDynCommandbuttons.Object) = "CommandButton" Then
objDynCommandbuttons.Delete
End If
Next
End Sub
Sub erstellen_buttons_starten()
'Makroaufruf mit Variablenübergabe von "ActiveSheet"
ChbDynamischErzeugen ActiveSheet
End Sub
Public
Function ChbDynamischErzeugen(wksSheet As Worksheet)
Dim intJ As Integer
intCheckCount = 0
Dim chbCommandbutton As OLEObject
pos = 20
For Each mysheet In ActiveWorkbook.Worksheets
Set chbCommandbutton = wksSheet.OLEObjects.Add(ClassType:="Forms.commandbutton.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=10, _
Top:=pos, _
Width:=100, _
Height:=20)
'neu
For intJ = 1 To ActiveSheet.OLEObjects.Count
If TypeName(ActiveSheet.OLEObjects(intJ).Object) = "CommandButton" Then
ReDim Preserve aCommbutt(1 To intJ)
Set aCommbutt(intJ).objDynCommandbutton = ActiveSheet.OLEObjects(intJ).Object
End If
Next
'neu bis hier
chbCommandbutton.Object.Caption = mysheet.Name
Set chbCommandbutton = Nothing
'Position der CommandButtons
pos = pos + 20
Next
'Application.OnTime Now + TimeValue("00:00:01"), "OLE_Class_Setten"
End Function
Sub OLE_Class_Setten()
Dim intJ As Integer
intCheckCount = 0
For intJ = 1 To ActiveSheet.OLEObjects.Count
If TypeName(ActiveSheet.OLEObjects(intJ).Object) = "CommandButton" Then
ReDim Preserve aCommbutt(1 To intJ)
Set aCommbutt(intJ).objDynCommandbutton = ActiveSheet.OLEObjects(intJ).Object
End If
Next
End Sub