Thema Datum  Von Nutzer Rating
Antwort
13.08.2015 16:03:50 Michi
Solved
13.08.2015 19:11:34 Gast72234
NotSolved
13.08.2015 21:52:06 Gast17090
NotSolved
14.08.2015 10:30:22 Gast87150
NotSolved
14.08.2015 12:08:43 Gast26016
NotSolved
14.08.2015 12:56:50 Michi
NotSolved
Rot Aufruf von Sub funktioniert nicht!
15.08.2015 15:56:59 Gast10461
NotSolved
17.08.2015 10:50:48 Gast62125
NotSolved

Ansicht des Beitrags:
Von:
Gast10461
Datum:
15.08.2015 15:56:59
Views:
768
Rating: Antwort:
  Ja
Thema:
Aufruf von Sub funktioniert nicht!

Nun, ich weiß ich was ich da groß erklären soll. Der Code ist selbsterklärend bzw. nicht weiter kompliziert.

Private Function GetIndex(Cbo As MSForms.CheckBox) As Long
  Dim str As String
  Dim i As Long
  For i = Len(Cbo.Name) To 1 Step -1
    Select Case Mid$(Cbo.Name, i, 1)
      Case "0" To "9"
        str = Mid$(Cbo.Name, i, 1) & str
      Case Else
        Exit For
    End Select
  Next
  GetIndex = CLng(str)
End Function

Das einzige was vielleicht relevant wäre, wäre die Schleife und Select Case.

  • die For-Schleife läuft rückwärts durch das Step -1. Es wird also der Name der CheckBox von hinten Zeichenweise (Mid$( , ,1)) durchlaufen und wenn dies eine Ziffer ist, dann wird sie nach str übernommen. Es wird also der Index aus dem Namen extrahiert (z.B. aus CheckBox123 -> str = "123")
  • und Select Case ist offensichtlich das Switch-Statement aus Java

 

>> aber Cbo As MSForms.CheckBox? Ist MSForms.CheckBox dann sozusagen mien Variablentyp?

Richtig.

MSForms ist übrigens der Bibliothekname. Insofern kein anderer Datentyp CheckBox im Projekt existiert, könnte man sich dies also sparen (aus Angewohnheit schreibe ich so etwas jedoch immer davor).

Wirf am besten mal auch einen Blick in den Objektkatalog (F2 Taste im VBA-Editor; oder Menü Ansicht).

 

Drück mal im VBA-Editor die F1 Taste (vorher alle Codefenster schließen, auch ggf. UserForms) und schau dir die Grundlagen der Programmiersprache an.

 

>> Andere Frage: Ich habe immer im Internet gelesen, dass man die Formular-Steuerelemente nicht über VBA prorgammieren kann, das habe ich dann wohl falsch verstanden oder? Dann werde ich mir die auf jeden Fall auch nochmal anschauen.

Das ist teilweise richtig, aber auch nur zum Teil. Man kann an diese ein Makro binden (OnAction); idR. wird dieses dann bei einem Click darauf ausgeführt.

Manchmal eigenen sich diese jedoch besser als ActiveX-Steuerelemente. Und so einen Fall liegt bei dir vor.

kl. Beispiel: (Erstell ein CheckBox (Formular-Steuerelement), rechtsklicke drauf und weise ihm das untrige Makro zu - dies kannst beliebig oft tun)

'in einem Modul platzieren
Option Explicit

Sub CheckBox_OnAction()
  
  Dim shp As Excel.Shape
  
  Select Case VarType(Application.Caller)
    Case vbString
      On Error Resume Next
      Set shp = ActiveSheet.Shapes(Application.Caller)
      On Error GoTo 0
    Case Else
      Exit Sub
  End Select
  
  If shp Is Nothing Then
    Call MsgBox("Application.Caller = '" & Application.Caller & "' nicht gefunden.", vbCritical)
    Exit Sub
  End If
  
  If shp.Type = msoFormControl Then
    If shp.FormControlType = xlCheckBox Then
      Call MsgBox("'" & shp.Name & "' ist eine CheckBox.", vbInformation)
    Else
      Call MsgBox("'" & shp.Name & "' ist ein Formular-Steuerelement, jedoch keine CheckBox.", vbInformation)
    End If
  Else
    Call MsgBox("'" & shp.Name & "' ist keine Formular-Steuerelement.", vbInformation)
  End If
  
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
13.08.2015 16:03:50 Michi
Solved
13.08.2015 19:11:34 Gast72234
NotSolved
13.08.2015 21:52:06 Gast17090
NotSolved
14.08.2015 10:30:22 Gast87150
NotSolved
14.08.2015 12:08:43 Gast26016
NotSolved
14.08.2015 12:56:50 Michi
NotSolved
Rot Aufruf von Sub funktioniert nicht!
15.08.2015 15:56:59 Gast10461
NotSolved
17.08.2015 10:50:48 Gast62125
NotSolved