Re: Via Makro in ein andere Sheet ein Makro einfuegen
28.05.2003 11:52:04
Dan
Hallo Michael,
ich schicke dir code mit zwei beispielen, die button in sheet zugeben. Ich habe es versucht den code mit kommentaren in der deutschen sprache zu preparieren :-). Bei dem zweiten beispiel ist es auch moglich eine makro mit dem event button_click verbeinden. Also versuch es mit der zweiten moglichkeit, obwohl ActiveX Controls sind neu und schon, wie man sagt :-). Mfg.Dan.
'--------------------------------------------------------------Option Explicit
Private Sub Insert_ActiveXControl()
Dim ShActive As Worksheet
Dim myOLE As OLEObject
Set ShActive = ActiveSheet
'in Excel sind die ActiveX controls in OLEObjects collection
'OLEObject kann alles mogliche sein, z.B ein Word Documnet
'Type is mit ClassType bestimmt, z.B. ClassType:="Word.Document"
'liste der Typen kann man im help unter "OLE Programmatic Identifiers" finden
'manual zugeben mit Toolbar "Control Toolbox", es sind die selben control, wie bei UserForm,
'nur mit einigen zusatslichen properties wie LinkedCell usw.
'add OLE, ClassType Button
Set myOLE = ShActive.OLEObjects.Add( _
ClassType:="Forms.CommandButton.1", _
Link:=False, _
DisplayAsIcon:=False, _
Left:=10, _
Top:=10, _
Width:=80, _
Height:=50)
'Name, Width usw. andern
With myOLE
MsgBox "OLE Object" & vbCrLf & _
"Name : " & .Name & " , Left : " & .Left & " , Top : " & .Top & _
" , Width : " & .Width & " , Height : " & .Height
.Name = "MyButton"
.Width = 180
.Height = 120
End With
'oder man kann den OLEObjects Collection Object benutzen, um an die einzellne OLEObjects zu kommen
With ShActive.OLEObjects("MyButton")
MsgBox "OLE Object II" & vbCrLf & _
"Name : " & .Name & " , Left : " & .Left & " , Top : " & .Top & _
" , Width : " & .Width & " , Height : " & .Height
End With
'control properties, welche sind nicht als properties des OLEObjects zu sehen
'kann man durch die "Object" property bearbeiten
With myOLE.Object
.Caption = "Button As ActiveX Control"
End With
'OLEObject loschen
myOLE.Delete
End Sub
Private Sub Insert_ExcelControl()
Dim Mycmd As Button
'Excel Controls sind Hidden Objects, und es ist ein Rudiment der altern versionen
'laut help man sollte die ActiveX ctl. benutzen :-0
'(manual zugeben am Toolbar "Forms")
'button add, man kann gleich den button verandern
Set Mycmd = ActiveSheet.Buttons.Add(45.75, 285.75, 224.25, 75.75)
With Mycmd
.Caption = "Button As Excel Control"
MsgBox .Caption & vbCrLf & "Left : " & .Left & " , Top : " & .Top & _
" , Width : " & .Width & " , Height : " & .Height
'oder man kann auch spater die masse andern
.Width = 50
.Height = 50
.Top = 50
.Left = 20
MsgBox "Nach der Veranderung : " & vbCrLf & .Caption & vbCrLf & _
"Left : " & .Left & " , Top : " & .Top & _
" , Width : " & .Width & " , Height : " & .Height
End With
'hier kann man dem button eine makro zuweissen, das fur den Druck verantwortlich sein wird
Mycmd.Select
Selection.OnAction = "SheetEtwas.xls!MakroName"
'button wieder loschen
'Mycmd.Delete
End Sub