vbClick Variable nicht erkannt?!

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

Betrifft: vbClick Variable nicht erkannt?!
von: Wusel
Geschrieben am: 04.06.2015 18:42:47

Hallo zusammen,
tut mir direkt ein Bisschen Leid, dass ich dieses Forum so mit meinen Kleinigkeiten nerve, aber ich arbeite auf eine Deadline zu und habe mal wieder keine Antwort :( Wenn jemand bitte so nett wäre mich zu entwirren...? :)
Ich habe auf einem Tabellenblatt einen Button platziert. Wenn man ihn clickt öffnet sich ein kleines UF. Dort befinden sich zwei Buttons. Eine schickt mich auf ein anderes TB und einer (BTPFMASKE) soll das UF "UFPORTFOLIOANZEIGEN" öffnen, einen Wert aus dem TB ins UF schreiben (CBPFSUCHE) und den Button "BTPFZEIGEN" klicken, um den Code dahinter auszuführen. Soviel zur Idee :)
Dieser Code funktioniert nicht. Excel meint, dass die Variable vbclick nicht definiert ist.

Private Sub BTPFMASKE_Click()
    With UFPORTFOLIOANZEIGEN
        .CBPFSUCHE.Value = Tabelle34.CBPFAUSWAHL.Value
        .BTPFZEIGEN = True
        .BTPFZEIGEN = vbclick
        .Show
    End With
    Unload Me
End Sub
Jetzt habe ich aber den Code von einem anderen Button runterkopiert. An anderer Stelle _ funktioniert dieser Code einwandfrei.

        .BTPFZEIGEN = True
        .BTPFZEIGEN = vbclick
        .Show
Kann mir jemand sagen wieso in diesem Fall nicht? ich bin verwirrt :/
Vielen Dank schonmal für alle Antworten!
Euer Wusel

Bild

Betrifft: AW: vbClick Variable nicht erkannt?!
von: Daniel
Geschrieben am: 04.06.2015 18:51:35
Hi
vermutlich liegt es daran, dass im anderen Code das vbclick definiert ist.
als was auch immer.
kommt halt darauf an, woher du den code kopiert hast. Dort gibt es wahrscheilich ein Element vbclick oder eine Variable die so heißt und dort wo du den Code hinkopiert hast eben nicht.
um per Makro einen Click auf einen Button auszuführen, ruf man dessen Click-Event auf:
Call .BTPFZEIGEN_Click
wenn sich der Button auf einer anderen Userform befindet als der, von der aus du ihn aufrufen willst, muss du beim Click-Eventmakro das "Private Sub" in ein "Public Sub" ändern.
Gruß Daniel

Bild

Betrifft: Problem gelöst, Frage bleibt :)
von: Wusel
Geschrieben am: 04.06.2015 19:01:09
Hallo und Danke Daniel :)
Deine Lösung mit der Public Geschichte funktioniert und löst mein Problem, aber erklärt nicht das Verhalten von Excel. vbClick ist nichts eigenes - nicht definiert. Es ist ein Systemseitiger "Befehl" (aus Mangeln an einem besseren Wort :) ). Eine Erklärung würde mich noch interessieren, aber dank Dir kann ich weiter machen! Vielen Dank nochmals!
Beste Grüße
Wusel

Bild

Betrifft: Unbekannte Konstante
von: RPP63
Geschrieben am: 04.06.2015 19:10:33
Hi!
Was Du meinst ist eine Konstante in VBA wie z.B. vbCritical.
Es sollte Dir zu denken geben, dass die Intellisense Dein vbclick nicht automatisch zu vbClick umwandelt ...
Langer Rede kurzer Sinn: Es gibt keine Konstante dieses Namens!
(Ich hoffe mal, Deine Deadline dauert noch eine Weile)
Gruß Ralf

Bild

Betrifft: AW: Problem gelöst, Frage bleibt :)
von: Mullit
Geschrieben am: 04.06.2015 19:10:58
Hallo,

vbClick ist nichts eigenes - nicht definiert. Es ist ein Systemseitiger "Befehl" 

eben leider nicht, gibt's in Excel-VBA nicht....
Gruß, Mullit

Bild

Betrifft: Jaa, aaaber... :)
von: Wusel
Geschrieben am: 04.06.2015 19:21:24
Hallo nochmal,
also wie man merkt, bin ich ja ein Ahnungsloser, aber dann erklärt mir bitte, warum an anderer Stelle dieser Code funktioniert. Und er tut genau das, was ich von meiner zweiten "Version" davon auch erwartet hätte.

Private Sub BTOBJZEIGEN_Click()
    'Modi
    DieseArbeitsmappe.modi = 2
    Dim i As Integer
    
    With Objektanzeige
        For i = 0 To Me.LBPFOBJEKTE.ListCount - 1
          If Me.LBPFOBJEKTE.Selected(i) Then
            .BOXSTADT.Value = Me.LBPFOBJEKTE.List(i)
          End If
        Next i
        .BTSHOW = True
        .BTSHOW = vbClick
        .Show
    End With
    
End Sub
Den Schnippsel mit dem ListCount und die Sache mit vbClick habe ich von zwei unterschiedlichen Quellen aus dem Netz zusammengezogen. vbClick habe ich sicher nie irgendwo definiert. Trotzdem funktioniert es. Diesen Code hatte ich kopiert und zu dem oben geposteten umgebaut. Dieser aber funktioniert nicht. Wenn jemand was weiß...ich lerne gerne ;)
Semierleuchtete Grüße
Wusel :)

Bild

Betrifft: AW: Jaa, aaaber... :)
von: Michael
Geschrieben am: 04.06.2015 19:34:35
Hi Wusel,
wirf das Ding raus, wenn es schon Dein = True aus der Zeile vorher unwirksam macht oder in einen "nicht definierten Zustand" versetzt...
Du kannst ja mal im Editor nach vbclick suchen, und zwar im ganzen Projekt, dann siehst Du, wo es sonst noch steht...
Schöne Grüße,
Michael

Bild

Betrifft: AW: Jaa, aaaber... :)
von: Wusel
Geschrieben am: 04.06.2015 19:44:53
Wieder was gelernt...wusst nicht, dass das geht, obwohl ich jedesmal bei STR+F drauf gucke. Eine Suche im gesamten Projekt nach vbclick ergibt im gesamten Projekt genau einen Treffer (nein nicht Groß-/Kleinschreibung blablub). Nämlich den, an der Stelle an der der Code funktioniert :)

Bild

Betrifft: AW: Jaa, aaaber... :)
von: RPP63
Geschrieben am: 04.06.2015 19:47:43
Hi!
So kommen wir nicht weiter.
Bei Deinem kurzen Code ist soviel unklar (wo hast Du den eigentlich her??), dass Du Dein Formular mal exportieren solltest.
(Rechtsklick im Projektexplorer im VBA-Editor auf das Formular, Datei exportieren)
Du müsstest dann zwei Dateien erhalten (.frm und .frx), die Du hier mal hochladen solltest.
Gruß Ralf

Bild

Betrifft: AW: Jaa, aaaber... :)
von: Daniel
Geschrieben am: 04.06.2015 19:41:36
Hi
man müsste dein Gesamtes Projekt kennen, um dir antworten zu können.
was ist .BTSHOW ?
Arbeitest du mit Option Explicit?
gibt es dieser Userform ein Objekt mit Namen vbClick?
ist es eine Projekt- oder Modulweit gültige Variable , die an anderen Stelle definiert wird?
verwendest du AddIns oder andere Erweiterungen von Excel/VBA die dir vielleicht ein solches Element zusätzlich zur verfügung stellen?
wenn du nicht mit Option Explicit arbeitest wäre auch folgendes möglich:
.BTSHOW ist kein normaler Commandbutton, sondern ein ToggleButton mit einer .Value-Eigenschaft.
Wenn du die .Value-Eigenschaft eines Elements änderst, wird (sofern vorhanden) auch das CLICK-Event des Steuerelements ausgelöst.
wenn du nicht mit Option Explict arbeites, wird das vbClick als neue leere Variable angelegt, und diese wird dann hier als False interpretiert, was zur Wertänderung und zum auslösen des Click-Events des Togglebuttons führt.
wenn du Option Explicit einsetzt, meldet dir das System eine nicht definierte Variable wenn du versuchst das Makro zu starten.
Gruß Daniel
Option Explicit: http://www.online-excel.de/excel/singsel_vba.php?f=4

Bild

Betrifft: AW: Jaa, aaaber... :)
von: Wusel
Geschrieben am: 04.06.2015 19:50:54
Option explicit - ja, überall
AddIns - nein, nie etwas installiert
Erweiterungen - nein, nie etwas installiert
Objekt mit dem Namen - nein, siehe meine Antwort an Michael. Im ganzen Projekt findet sich nur die eine Stelle im Code + siehe meinen Verweis auf meine Excel-Kenntnisse. Ich wüsste gar nicht wie man etwas baut, dass ein Click-Event auslöst :)
Toggle-Button nein

Bild

Betrifft: AW: Jaa, aaaber... :)
von: Daniel
Geschrieben am: 04.06.2015 20:01:09
Zeig doch mal deine Datei.
da muss man wahrscheinlich mal genauer suchen, wo sich das Objekt vbClick versteckt so dass es in einem Fall erkannt wird und im anderen nicht.
Gruß Daniel

Bild

Betrifft: AW: Jaa, aaaber... :) Nachtrag
von: Daniel
Geschrieben am: 04.06.2015 19:50:59
ok grad getestet.
funktioniert auch mit einem normalen Commandbutton so, obwohl diese keinen .Value-Wert hat.
trotzdem scheint die Wertzuweisung an seine standardeigenschaft irgenwie zu funktionieren und jede Wertänderung löst eben das Click-Element aus.
vbClick ist, wenn du nicht mit Option Explicit arbeitest und es sonst auch nicht definiert hast, eine neue, leere Variant-Variable und diese wird, wenn sie für eine boolsche Variable eingesetzt wird, als "False" gewertet.
da du den Buttonwert vorher auf True gesetzt hast, findet eben diese Eventauslöstende Wertänderung statt.
Gruß Daniel

Bild

Betrifft: AW: Jaa, aaaber... :)
von: Mullit
Geschrieben am: 04.06.2015 20:09:36
Hallo,
hab's interessehalber auch mal laufen lassen:
Der erste Code (beide in einer Form) wirft den Fehler, der zweite zeigt die Msgbox:

Option Explicit
Private Sub CommandButton1_Click()
Me.CommandButton2 = True
Me.CommandButton2 = vbClick
End Sub
Private Sub CommandButton2_Click()
MsgBox "ww"
End Sub
Private Sub CommandButton1_Click()
Me.CommandButton2 = True
Me.CommandButton2 = vbClick
End Sub
Private Sub CommandButton2_Click()
MsgBox "ww"
End Sub

böse Falle/Erklärung: Der CommandButton hat eine .Value-Default-Eigenschaft: sichtbar zu machen über verborgene Elemente anzeigen..
Steht man also auf vbClick sollte das gehen:
Option Explicit
Private Sub CommandButton1_Click()
Const vbClick As Boolean = False
Me.CommandButton2 = True
Me.CommandButton2 = vbClick
End Sub
Private Sub CommandButton2_Click()
MsgBox "ww"
End Sub

Gruß, Mullit

Bild

Betrifft: Deckel drauf?
von: Wusel
Geschrieben am: 04.06.2015 20:22:34
Mit meiner ganz unten peinlicherweise erwähnenswerten Unart Option Explicit irgendwann mal aufgegeben zu haben und mich dann nicht mehr daran erinnern zu können glaube ich Mullit gewinnt die goldene Sandale!
Ich kann mich damit zufrieden geben und bedanke mich nochmals ganz herzlich bei allen, die mir Ihre Zeit geschenkt haben! Bitte entschuldigt mein Unvermögen

Bild

Betrifft: AW: Deckel drauf?
von: Mullit
Geschrieben am: 04.06.2015 20:52:22
coooool, die verleih ich mir jetzt einfach mal selber....

Gruß, Mullit

Bild

Betrifft: AW: Deckel drauf?
von: Daniel
Geschrieben am: 04.06.2015 21:06:59
Mit dem Tip auf Option Explict war ich aber ne halbe Stunde früher daran ;-)

Bild

Betrifft: AW: Deckel drauf?
von: Mullit
Geschrieben am: 04.06.2015 21:22:49
ich weiß, aber ich geb' meinen Treter trotzdem nich wieder her..
Gruß, Mullit

Bild

Betrifft: AW: Deckel drauf?
von: Daniel
Geschrieben am: 04.06.2015 21:28:00
HI
ok, die Treter kannst du behalten, ich nehm dann die Sandalen.
Ist eh Sommer.
Gruß Daniel

Bild

Betrifft: AW: vbClick Variable nicht erkannt?!
von: Michael
Geschrieben am: 04.06.2015 19:23:21
Hi Wusel,
durch die Befehle bzw. Reihenfolge
.BTPFZEIGEN = True
.BTPFZEIGEN = vbclick
weist Du der Eigenschaft .BTPFZEIGEN zuerst den Wert True zu, um ihn dann durch vbclick zu ersetzen.
vbclick ist kein VB-Ausdruck: gib mal irgendwo im VB-Editor vbblue ein und wechsle die Zeile: es wird vbBlue draus, weil es eine Excel-Konstante ist (setz den Cursor auf vbblue, drücke F1 und Du siehst die Hilfe zu den Farbkonstanten). Schreibe vbclick und drücke F1 und es kommt "Schlüsselwort nicht gefunden".
Also wird vbclick irgendwo definiert oder benutzt, und wahrscheilich hast Du option explicit nicht gesetzt, sonst hättest Du längst eine entsprechende Fehlermeldung gesehen.
Schöne Grüße,
Michael

Bild

Betrifft: AW: vbClick Variable nicht erkannt?!
von: Wusel
Geschrieben am: 04.06.2015 19:36:44
Hiho,
ich verstehe was Ihr mir sagen wollt - wirklich. Aber es erklärt das Verhalten nicht. Zudem bin ich mit meinen beschränkten VBA-Kenntnissen vermutlich ohne ausgiebiger Recherche nicht in der Lage überhaupt eine Konstante mit derartigem Verhalten zu definieren :) Ich wüsste, wenn ich sowas mal gebaut hätte - wirklich ;)
Hinzu kommt:
-die beiden Buttons befinden sich auf demselben UF
-Ihr seht beide Funktionen komplett
Wäre Eure Annahme, dass ich das definiert hätte richtig, müsste es ja für beide Buttons Gültigkeit haben, also müssten beide Versionen funktionieren.

Bild

Betrifft: AW: vbClick Variable nicht erkannt?!
von: Wusel
Geschrieben am: 04.06.2015 20:10:59
WOW! Leute ich bin wirklich begeistert von Eurer Bereitschaft zu helfen!
Ich werde Ralfs Vorschlag folgen und die Dateien hochladen. Muss an dieser Stelle aber einen Rückzieher machen. Ich war geistig umnachtet es waren zwei verschiedene UFs. Meine Aussage mit "gleiches UF, also auch für beide Versionen meines Codes gleiche Gültigkeit" ist damit obsolet.
Ich vermute Daniels Antwort "mit Nachtrag" kommt dem tatsächlichen Geschehen sehr nahe. Wobei dann aber eigentlich auch wieder beide Versionen funktionieren müssten. Fehlersuche ist zeitfressend und was wir hier machen auch. Wie oben bereits geschrieben; mit Daniels Lösung hat sich das Problem erledigt, hier geht es nur noch ums Verständnis und sollte ich dumm sterben müssen weiß ich das ja nicht oO :) Bitte, wenn Ihr Frau und Kinder habt verschwendet Eure wertvolle Zeit nicht hiermit.
In diesem Sinne - hier die Dateien
https://www.herber.de/bbs/user/98038.zip
Im UF UFPORTFOLIOANZEIGEN der Button BTOBJZEIGEN "Objekt anzeigen" hat den immer noch funktionierenden Code mit vbClick
Im UF UFMENUEPF der Button BTPFMASKE "Portfoliomaske" Hat jetzt Daniels Lösung. Hatte vorher den nicht funktionierenden Code
Aus diesem Thread kommt der Code-Schnippsel mit dem cbClick http://www.mrexcel.com/forum/excel-questions/22555-can-visual-basic-applications-%22click%22-button.html Ich weiß, nicht sehr seriös, aber im ersten Anlauf hat das ohne weiteres funktioniert :)
Bin wirklich gespannt, was Ihr sagt und vielen vielen Dank für Eure Zeit!!!

Bild

Betrifft: AW: vbClick Variable nicht erkannt?!
von: Wusel
Geschrieben am: 04.06.2015 20:12:58
Oh Gott...peinlich...Option Explicit war mal voll im Trend...aus mir unerklärlichen Gründen flog es über Bord :(

Bild

Betrifft: AW: vbClick Variable nicht erkannt?!
von: Daniel
Geschrieben am: 04.06.2015 20:21:36
dann hats sich ja erledigt, oder?
Gruß Daniel

Bild

Betrifft: Erledigt
von: Wusel
Geschrieben am: 04.06.2015 20:23:27
Ja, vielen Dank nochmal!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "vbClick Variable nicht erkannt?!"