Herbers Excel-Forum - das Archiv

OOP in VBA ?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: OOP in VBA ?
von: Marc

Geschrieben am: 16.03.2005 10:51:31
Hallo Forum,
folgendes Problem:
Ich habe in einer UserForm eine ganze Reihe von SpinButtons die jeweils eine TextBox beeiflussen. Dabei ist SpinButton1 an TextBox1 usw. gebunden.
Anstatt mir nun die Finger wund zu programmieren, würde ich gerne eine Methode schreiben, die bei jedem SpinButton.Click aufgerufen wird, die 'Nummer' des aufrufenden SpinButton übernimmt und damit die entsprechende TextBox verändert.
In der OOP kein Problem, in VBA kenne ich die Lösung leider nicht.
Wer kann helfen?
Bild

Betrifft: AW: OOP in VBA ?
von: bst

Geschrieben am: 16.03.2005 12:19:57
Hallo Marc,
versuch's mal so. Hier mit 4 SpinButtons & 4 Textboxes in Userform2.
Alle SpinButtons müssen den Namen SpinButtonNR haben, mit NR = 1,2,3,...
Alle Textboxen müssen analog den Namen TextBoxNR haben.
In ein Modul:
Option Explicit
Public SpinButtonArray(1 To 4) As mySpinButton
In ein Klassenmodul mit dem Namen mySpinButton (Der Name ist wichtig !):
Option Explicit
Public WithEvents mySpinButton As MSFORMS.SpinButton
Private Sub mySpinButton_Change()
Dim myNum As Integer
myNum = CInt(Val(Replace(mySpinButton.Name, "SpinButton", "")))
If myNum <= 0 Then
Debug.Print "Falscher NAME !!!", mySpinButton.Name
Else
UserForm2.Controls("TextBox" & myNum).Value = mySpinButton.Value
End If
End Sub

Hinter die Userform2:
Option Explicit
Private Sub UserForm_Initialize()
Dim intIndex As Integer
Dim strName As String
For intIndex = 1 To 4
Set SpinButtonArray(intIndex) = New mySpinButton
strName = "SpinButton" & CStr(intIndex)
Set SpinButtonArray(intIndex).mySpinButton = Me.Controls(strName)
Next
End Sub

HTH, Bernd
Bild

Betrifft: AW: OOP in VBA ?
von: Marc
Geschrieben am: 16.03.2005 14:04:22
Hallo Bernd,
vielen Dank für deine Lösung, funktioniert einwandfrei!
Gruß Marc
 Bild