Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vbClick Variable nicht erkannt?!

vbClick Variable nicht erkannt?!
04.06.2015 18:42:47
Wusel
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

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vbClick Variable nicht erkannt?!
04.06.2015 18:51:35
Daniel
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

Anzeige
Problem gelöst, Frage bleibt :)
04.06.2015 19:01:09
Wusel
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

Unbekannte Konstante
04.06.2015 19:10:33
RPP63
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

Anzeige
AW: Problem gelöst, Frage bleibt :)
04.06.2015 19:10:58
Mullit
Hallo,
vbClick ist nichts eigenes - nicht definiert. Es ist ein Systemseitiger "Befehl" 

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

Jaa, aaaber... :)
04.06.2015 19:21:24
Wusel
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 :)

Anzeige
AW: Jaa, aaaber... :)
04.06.2015 19:34:35
Michael
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

AW: Jaa, aaaber... :)
04.06.2015 19:44:53
Wusel
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 :)

Anzeige
AW: Jaa, aaaber... :)
04.06.2015 19:47:43
RPP63
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

AW: Jaa, aaaber... :)
04.06.2015 19:41:36
Daniel
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

Anzeige
AW: Jaa, aaaber... :)
04.06.2015 19:50:54
Wusel
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

AW: Jaa, aaaber... :)
04.06.2015 20:01:09
Daniel
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

Anzeige
AW: Jaa, aaaber... :) Nachtrag
04.06.2015 19:50:59
Daniel
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

Anzeige
AW: Jaa, aaaber... :)
04.06.2015 20:09:36
Mullit
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

Anzeige
Deckel drauf?
04.06.2015 20:22:34
Wusel
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

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

Gruß, Mullit

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

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

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

AW: vbClick Variable nicht erkannt?!
04.06.2015 19:23:21
Michael
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

AW: vbClick Variable nicht erkannt?!
04.06.2015 19:36:44
Wusel
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.

AW: vbClick Variable nicht erkannt?!
04.06.2015 20:10:59
Wusel
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!!!

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

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

Erledigt
04.06.2015 20:23:27
Wusel
Ja, vielen Dank nochmal!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige