Hier anmelden!

Willkommen bei Excellent

Druckbefehl in VBA

Beitrag verlinken am 28.08.2010 geschrieben
  • nach oben

Hallo zusammen,

will eine Tabelle mit Namen (Ausdruck) ausdrucken. Bekomme Fehlermeldung "Laufzeitfehler 1004" Anwendungs- oder objektdefinierter Fehler". Der "Hammer" schlägt am Ende der Zeile idummy% = Ausdruck.rows.Count auf.

Sub Drucken()
    If MsgBox("Ausdruck drucken?", vbOKCancel + 32) = 1 Then
    Sheets("Ausdruck").Select
    Range("rBeginn").Select
    Set Ausdruck = ActiveCell.CurrentRegion
    'Anzahl der Zeilen in der Tabelle ermitteln
    IDummy% = Ausdruck.Rows.Count
    Range("a1:j" & IDummy% + 5).Select
    ActiveSheet.PageSetup.PrintArea = Selection.adress
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
  End If
End Sub


Sub AbbrechenTaste()
    iAbbTaste = 0
End Sub


Sub OKTaste()
    iAbbTaste = 1
End Sub

Kann mir jemand sagen wo sich der Fehler befindet? Muss dazu sagen, daß o.a. Code nicht mein geistiges Eigentum sondern abgekupfert und etwas von mir an meine Tabelle angepasst ist.

Beste Grüße aus Karlsbad

H.P. karrer

Beitrag verlinken am 29.08.2010 geschrieben
  • nach oben

Hallo Hans Paul,
bei mir läuft Dein Programm mit einer kleinen Korrektur. Bei Selection.adress hat sich ein Tippfehler eingeschlichen. Es muss Selection.Address heißen. Aber dieser Fehler sollte eigentlich nicht für Deine Fehlermeldung verantwortlich sein. Oder doch?
Ich grüße aus dem Bayerischen Spessart
Dirk

Beitrag verlinken am 29.08.2010 geschrieben
  • nach oben

Was ich völlig vergaß: Du hast  IDummy als Integer deklariert, d.h. die höchste Zeilenzahl, die Du benutzen darfst ist 32.767 (2^15-1). Excel vor 2007 kann aber bereits 65.535 Zeilen darstellen. Wahrscheinlich ist eine der Zeilen > 32.767 mit irgendwas belegt (Formel, Fornatierung, ...). Mach doch mal das Arbeitsblatt "Ausdruck" zum aktiven Blatt, wechsel ins Direktfenster und gib die folgende Zeile ein

?activesheet.usedrange.rows.count

und schließe mit RETURN ab. Da habe ich schon manchmal mein "blaues Wunder" erlebt, was Excel so alles an benutzten Zellen findet.

Viel Erfolg - Dirk

Beitrag verlinken am 29.08.2010 geschrieben
  • nach oben

Hallo Dirk, besten Dank für Deine Hilfe, doch leider ...

beide Hilfen funktionierten bei mir nicht.

bei ?activesheet. usw. keinerlei Reaktion

bei Änderung auf Selection.Address bekomme ich folgende Fehlermeldung "Fehler beim Kompilieren, Objekt erforderlich" und der Begriff  "Ausdruck" in der Zeile

Set Ausdruck = ActiveCell.Current.Region

wird markiert.

Grundsätzlich bin ich wie folgt vorgegangen:

Modul1 eingefügt, darin enthalten o.a. Code. Habe anschl. die Anweisung(?) Option explicit mal rausgenommen, hat am Ergebnis nichts geändert; d.h. gleiche Fehlermeldung.

Freundliche Grüße

Hans Paul

 

Beitrag verlinken am 29.08.2010 geschrieben
  • nach oben

Hallo Hans Paul,
jetzt muss ich nochmals nachfragen. Was bedeutet "keinerlei Reaktion"? Nach der Eingabe im Direkttfenster und Abschluss mit RETURN muss in der nächsten Zeile des Direktfensters eine Zahl erscheinen. Selbst bei einem leeren Blatt erscheint dort eine 1. Irgendwas muss passieren! Wichtig ist, dass die ausgegebene Zahl nicht größer als 32.767 ist.

Da ich an dem Code nichts bösartiges finden kann und er bei mir läuft, vermute ich das Problem in den Daten. Deshalb meine folgenden Vorschläge:

Weiter würde ich mal den Adressbereich von Ausdruck überprüfen. Setze den Cursor doch bitte in die Zeile beginnend mit IDummy, drücke die Taste F9 (Haltepunkt setzen), drücke die Taste F5 (Makro ausführen), bestätige das Meldungsfenster mit OK. Jetzt hält das Makro am Haltepunkt an (die Zeile ist gelb hinterlegt). Bitte jetzt im Direktfenster

?ausdruck.address

eingeben und mit RETURN abschließen. Jetzt sollte im Direktfenster etwas wie $A$1:$J$40000 stehen. Kannst Du das exakte Ergebnis bitte mal durchgeben?

Damit ich Dein Beispiel konkret nachvollziehen kann, bitte ich Dich noch um folgende Angaben:

  1. Welchen Bereich genau hast Du mit dem Namen rBeginn belegt? Kopier doch bitte mal den Ausdruck aus der Namensdefinition.
  2. In welchem Bereich stehen Deine Daten im konkreten Fall? Dem Makro entnehme ich, dass es bei A1 los geht und bis Spalte J reicht. Aber bis welche Zeile?

Was Du noch machen kannst: Benenne Dein Arbeitsblatt Ausdruck um und füge ein neues Arbeitsblatt mit dem Namen Ausdruck ein. Korrigiere die Definition des Namens Ausdruck im Namensmanager (bei der Umbenennung des Arbeitsblattes hat sich ja auch die Definition verändert). Kopiere Deinen Datenbereich vom alten ins neue Arbeitsblatt und starte das Makro.

Gruß - Dirk

Beitrag wurde am 29.08.2010 vom Verfasser bearbeitet
Beitrag verlinken am 30.08.2010 geschrieben
  • nach oben

Hallo Dirk, besten Dank für Deine Mühen. Habe zwischenzeitlich mit dem guten alten Makrorekorder für Abhilfe gesorgt. Klappte Anfangs auch ganz gut, doch zwischenzeitlich mußte ich feststellen, daß meine Festplatte oder mein Rechner offensichtich Probleme hat, hängt sich wiederholt auf. Ob das mit dem neu installierten Excel 2010 zusammenhängt, glaube ich nicht. Werde den Rechner mal wieder neu aufbauen und dann einen erneuten Versuch starten.

Übrigens wenn ich die Anweisung ?activeSheet usw. eingab, wurde das Fragezeichen durch den Begriff "Print" ersetzt. Dies war die einzige Reaktion.

Nochmals besten Dank

Hans Paul

Beitrag verlinken am 30.08.2010 geschrieben
  • nach oben

Hallo Hans Paul,
wenn "?" durch "Print" ersetzt wird, dann bist Du im Codefenster und nicht im Direktfenster. Das Direktfenster kannst Du im VBA-Fenster mit der Menüfolge Ansicht -> Direktfenster einblenden. Im Normalfall erscheint es unterhalb des Codefensters.

Wo ist der UNterschied? Im Codefenster wird ausschließlich der VBA-Code eingeben. Im Direktfenster kann man Befehle eingeben, die sich direkt auswirken (aktives Blatt wechseln, Werte in Zellen eingeben, Zellen formatieren, belegte Zellen abfragen, ...) und sofern das Programm durch einen Haltepunkt oder eine Fehlermeldung gestoppt ist, lassen sich die aktuellen Werte der Variablen auslesen und ggf. verändern. Auch die Resultate von Debug.Print-Anweisungen werden im Direktfenster angezeigt.

Meine Infos beziehen sich auf Excel 2007 oder älter. Mit der Version 2010 habe ich noch keine Erfahrung.

Viel Erfolg und excel-lente Zeit 
Dirk

Beitrag verlinken am 30.08.2010 geschrieben
  • nach oben

Hallo Dirk, Dank für Deine Geduld. Ich war demnach tatsächlich im falschen "Fenster". Deine Anweisung befolgt, ergab einen Treffer in Zeile 445, versenkt! Makro läuft!

Frdl. Grüße

Hans Paul

Beitrag verlinken am 30.08.2010 geschrieben
  • nach oben

Hallo Hans Paul,
Super! Na, dann fängt die Woche doch ganz gut an.
Gruß - Dirk

  • Statistiken: 9 Beiträge | 848 Aufrufe

Hier anmelden

Du bist noch kein Mitglied der Community?

Community-Details

  • Suche nach:

  • Community-Name

    Excellent
    Die Excel-Community von ExcelDaily

  • Dein Gastgeber ist

    Martin Althaus

  • Online seit

    17.03.2008

  • Mitglieder

    450

  • Sprache

    Deutsch

powered by mixxt
  • v1.1.1
  • (highfive)