VBA: Widerspruch bei zugewiesener Variable

Hilfe!
Ich bin ein wenig verzweifelt. Ich habe der Zelle U22 die Formel „=BR69“ zugewiesen. Der angezeigte Inhalt beider Zellen ist jetzt „Hallo“. (Ich muss dazu sagen, dass die Zelle U22 sich über viele Spalten bis zur Zelle AL22 erstreckt…) Wenn ich den Bereich, in dem die Zelle U22 auch ist, nach „Hallo“ durchsuchen lasse, wird nichts gefunden. Zum Testen habe ich folgendes eingegeben:

Sub Probieren4()
Dim Suchen As String * 50
Suchen = Range(„U22“).Text
If Range(„U22“).Text = Suchen Then
MsgBox „positiv“
Else
MsgBox „negativ“
End If
End Sub

Als Ergebnis kommt nur jedesmal negativ heraus… Kann mir da vielleicht jemand helfen?

Vielen Dank im Voraus!
Patrick

PS: Tut mir leid, wenn ich keinen passenden Betreff gewählt habe, mir fiel einfach nichts besseres ein…

Moin,

Ich habe der Zelle U22 die
Formel „=BR69“ zugewiesen. Der angezeigte Inhalt beider Zellen
ist jetzt „Hallo“.

das ist falsch, in U22 steht weiterhin „=BR69“, das „Hallo“ wird Dir nur vorgelogen. Brauchst also nicht weiter zu suchen.

Gruß Ralf

Hallo,

ja, aber wenn ich jetzt doch der Variable „Suchen“ einmal den Value und einmal den Text (hab nämlich beides ausprobiert) zuweise, müsste die doch entweder „Hallo“ enthalten oder „=BR69“. Ich habe mir den Wert „Suchen“ über eine MsgBox ausgeben lassen und die zeigt mir eindeutig „Hallo“. Warum wird die dann nicht gefunden bzw. warum funktioniert meine Prozedur nicht?

Tut mir leid, wenn ich n bisschen auf dem Schlauch stehe, aber ich halte meine Einwände für berechtigt.

greetinx
Patrick

Umgang mit String Variablen
Hi Patrick,

Ich habe mir den Wert „Suchen“ über eine MsgBox
ausgeben lassen und die zeigt mir eindeutig „Hallo“.

mag sein daß dies so aussieht, aber es wird nicht „Hallo“ angezeigt sondern "Hallo "

Ich habe mir angewöhnt, gelegentlich wenn ich genauer wissen will was da steht, dies so zu tun:

Msgbox „-“ & Suchen & „-“

Warum
wird die dann nicht gefunden bzw. warum funktioniert meine
Prozedur nicht?

Müßte jetzt klar sein, es liegt am String*50.

Wenn das mit fester Stringlänge sein muß, Abhilfen gibt es viele,

If Range(„BR22“) = Trim(Suchen)
If Range(„BR22“) like Suchen & „*“
u.v.m.

Gruß
Reinhard

Ich habe der Zelle U22 die
Formel „=BR69“ zugewiesen. Der angezeigte Inhalt beider Zellen
ist jetzt „Hallo“.

das ist falsch, in U22 steht weiterhin „=BR69“, das „Hallo“
wird Dir nur vorgelogen. Brauchst also nicht weiter zu suchen.

Hallo Ralf,

verwirre hier nicht rum bitte :smile:

In der Zelle U22 steht die Excel-Formel
=BR69
das ist der zellinhalt.

Beim If-Vergleich in Vba wird das Ergebnis der Formel herangezogen.
d.h. wenn in der Zelle BR69 die Zahl 100 steht so ist das Ergebnis der Formel in U22 100.

Was du meinst *glaub* ist die Anzeige in der Zelle U22, je nach Formatierung der Zelle kann da alles mögliche angezeigt werden, richtig.

Gruß
Reinhard

OT Ein Teufelskreis
Hallo,

ich wollte in der Antwort klarmachen und zeigen daß es daran liegt daß da die variable „Suchen“ 50 Bytes lang ist …

Problem ist, zeige ich das hier und benutze den pre-Tag nicht, sind die Leerzeichen weg.

Benutze ich den pre-tag so sind die Leerzeichen da aber viel zu viel Leerzeilen drängen sich auf.

Hier mal bitte nur die beiden Links anklicken, dann wirds klarer was ich meine.

/t/ist-das-team-unfaehig-unwillig-zu-reich/5004241

Gruß
Reinhard

Danke vielmals!

Ich verstehe, was du meinst. Die 50 Zeichen habe ich gelöscht, waren eigentlich auch nicht wirklich notwendig. Jetzt klappt es auch.

Danke an alle!
Patrick

Moin, Reinhard,

verwirre hier nicht rum bitte :smile:

wieso ich? Mit den Anweisungen

Suchen = Range("U22").Text
If Range("U22").Text = Suchen Then

wird das Feld mit sich selbst verglichen. Wozu soll das gut sein?

Ansonsten hast Du recht, die Suche nach Formeln muss ja ausdrücklich angefordert werden - ohne weitere Angabe werden Inhalte verglichen. Tschulljung!

Gruß Ralf

String mit fester Länge

wieso ich? Mit den Anweisungen

Suchen = Range(„U22“).Text
If Range(„U22“).Text = Suchen Then

wird das Feld mit sich selbst verglichen. Wozu soll das gut
sein?

Hallo Ralf,

es dient dazu zu zeigen daß die beiden Dinge halt unterschiedlich sind und warum ein vergleich beider Dinge „falsch“ ergibt:

Sub tt()
Dim Suchen As String * 50
Range(„A1“) = „Hallo“
Suchen = Range(„A1“).Text
MsgBox Suchen & "