Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

Range Beschränkung umgehen

Betrifft: Range Beschränkung umgehen von: andre
Geschrieben am: 02.10.2007 12:11:23

Hallo zusammen,

folgendes Problem:

ich kopiere ein Blatt per Macro und ersetze Teile der Formeln durch Werte.
Jetzt kommt es: dannach möchte ich über eine inputbox einen Bereich abfragen der ausgedruckt werden soll.
Das funktioniert solange, wie man Höhe/ Breite des Bereichs in einem bestimmten Maß auswählt. Wählt man einen größen Bereich aus bleibt mein Code in der Zeile Set myRange = ....hängen.

Kann mir da jemend helfen?

Hier der Code (Auszug)

Dim myRange as Range

blablabla.....

Set myRange = Application.InputBox(prompt:="Markieren Sie den Druckbereich", Type:=8)

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
myRange.PrintOut Copies:=1, Collate:=True

Grüße
Andre

  

Betrifft: AW: Range Beschränkung umgehen von: Erich G.
Geschrieben am: 02.10.2007 13:04:38

Hallo Andre,
der Fehler muss eine andere Ursache haben. Wie ist die Fehlernummer? WIe lautet der Fehlerhinweis?

Mit dem Makro (in einer neuen Mappe) kannst du ausprobieren, dass man riesige Bereiche auswählen kann,
auch ein ganzes Tabellenblatt, auch Mehrfachmarkierungen funzen:

Option Explicit

Sub tst()
   Dim myRange As Range, dblZ As Double

   Set myRange = Application.InputBox("Markieren Sie den Druckbereich", Type:=8)
   
   dblZ = Cells(Rows.Count, 1).End(xlUp).Row + 1
   Cells(dblZ, 1) = myRange.Address(0, 0)
   Cells(dblZ, 2) = myRange.Cells.Count
End Sub

Ein paar Beispielergebnisse:

 AB
2E2:G821
3D:E131072
41:6553616777216
5C:D,G:H,16:17262656

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Range Beschränkung umgehen von: andre
Geschrieben am: 04.10.2007 18:10:41

Hi Erich,

danke für die Rückmeldung. Ja du hast recht, man kann ganz viel auswählen, danke für die Testroutine.

Aber es bleibt dabei, das mein Code bei "set myRange" hängen bleibt.

Die Fahlermeldung lautet: LAufzeitfehler 424, Objekt erforderlich.

Hilft das weiter?

Anbei der vollständige Code, habe das mal in einer neuen Datei getest, da läuft es auch mit sehr großen Bereichen.


Sub PreparePrint()
'
' PreparePrint Makro
'
Dim x As Byte
Dim y As Integer
Dim myRange As Range

    ActiveSheet.Select
    y = Sheets.Count
    ActiveSheet.Copy After:=Sheets(y)
    Worksheets(Worksheets.Count).Activate
    ActiveSheet.Name = "PRINT"
    
    'Formeln im Bereich durch WErte ersetzten
    Range("A1:IV1000").Copy
    Range("A1:IV1000").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    'Leerzeichen im Bereich durch nichts ersetzen, damit wird Text sichtbar
    x = 15
    For i = 0 To 30
        Range(Cells(x, 10), Cells(x, 100)).Replace What:=" ", Replacement:="", LookAt:=xlPart,  _
_
            SearchOrder:=xlByRows
            Application.CutCopyMode = False
        x = x + 1
    Next
    
    Set myRange = Application.InputBox(prompt:="Markieren Sie den Druckbereich", Type:=8)
    
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    myRange.PrintOut Copies:=1, Collate:=True
    
    'Löschen des Hilfsblattes PRINT ohne lästige Bestätigungsbox
    Application.DisplayAlerts = False
    Sheets("PRINT").Delete
    Application.DisplayAlerts = True

    
End Sub



Gruß
Andre