Klassenprogrammierung ActiveX-CommancButton
08.07.2010 09:46:13
Beverly
Hi Stefan,
du hast noch die Möglichkeit, es mittels Klassenprogrammierung zu lösen:
Code im Workbook_Open:
Option Explicit
Private Sub Workbook_Open()
SchalterInitialisieren
End Sub
Code in einem allgemeinen Modul:
Option Explicit
Public arrSchalter() As New clsButton
Sub SchalterInitialisieren()
Dim wshTabelle As Worksheet
Dim oobjElement As OLEObject
Dim intSchalter As Integer
intSchalter = 1
For Each wshTabelle In Worksheets
With wshTabelle
For Each oobjElement In .OLEObjects
If oobjElement.progID = "Forms.CommandButton.1" Then
ReDim Preserve arrSchalter(1 To intSchalter)
Set arrSchalter(intSchalter).clSchalter = wshTabelle.OLEObjects(oobjElement. _
Name).Object
intSchalter = intSchalter + 1
End If
Next oobjElement
End With
Next wshTabelle
End Sub
Außerdem ein Klassenmodul erstellen mit Namen clsButton und dort diesen Code:
Option Explicit
Public WithEvents clSchalter As msforms.CommandButton
Private Sub clSchalter_Click()
Dim lngLetzte As Long
With Worksheets(clSchalter.Parent.Name)
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
Rows.Count) + 1
.Cells(lngLetzte, 1) = clSchalter.Caption
.Cells(lngLetzte, 2) = Date
.Cells(lngLetzte, 3) = Format(Time, "hh:mm:ss")
End With
End Sub