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 "