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 
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