Supportnet / Forum / Tabellenkalkulation
Makro - Definitionsproblem
Frage
Hier mein Makro
Sub Suche()
Eingabe = ThisWorkbook.Sheets("Master").Range("G6").Value
If Not IsNumeric(Eingabe) Then
MsgBox ("Nicht verfuegbar"), 48, "Ueberpruefung"
GoTo Abbruch
End If
'Formular kopieren
Sheets("Formular").Select
Application.CutCopyMode = False
Sheets("Formular").Copy After:=Sheets(3)
ActiveSheet.Name = Eingabe
'Suche in Datenbank
ThisWorkbook.Sheets("Datenbank").Activate
ActiveSheet.[A1].Select
With ActiveCell
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = Eingabe Then
'Daten der eingegebenen Nummer in Formular eintragen
Worksheets(Eingabe).Range("F5").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F7").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F9").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F11").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F13").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F15").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F17").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F19").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F21").Value = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Worksheets(Eingabe).Range("F23").Value = ActiveCell.Value
ThisWorkbook.Sheets(Eingabe).Activate
Exit Sub
End If
Wend
End With
Abbruch:
End Sub
----
Die Eingabe ist eine Nummer.
Habe 2 Fragen:
1. Diese Nummer soll genau 6 Stellen haben. Wie definiere dich das genau? IsNumeric gibt ja nur an, dass es sich um eine Zahl handeln soll.
2. Ab hier (Worksheets(Eingabe).Range("F5").Value = ActiveCell.Value) bekomme ich eine Fehlermeldung. Excel erkennt das Worksheet nicht. Wenn ich allerdings mit der Maus ueber "Eingabe" fahre, bekomme ich die Nummer angezeigt. Gebe ich die Nummer von Hand in das Makro ein (also z.B. Worksheets(123456).Range("F5").Value = ActiveCell.Value) Dann funktioniert es. Verstehe nicht ganz, wieso Excel dies nicht versteht.
Kann mir jemand helfen. Tausend dank.
Antwort 1 von Guenter
Hallo,
zu 1.
wenn die Zahl 6 Stellen hat, liegt sie zwischen 999 999 und 100 000. Deshalb würde ich eine andere IF-Abfrage einbauen,
z.B. If Eingabe > 999999 Or Eingabe < 100000 Then
Gruß
Günter
zu 1.
wenn die Zahl 6 Stellen hat, liegt sie zwischen 999 999 und 100 000. Deshalb würde ich eine andere IF-Abfrage einbauen,
z.B. If Eingabe > 999999 Or Eingabe < 100000 Then
Gruß
Günter
Antwort 2 von Guenter
Hallo,
zu 2.
vielleicht liegt das an den verschiedenen Typen von Variablen für Eingabe, Zahl (Long) oder Text(String).
Gruß
Günter
zu 2.
vielleicht liegt das an den verschiedenen Typen von Variablen für Eingabe, Zahl (Long) oder Text(String).
Gruß
Günter
Antwort 3 von J@germeister
@Guenter
Also muss Zahl zwischen 99.999 und 1.000.000 liegen. Glaube du hast dich als bei den Neunern um ne Stelle vertan.
Kann mir das mit den Variabeln ein bisschen genau erklaeren. Bzw. nen Loesungsvorschlag geben. Beschaeftige mich erst seit ner Woche mit VBA.
Vielen Dank
Also muss Zahl zwischen 99.999 und 1.000.000 liegen. Glaube du hast dich als bei den Neunern um ne Stelle vertan.
Kann mir das mit den Variabeln ein bisschen genau erklaeren. Bzw. nen Loesungsvorschlag geben. Beschaeftige mich erst seit ner Woche mit VBA.
Vielen Dank
Antwort 4 von Guenter
Hallo,
ja, das ist mir später auch eingefallen mit den Zahlen, aber Du hast schon gemerkt, was ich meine.
Mit den Variablen: Ich hatte bisher noch keine Zeit gehabt, meinen Vorschlag zu testen.
Ich vermute, einmal ist Eingabe eine Zahl in Master G6, auf der anderen Seite ist Eingabe ein Text, Name des neuen Arbeitsblattes.
Mach doch mal folgendes:
NeuesBlatt = Eingabe
ActiveSheet.Name = NeuesBlatt
Dann weiter unten:
Worksheets(NeuesBlatt).Range("F5"). ...
alles ändern.
Gruß
Günter
ja, das ist mir später auch eingefallen mit den Zahlen, aber Du hast schon gemerkt, was ich meine.
Mit den Variablen: Ich hatte bisher noch keine Zeit gehabt, meinen Vorschlag zu testen.
Ich vermute, einmal ist Eingabe eine Zahl in Master G6, auf der anderen Seite ist Eingabe ein Text, Name des neuen Arbeitsblattes.
Mach doch mal folgendes:
NeuesBlatt = Eingabe
ActiveSheet.Name = NeuesBlatt
Dann weiter unten:
Worksheets(NeuesBlatt).Range("F5"). ...
alles ändern.
Gruß
Günter
Antwort 5 von J@germeister
Danke. Werde es mal ausprobieren. Aber wenn ich mit der Maus ueber Eingabe fahre dann wird mir die Nummer angezeigt. Naja, koenntest recht haben. Probiere es spaeter mal aus.
Tausend Dank
Tausend Dank

