If-Abfrage Microsoft Visual Basic

Guten Tag,
Hallo ich bin leider blutiger Anfänger in Visual Basic und muss leider nun eine kleine aber für mich schwierige IF-Abfrage starten. Ich möchte, dass wenn in einem Excel-Arbeitsblatte eine bestimmte Zahl, hier kleiner als zwei in dem zweiten Tabellenblatt ein entsprechender Text in einem Textfeld steht.
Mit dem von mir gebastelteten Code funktioniert das aber leider noch nicht. Kann mir hier wer weiterhelfen? Das wäre super! Vielen Dank schon mal!

Sub Bezeichnung29_BeiKlick()
If Worksheets(„Daten“).Cells(8, 2)

Hallo,

Hallo ich bin leider blutiger Anfänger

das macht gar nichts. :smile:

in Visual Basic

Was Du da schreibst ist aber kein VB, das ist VBA.

und muss leider nun eine kleine aber für mich schwierige
IF-Abfrage starten. Ich möchte, dass wenn in einem
Excel-Arbeitsblatte eine bestimmte Zahl, hier kleiner als zwei
in dem zweiten Tabellenblatt ein entsprechender Text in einem
Textfeld steht.
Mit dem von mir gebastelteten Code funktioniert das aber
leider noch nicht. Kann mir hier wer weiterhelfen? Das wäre
super! Vielen Dank schon mal!

ich bring erst mal Struktur in Deinen Code …

Sub Bezeichnung29\_BeiKlick()
 If Worksheets("Daten").Cells(8, 2) 

Bleibt die Frage: Was soll 'Bezeichnung29 Value' heißen?
ist Bezeichnung29 ein Steuerelement im Tabellenblatt "AuswertungFK"?
Dann fehlt vor dem 'Else' die Angabe des Tabellenblattes und im Zweig, in dem das Tabellenblatt angegeben ist, auch noch ein Punkt dahinter.

Wenn Bezeichnung29 ein Objekt ist, das über die Eigenschaft 'Value' verfügt, dann fehlt da ein Punkt.

Hast Du 'Sub Bezeichnung29\_BeiKlick()' selbst geschrieben? In VB würde das heißen:

'Sub Bezeichnung29\_Klick()'

'Bei' ist ein deutsches Wort, die Schlüsselwörter der Programmiersprache sind aber alle englisch.

Den Kopf der Prozedur lässt man für das Klickereignis besser VB selbst schreiben, indem man das Ereignis aus der Liste auswählt, die die Intellisense anzeigt.

Ich habe zwar kein VBA, aber so seiht es für mich schon mal hübscher aus:



    
    Sub Bezeichnung29\_Klick()
     If Worksheets("Daten").Cells(8, 2) 
    
    Läuft das auch?
    
    Gruß Rainer

ist Bezeichnung29 ein Steuerelement im Tabellenblatt
„AuswertungFK“?

Hallo Rainer,

alles richtig was du da schreibst und die wichtigste Frage überhaupt hast du ja schon gestellt:

Was dieses Bezeichnung29 überhaupt ist.

Darüber ob das ein Clickereigniscode sein soll kann man nur spekulieren.
Bezeichnung29_BeiClick kann auch normaler Prozedurname sein.

Und Clickereignis ist so ne Sache, ein Commandbutton hat ein Clickereignis, aber kein Value.
bei einer Textbox ist es genau umgekehrt.

Bleibt nur abzuwarten auf Informationen.

Gruß
Reinhard

Hallo Reinhard,

alles richtig was du da schreibst

und das bei VBA … danke! :smile:

und die wichtigste Frage
überhaupt hast du ja schon gestellt:

Was dieses Bezeichnung29 überhaupt ist.

Darüber ob das ein Clickereigniscode sein soll kann man nur
spekulieren.
Bezeichnung29_BeiClick kann auch normaler Prozedurname sein.

Und Clickereignis ist so ne Sache, ein Commandbutton hat ein
Clickereignis, aber kein Value.
bei einer Textbox ist es genau umgekehrt.

Bleibt nur abzuwarten auf Informationen.

ja ein paar Informationen fehlen noch.
Wenn ‚Bezeichnung29‘ ein Label ist, dann wäre das eine Erklärung für die falsche Syntax im Klickereignis. Wenn VB keins anbietet, einfach selbst schreiben.

@gelisuperstar… Wenn ich da richtig geraten habe: Nein, das geht nicht! Wenn das Steuerelement das Klick-Ereignis nicht auswertet, nützt es Dir nichts, die Prozedur dafür zu schreiben, der Code wird nie ausgeführt.

Gruß Rainer

Hallo Rainer.

Was dieses Bezeichnung29 überhaupt ist.

Bezeichnung29 ist ein Label aus der Symbolleiste „Formular“. Ich meine mich zu erinnern, dass in Excel 97 diese Steuerelemente ein Click-Ereignis hatten, welches tatsächlich „[SteuerelementName]_BeiKlick“ hieß, das auch so im VBA-Codefenster als Prozedur-Name auftauchte.

VG
Carsten

Hallo Carsten,

Bezeichnung29 ist ein Label aus der Symbolleiste „Formular“.

ahhh, danke! :smile:

Ich meine mich zu erinnern, dass in Excel 97 diese
Steuerelemente ein Click-Ereignis hatten, welches tatsächlich
„[SteuerelementName]_BeiKlick“ hieß, das auch so im
VBA-Codefenster als Prozedur-Name auftauchte.

aha, ein Label mit Klickereignis und ein deutsch bezeichnetes Ereignis … ich soll wirklich die Finger von VBA-Code lassen …

Dann sollte das also so aussehen:

Sub Bezeichnung29\_BeiKlick()
 If Worksheets("Daten").Cells(8, 2) 

Richtig?

Gruß Rainer

Was dieses Bezeichnung29 überhaupt ist.

Bezeichnung29 ist ein Label aus der Symbolleiste „Formular“.
Ich meine mich zu erinnern, dass in Excel 97 diese
Steuerelemente ein Click-Ereignis hatten, welches tatsächlich
„[SteuerelementName]_BeiKlick“ hieß, das auch so im
VBA-Codefenster als Prozedur-Name auftauchte.

Hallo Carsten,

stimmt, du hast Recht bei 97 und 2000 gibt es bei Formular dann _BeiKlick.

Okay, Formular-Elemente benutze ich selten, an sich nur die Schaltfläche, quasi einen CommandButton, dem kann ich ein makro zuweisen um es dann testen zu können. Geht irgendwie fixer als wenn ich da den CommanButton aus Steuerelementtoolbox nehme, also den den Rainer auch hat und kennt.

Nur, bei einem Label=Bezeichnungsfeld, grad mit 97 und 2000 getestet, gibt es kein _BeiKlick-Ereignis oder so.
Mir ist auch an sich gar kein Ereignis bekannt mit Elementen aus Formular.
Logisch, wenn ich auf die Schaltfläche klicke passiert was, aber auch nur wenn ich der Schaltfläche ein Makro zugewiesen habe.
Da gibts nix mit Exit, Keypress oder so.

Das gibt es bei Einfügen einer Schaltfläche aus „Formular“, dann ist das aber m.E. keinerlei Ereigniscode, sondern nur eine namensvorschlag von Excel wie man denn nun das Makro für diese Schaltfläche benennen könnte.

Die Symbolleiste Formular sind nur die Elemente früher von Excel4 Excel5 usw., also vorläufer von Excel97.
Erst ab da wurde VBa eingeführt. Vorher hieß das zwar schon irgednwie Excel4-Makros, war aber komplett in Deutsch, also die Befehle. Und die Codes, Vb-Editor gabs nicht, standen in einem Spezialblatt untereinander in Zellen.

Gehe mal unten im Register auf „Einfügen“, und wenn es bei deiner Version das noch gibt wie in Excel2000, wähle mal

Microsoft Excel 4.0 Makrovorlage
oder
Microsoft Excel 5.0 Dialog

in beiden Fällen wird ein Zusatzblatt angelegt.

Im ersteren Fall ist es das Blatt wo du dann deinen Code reinschreibst in Deutsch. Habe leider nie gesehen wie das aussieht bzw. wie man das dann startet usw.

Im zweiten fall sieht du sowas wie eine Userform. Die Elemente die du da, wie auch immer einbauen kannst, das sind die Elmente die du heutzutage in der Symbolleiste „Formular“ findest.

Was mich aus purem Interesse stark interessiert, falls du da nachforschst, ich hätte gern einfach mal eine Mappe, in der durch Excel4maro was einfaches passiert, wie msgbox „Huhu“
und Anweisungen wie man das makro startet.
Vielleicht heißt dann der entsprechende befehl
Zeige „Huhu“
Schreibe „Huhu“
oder sowas.

Ich habe da schon recherchiert, kam zu keinem Ergebnis.
Auch bei dem Excel5.0 Ding. Da schaffte ch es irgendwo da paar Elemente einzubauen, das wars dann auch.
Mir schleierhaft geblieben wie ich da diese „Userform“ einbinden kann, anzeigen kann usw.

Sorry, wieder mehr geschrieben als Anfangs gedacht :smile:

Gruß
Reinhard

Hallo Rainer,

aha, ein Label mit Klickereignis und ein deutsch bezeichnetes
Ereignis … ich soll wirklich die Finger von VBA-Code lassen

Das was dich irritiert ist, in Excel gibt es zwei Symbolleisten die sehr ähnlich aussehen und auch manche Symbole darauf sind genauso bezeichnet wenn mna die Maus nur drüber stellt.

Die Symbole aus der Symbolleiste „Steuerelementtollbox“ sind dir alle wohlbekannt, die kennst du alle.
Die haben beim darüberfahren deutsche Namen, wie Kombinationsfeld.
Aber hast du sie eingefügt isses wieder die wohlbekannte ComboBox.

Damit kämst du also locker klar. Einziges Problem wäre, wie ich durch Besuch hier festgestellt habe, ihre Eigenschaften differieren ggfs.leicht mit denen in VB, sprich, sind nicht vorhanden. Aber das sind nur wenige Eigenschaften, der Rest ist identisch.

Tja nun, jetzt zur Symbolleiste „Formular“. Dort die Symbole sehen gleich aus mit den anderen, sind aber keine ActiveX-Steuerelemente.
Und sie stammen noch aus Excel4 Excel5-Zeiten, da war Excel in D halt deutsch.

Sub Bezeichnung29_BeiKlick()
If Worksheets(„Daten“).Cells(8, 2)

Richtig?

Von der Logik her perfekt, aber klappt nicht.
Aber das liegt nicht an dir sondern daran daß Elemente aus „Formular“ keine dir bekannten ActiveXsteuereleemente sind.

Und die in Vba zu „behandeln“ ist heftig, besser kann heftig sein. Mittelgute Vbaler tun sich da schwer, sehr schwer, bis dahin es nicht zu schaffen ohne andere zu fragen, so profane Dinge zu tun wie so einem Element einen anderen Namen zu geben, einen anderen Wert oder so.

Name/Wert sind jetzt nur gewählt um zu demonstrieren daß es um gar nix kompliziertes geht.
Das Riesenproblem ist die Referenzierung.

Die Lösung ist dann nicht was kurzes wie

activesheet.Shapes(„Bezeichnung29“).name =„xyZ“
oder
activesheet.oleobjcts(„Bezeichnung29“).object.name=„xyz“

Nö, die Referenzierung wird länger, jetzt nicht durhc lange Wörter,
Ich weiß gar nicht wie ich das formulieren soll, ich sags mal so,
In den beiden Beispielen waren 2-3 Punkte.

Die Lösung hat dann 4-5 Punkte.

Und, ich glaub die Intellisense hilft bei Formular-Elementen nicht, weiß es grad nicht auswendig ob das auch so ist.

Gruß
Reinhard

Gruß Rainer

hallo Reinhard,

Das was dich irritiert ist, in Excel gibt es zwei
Symbolleisten die sehr ähnlich aussehen und auch manche
Symbole darauf sind genauso bezeichnet wenn mna die Maus nur
drüber stellt.

daß man in excel Steuerelemente auf die Userform, aber auch auf’s Formular legen kann habe ich schon mal gesehen.

Die Symbole aus der Symbolleiste „Steuerelementtollbox“ sind
dir alle wohlbekannt, die kennst du alle.
Die haben beim darüberfahren deutsche Namen, wie
Kombinationsfeld.
Aber hast du sie eingefügt isses wieder die wohlbekannte
ComboBox.

Damit kämst du also locker klar. Einziges Problem wäre, wie
ich durch Besuch hier festgestellt habe, ihre Eigenschaften
differieren ggfs.leicht mit denen in VB, sprich, sind nicht
vorhanden. Aber das sind nur wenige Eigenschaften, der Rest
ist identisch.

Und umgekehrt. List hat in VBA Tabs, in VB nicht. Das weiß ich inzwischen. :smile:

Tja nun, jetzt zur Symbolleiste „Formular“. Dort die Symbole
sehen gleich aus mit den anderen, sind aber keine
ActiveX-Steuerelemente.

Das war mir nicht klar. Ich dachte, die wären mit den Steuerelementen aus der Toolbox identisch.

Und sie stammen noch aus Excel4 Excel5-Zeiten, da war Excel in
D halt deutsch.

Sub Bezeichnung29_BeiKlick()
If Worksheets(„Daten“).Cells(8, 2)

Richtig?

Von der Logik her perfekt, aber klappt nicht.
Aber das liegt nicht an dir sondern daran daß Elemente aus
„Formular“ keine dir bekannten ActiveXsteuereleemente sind.

Und die in Vba zu „behandeln“ ist heftig, besser kann heftig
sein. Mittelgute Vbaler tun sich da schwer, sehr schwer, bis
dahin es nicht zu schaffen ohne andere zu fragen, so profane
Dinge zu tun wie so einem Element einen anderen Namen zu
geben, einen anderen Wert oder so.

Name/Wert sind jetzt nur gewählt um zu demonstrieren daß es um
gar nix kompliziertes geht.
Das Riesenproblem ist die Referenzierung.

Die Lösung ist dann nicht was kurzes wie

activesheet.Shapes(„Bezeichnung29“).name =„xyZ“
oder
activesheet.oleobjcts(„Bezeichnung29“).object.name=„xyz“

Nö, die Referenzierung wird länger, jetzt nicht durhc lange
Wörter,
Ich weiß gar nicht wie ich das formulieren soll, ich sags mal
so,
In den beiden Beispielen waren 2-3 Punkte.

Die Lösung hat dann 4-5 Punkte.

Und, ich glaub die Intellisense hilft bei Formular-Elementen
nicht, weiß es grad nicht auswendig ob das auch so ist.

OK, nun ist mir schon Einiges klarer.
Noch ein Grund mehr, die Finger still zu halten, wenn es um VBA geht.

Die Wahrscheilichkeit, daß ich ohne zu testen unbrauchbaren Code schreibe ist zu groß.

Gruß Rainer

hallo Rainer,

Und umgekehrt. List hat in VBA Tabs, in VB nicht. Das weiß ich
inzwischen. :smile:

ja, es sind diese Kleinigkeiten die das leben so spannend machen :smile:
Stell dir vor du „arbeitest“ in VB und VBA gleichoft, du bist ohne deinen Laptop im Urlaub, nettes Lokal, unterhalten sich Leute darüber ob es in Vb bei einer ListBox eine bestimmte Eigenschaft gibt oder nicht.

Dann machts bei dir im Kopf einen Klick und du weißt ganz genau, ja diese Eigenschaft gibt es, aber du weißt auch, es gibt sie nicht in VB UND VbA.

Dann hat man kein Wissen mehr sondern nur noch den 50/50 Joker *gg*
Aber kein problem, wenn du da bei Jauch sitzt, nimm den Telefonjoker, 30 Sek langen mir um das rauszufinden.

Allerdings nur wenn mein PC läuft, ansonsten geht die Zeit schon drauf fürs Booten usw.

Das war mir nicht klar. Ich dachte, die wären mit den
Steuerelementen aus der Toolbox identisch.

Nein, die heißen gleich, sehen auch so aus, sind aber was völiig anderes im Handling.

Gruß
Reinhard

Hallo Reinhard.

Was mich aus purem Interesse stark interessiert, falls du da
nachforschst, ich hätte gern einfach mal eine Mappe, in der
durch Excel4maro was einfaches passiert, wie msgbox „Huhu“
und Anweisungen wie man das makro startet.

Es wäre durchaus denkbar, dass ich auf der Arbeit noch so etwas finde, denn dort könnte ich 'mal versuchen, einen alten Computer zu reaktivieren, auf dem noch Office95 installiert war. Damit habe ich anfangs sogar noch gearbeitet und ich glaube, dort war auch diese
„Macro-Registerkarte“. Versprechen kann ich da aber nichts, gut möglich, dass das gute Stück schon das Zeitliche gesegnet hat.

Sorry, wieder mehr geschrieben als Anfangs gedacht :smile:

Macht ja nix (-:

VG
Carsten