Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
336to340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
336to340
336to340
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

meldung bei aufruf nicht vorhandener tabellen

meldung bei aufruf nicht vorhandener tabellen
17.11.2003 02:15:29
dietmar
hallo community,

über ein eingabefeld gebe ich den namen einer tabelle in einer arbeitsmappe ein. zu dieser tabelle springt excel dann über eine vba-routine.

gibt es diese tabelle jedoch nicht, dann gibt excel eine fehlermeldung aus, die auf einen fehler im vba-code hinweist und die möglichkeit des "debuggens" enthält.

frage: wie kann ich diese "fehlermeldung" abfangen und dem nutzer stattdessen die meldung präsentieren: "das gewählte tabellenblatt existiert nicht, bitte ein anderes wählen."?

die vorhandenen tabellenblätter könnten lauten "januar 2003", "februar 2003" und der anwender gibt ein: "januar 2004".

danke, dietmar

p.s.: excel:gut, vba:etwas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: meldung bei aufruf nicht vorhandener tabellen
17.11.2003 07:31:24
Ramses
Hallo

einen Workaround:

Entweder du fängst es mit einer Error-Routine auf oder so

Dim i As Integer, myMsg As Integer
Dim myFind as Boolean
myFind = False
str = Inputbox("Tabelle angeben","Auswahl","Tabelle1")
For i = 1 to Worksheets.Count
If Worksheets(i).Name = str Then
myFind = True
Exit Sub
End If
Next i
If myFind = False then
myMsg = MsgBox("Die Tabelle existiert nicht",vbCritical+vbOK,"Abbruch")
Exit Sub
End If

Gruss Rainer
Will ja nicht meckern...
17.11.2003 10:34:20
Franz W.
jedenfalls nicht ernsthaft :-))))

Hallo Rainer,

würde mich ja nie erdreisten, Dir was zu verbessern. Aber beim Testen gab's eine Fehlermeldung. Darum habe ich mir erlaubt, noch eine "Dim" einzufügen:


Sub BlattSuchen()
Dim i As Integer, myMsg As Integer
Dim myFind As Boolean
Dim str As String
myFind = False
str = InputBox("Tabelle angeben", "Auswahl", "Tabelle1")
For i = 1 To Worksheets.Count
If Worksheets(i).Name = str Then
myFind = True
Exit Sub
End If
Next i
If myFind = False Then
myMsg = MsgBox("Die Tabelle existiert nicht", vbCritical + vbOK, "Abbruch")
Exit Sub
End If
End Sub


Oder hab ich einen Fehler gemacht?!?

Demütigst
Franz
;-)
Anzeige
Es sei dir verziehen...
17.11.2003 13:36:11
Ramses
Hallo Franz

..aber wenn das das einzige wahr, dann ist das doch nicht schlecht, wenn es aus der Hand geschrieben und ungetestet war :-)

Er hat sich sowieso nicht mehr gemeldet.

Danke

Gruss Rainer
AW: Es sei dir verziehen...
17.11.2003 13:47:22
Franz W.
Hallo Rainer,

für aus der Hand allerdings richtig!! Tät mich das noch nicht so schnell trauen (außer vielleicht mal so ein einzelnes "Select" zu eliminieren oder so in dieser Güteklasse ;-))).

Hab Dir übrigens gaaaanz weit unten beim Thema Standarddrucker am 13.11. noch ne Frage gestellt. Aber wenn bei Dir auch die Mailbenachrichtigung nichts tut momentan, hast Du's wahrscheinlich nicht gelesen. Ich erlaube mir mal, meinen Beitrag komplett hier reinzukopieren, auch wenn er nicht zum Thema passt:

Hallo Rainer,

wollte Deine Lösung jetzt einsetzen, bin aber nicht in der Lage das zu integrieren. Habe versucht die Aufzeichnung des Makrorekorders entsprechend abzuändern, das klappt aber nicht, und ich weiß leider gar nicht in welche Richtung in denken soll. (Poste der Einfachheit halber alles noch mal komplett hier rein, es geht um das letzte Makro:

Option Explicit

Declare

Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long
Declare 

Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" _
(ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Function GetDefaultPrinter() As String
Dim TempName As String
Dim DeviceNr As Long
TempName = String(1024, 0)
DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
If DeviceNr > 0 Then
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
Else
GetDefaultPrinter = "No Default Printer"
'oder zum besseren Testen
'Achtung: "False" = KEIN Boolean Wert
'NUR ein String
'GetDefaultPrinter = "False"
End If
End Function



Sub Standarddrucker()
MsgBox "Der Windows-Standarddrucker ist: " & GetDefaultPrinter, 48
End Sub



Sub Drucken_mit_Standarddrucker()
'    Application.ActivePrinter = "HP LaserJet 4L auf LPT1:"
Application.ActivePrinter = GetDefaultPrinter & "auf LPT1:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
GetDefaultPrinter & "auf LPT1:", Collate:=True
End Sub


Bei der Zeile : Application.ActivePrinter = GetDefaultPrinter & "auf LPT1:" bricht er ab mit der Meldung:
" Die Methode 'ActivePrinter' für das Objekt '_Application' ist fehlgeschlagen."
Vielleicht kannst Du mir noch mal helfen, falls Du "soweit unten" noch mal reinschaust :-))

GrüßeFranz
Anzeige
AW: Es sei dir verziehen...
17.11.2003 14:13:41
Ramses
Hallo Franz

ohne es zu testen

Application.ActivePrinter = GetDefaultPrinter
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
GetDefaultPrinter, Collate:=True

sollte reichen, weil der Zusatz ".. auf LPT1" bei Windows intern mitgeführt wird, genauso wie die Bezeichnung "... auf NE08" o.ä.

Gruss Rainer
Leider nicht, ABER...
17.11.2003 15:06:45
Franz W.
Hallo Rainer,

leider immer noch dasselbe: bei der Zeile " Application.ActivePrinter = GetDefaultPrinter " kommt obige Meldung...

ABER: Jetzt hab ich die Zeile mal ganz weggelassen, und jetzt tut er's. Auch wenn vorher ein anderer Drucker eingestellt war. Aber nur in Deiner Variante:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
GetDefaultPrinter, Collate:=True

Bei der Variante mit LPT1 usw. druckt er auf dem vorher eingestellten Drucker (in meinem Test "FritzFax-Drucker") und nicht auf dem Standarddrucker.

SUPER! SEHR SCHÖN! FREUT MICH SEHR!! Aber noch eine Frage: ist das sicher? Kann man die Zeile einfach weglassen? Auch wenn ich die Datei meinem Freund schicke, auf dessen Rechner sie eigentlich laufen soll? Oder muss man da evtl. noch was abfangen?

Grüße
Franz
Anzeige
AW: Leider nicht, ABER...
17.11.2003 16:09:04
Ramses
Hallo Franz

keine Ahnung, muss ich erst probieren

Gruss Rainer
Nein, nein. Muss nicht sein!!
17.11.2003 16:48:09
Frnaz W.
Hallo Rainer,

keinen AUfwand, bitte. Kann ich dann auch selber ausprobieren. Hätt ja nur sein können, dass Dir das auswendig was sagt. Wenn ich Probleme bekomme, die ich nicht hinkriege, kann ich ja neu nachfragen.

Danke für Deine Hilfe und Grüße
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige