VBA Excel wenn... und... dann

Hallo zusammen

Zu folgendem Code habe ich ein Problem:
If dlg.[Zahl].Text = „1“ And dlg.[Zahl].Text = „2“ Then

Dieser Code funktioniert einwandfrei. Ich muss jetzt jedoch noch etwa 20 weitere And definieren. Gibt es eine Möglichkeit dies ohne jedes mal «dlg.[Zahl].Text» schreiben zu müssen?

Gruss und Danke viel mals

If dlg.[Zahl].Text = „1“ And dlg.[Zahl].Text = „2“ Then

Dieser Code funktioniert einwandfrei. Ich muss jetzt jedoch
noch etwa 20 weitere And definieren. Gibt es eine Möglichkeit
dies ohne jedes mal «dlg.[Zahl].Text» schreiben zu müssen?

Hallo Clark,

bring mal ein viel längeres Beispiel mit Werten mit denen man etwas anfangen kann.
So macht der Code keinen Sinn bzw. klappt nicht.

Gruß
Reinhard

sorry ich hab da kurz was verwechselt.
Natürlich sollte der code nicht mit «And» sondern mit «Or» sein!
Hast recht, macht ansonsten wenig Sinn :smile:

If dlg.[Zahl].Text = „1“ And dlg.[Zahl].Text = „2“ Then

Dieser Code funktioniert einwandfrei. Ich muss jetzt jedoch
noch etwa 20 weitere And definieren. Gibt es eine Möglichkeit
dies ohne jedes mal «dlg.[Zahl].Text» schreiben zu müssen?

Hallo Clark,

*seufz*

Was/wer ist dlg?
Welche Werte kann Zahl haben?
Läuft das von „1“ bis „20“?

Was ist das überhaupt für eine Syntax?:
dlg.[Zahl].Text

Zeige mal lauffähigen Code.

Gruß
Reinhard

Also:

Beim Öffnen der Excel-Datei wird ein UserForm (also besser gesagt ein Dialogfeld) angezeigt.
In diesem Dialogfeld gibt es ein Feld Namens „Zahl“.
dlg.[Zahl].Text --> ist der Text, der in das Feld „Zahl“ eingetragen wird.

Es werden unterschiedliche Zahlen eingetragen (1-20), die jedoch alle den gleichen Befehl ausführen. (ist jedoch wichtig dass es unterschiedliche Zahlen sind. Der Code springt nämlich in die Zelle mit dem Namen der im Feld Zahl eingetragen wird. Siehe unten.)

Der funktionierender Code ist:

If dlg.[Zahl].Text = „1“ Or dlg.[Zahl].Text = „3“ Or dlg.[Zahl].Text = „4“ Or dlg.[Zahl].Text = „5“ Or dlg.[Zahl].Text = „6“ … Then 'uns so weiter, bis Zahl 20
Application.Goto Reference:=dlg.[Zahl].Text
ActiveCell.Range(„A1:C8“).Select
Selection.Copy
Application.Goto Reference:=„Einfügen“
ActiveSheet.Paste
End If

Meine Frage nun, wie kann ich den ersten Teils des Codes vereinfachen, damit der nicht so elend lang ist.

Hallo Clark,

Beim Öffnen der Excel-Datei wird ein UserForm (also besser
gesagt ein Dialogfeld) angezeigt.

ich kann mit den eckigen Klammern nix anfangen. Dialogfeld, ist das eine Form aus Excel5?

Und noch was irritiert mich, eine Zelle kann man nicht 1 oder „1“ benennen!?
Wohin hüpft also das GoTo?

Sub tt()
Dim N As Byte, Vorh As Boolean
For N = 1 To 20
 If dlg.[Zahl].Text = CStr(N) Then
 Vorh = True
 Exit For
 End If
Next N
If Vorh = True Then
 Application.Goto Reference:=dlg.[Zahl].Text
 ActiveCell.Range("A1:C8").Copy
 Application.Goto Reference:="Einfügen"
 ActiveSheet.Paste
End If
End Sub

Gruß
Reinhard

Hallo Reinhard,

ohne zu testen und ohne zu wissen, ob das in VBA so geht …
Was hältst Du davon?

If IsNumeric(dlg.[Zahl].Text) And CInt(dlg.[Zahl].Text) \>= 1 \_
 And CInt(dlg.[Zahl].Text) 

oder



    
    Select Case dlg.[Zahl].Text
     Case "1" To "20"
     Application.Goto Reference:=dlg.[Zahl].Text
     ActiveCell.Range("A1:C8").Select
     Selection.Copy
     Application.Goto Reference:="Einfügen"
     ActiveSheet.Paste
    End Select




Gruß Rainer

Vielen Dank an euch alle.

Konnte das Problem inzwischen anders lösen. Vielleicht etwas komplizierter aber die Lösung steht.

Somit ist die Frage beantwortet.

Moin auch,
nimm doch ein Zählschleife:

dim eingabe as integer
for eingabe = 1 to 20
 if dlg.[Zahl].Text = eingabe then
 Application.Goto Reference:=dlg.[Zahl].Text
 ActiveCell.Range("A1:C8").Select
 Selection.Copy
 Application.Goto Reference:="Einfügen"
 ActiveSheet.Paste
 End If
next

vorschlagende Grüße

Ralph

das ist aber sehr unbefriedigend

Konnte das Problem inzwischen anders lösen. Vielleicht etwas
komplizierter aber die Lösung steht.

Somit ist die Frage beantwortet.

Hallo Clark,

wie hast es denn gelöst?

Gruß
Reinhard