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

Beiträge aus den Excel-Beispielen zum Thema "Bereich markieren per Makro "