04.04.2016, 21:44
Code:
Sub M_snb()
Do
c00 = InputBox("worksheet ")
Loop Until Evaluate("isref(" & c00 & "!A1)")
sheets(c00).cells(1)="Prima"
End Sub
![]() Forum des Excel-Verein 2015 e.V. |
Das Clever-Excel-Forum-Treffen
findet vom 19.09. - 21.09.2025 in Bad Arolsen statt. Zu den Infos kommt Ihr oben über den Link. |
Bei Fehlermeldung 13 Text anzeigen
|
04.04.2016, 21:44
Code: Sub M_snb()
04.04.2016, 22:30
Hallo snb,
das ist jetzt aber überhaupt kein vernünftiger Vorschlag. :@ Gib einen falschen Namen ein und drück auf abbrechen, wo landest Du, bei Fehler 13!!! :92:
Gruß Atilla
Moin!
Eigentlich habe ich in meinem letzten Post ja alles gesagt … Nun gut, das Sinnvollste ist in diesem speziellen Fall die bereits angesprochene Combo- oder Listbox, die die Auswahl eines ungültigen Tabellenblatts unmöglich macht. Ob das Füllen nun per Array (snb) oder .AddItem (meine Variante) erfolgt, ist bei der zu erwartenden Menge unerheblich. Will man dem Anwender dennoch "freie Hand" lassen (warum auch immer), muss man den zu erwartenden Fehler abfangen, das hat dann nichts mit ein paar einzusparenden Code-Zeilen zu tun. Eine Möglichkeit: Modul Modul1 Option Explicit Sub RPP() Dim Eingabe As String, wks As Worksheet Check: Eingabe = Application.InputBox("Tabellenblatt") On Error Resume Next Set wks = ThisWorkbook.Worksheets(Eingabe) If Err.Number > 0 Then GoTo Check Else MsgBox "Glückwunsch!" On Error GoTo 0 End Sub Persönlich habe ich für solche Fälle eine simple Function in meiner Codesammlung: Function SheetExists(sBook, sName) As Boolean Dim x As Worksheet On Error Resume Next Set x = Workbooks(sBook).Sheets(sName) If Err = 0 Then SheetExists = True End Function Benutzt wird sie dann z.B. so: Sub RPP() Dim Eingabe As String Check: Eingabe = Application.InputBox("Tabellenblatt") If Not SheetExists(ThisWorkbook.Name, Eingabe) Then GoTo Check MsgBox "Glückwunsch!" End Sub Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
05.04.2016, 10:56
Hallo Ralf,
diesen (Deinen) Code findest Du gut? Frei nach dem Motto "Was interessiert mich mein Geschwätz von Gestern. ![]() Auch ist Goto veraltet und ein Abbrechen der Eingabe ist auch nicht vorgesehen!!! Gruß Uwe
05.04.2016, 11:38
Moin Uwe! :19:
Ich sehe da keinen Widerspruch zu meinem Geschwätz von gestern ![]() Primäre Lösung sollte ein UserForm mit einer Listbox sein, die alle oder die relevanten Tabellen enthält. Ich weiß, Sprungmarken-Programmierung hab ich zuletzt wohl unter BASIC gemacht, bin ja auch schon ein älteres Semester. :21: Simples Userform im Anhang. Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
05.04.2016, 11:41
Es wäre besser etwas zu suggerieren als nur zu kommentieren....
Hallöchen,
bestimmt ging es Uwe um dieses "Geschwätz" ![]() Code: Die On Error - Methode sollte nur dafür eingesetzt werden, wenn Du nicht "klug" programmiert hast. Mein Hinweis auf die einzusparenden Codezeilen war auch allgemeiner Natur. Passende Ersatzcodes zur On Error Variante gab es ja auch ... Der Code von snb funktioniert zumindest hinsichtlich der Blattnameneingabe, wenn man sich an die Konventionen für Blattnamen hält. Für eine Fehlerprüfung auf eventuelle Abweichungen müsste man nun verschiedene Fälle berücksichtigen. Das ist jetzt aber vor allem wegen Ralf so ausführlich ![]() Was kann z.B. passieren: - Abbrechen, wie Atilla anmerkte - ein Leerstring - ein zu langer Name - falsche Zeichen im Namen Wenn ich nun eine qualifizierte Fehlervermeidung programmiere und das auch noch mit "schönem" Code, könnte ich so gut und gerne 12 bis 16 Zeilen programmieren, so im Sinne von Code: If c00 = "" Then ![]() Man sieht also, schon bei so einfachen Sachen kann man sich ganz schön mit der Fehlerbehandlung auslassen. Mein Code wäre übrigens bei einer Inputbox auch so tolerant wie gehabt. Code: Sub Test() und noch die Version für Variablen- und Codezeilensparer: Code: Sub Test2()
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365) |
|