Makro Zeilen ein- ausblenden Laufzeitfehler 9

Liebes Forum
Ich möchte bei Vorliegen eines bestimmten Ereignisses Zeilen ausblenden, damit die nicht gedruckt werden. Dazu habe ich mir einmal ein Makro zwecks Ausblenden der Zeilen erstellt. Den entsprechenden Ausdruck würde ich adaptieren. In erster Linie geht es mir nun um das ein- bzw. ausblenden der Zeilen. Beim Ausführen erscheint „Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs“. Das entsprechende Makro siehe unten. Für Hilfe bedanke ich micht vorab schon recht herzlich. G.

Sub einblenden()

If („aktenspiegel!j29:n29“) „“ Then
Worksheets(zahlungsauftrag).Select

Rows(„9:20“).Select
Selection.EntireRow.Hidden = False
Rows(„10:19“).Select
Range(„X10“).Activate
Selection.EntireRow.Hidden = True
Range(„A20“).Select
End If
End Sub

Hi Gauki,

Ich möchte bei Vorliegen eines bestimmten Ereignisses

welches Ereignis?

Zeilen
ausblenden, damit die nicht gedruckt werden. Dazu habe ich mir
einmal ein Makro zwecks Ausblenden der Zeilen erstellt.

Ja, sehe ich.

Den
entsprechenden Ausdruck würde ich adaptieren.

Was ist damit gemeint?

In erster Linie
geht es mir nun um das ein- bzw. ausblenden der Zeilen. Beim
Ausführen erscheint „Laufzeitfehler 9 - Index außerhalb des
gültigen Bereichs“. Das entsprechende Makro siehe unten.

Der Fehler kommt normalerweise wenn du in Vba irgendwas ansprichst was es nicht gibt, also Tabelle4 wenn es nur drei gibt.

Bei deinem Code kommt ja der Debugger völlig durcheinander :smile:

If („aktenspiegel!j29:n29“) „“ Then

geht sowiso nicht, wenn schon dann so:

If Worksheets(„aktenspiegel“).Range(„j29:n29“) „“ Then

aber das klappt auch nicht, weil ein Zellenbereich wie j29:n29 für sich keinen Wert hat, eine Zelle hat einen Wert, ein Zellbereich nicht.

Jenachdem kann der Fehler auch daher kommen, daß es kein Blatt gibt daß den Namen trägt der in der Variablen zahlungsauftrag gespeichert ist.

Und das ganze unnötige Select verwirrt mich, sag mal an was du vorhast, dann kann man schauen dir passenden Code zu basteln.

Gruß
Reinhard

Hallo Reinhard
Danke für deine Hilfe. Was habe ich vor: Im Tabellenblatt „zahlungsauftrag“ sind 9 Zeilen ausgeblendet und so wird es auch ausgedruckt. Wenn allerdings im Tabellenblatt „aktenspiegel“, Zelle j29:n29 - die sind verbunden - ein Wert eingefügt wird möchte ich, dass sich im Blatt „zahlungsauftrag“ die verdeckten Zellen öffnen und es so ausgedruckt wird. Danach wieder sich die 9 Zeilen verstecken. Das Drucken mit verdeckten Zeilen kommt etwa 90 % vor.
Nochmals Danke, ich hoffe es verständlich formuliert zu haben.
Herzliche Grüße, G.

ps: so sieht momentan das Makro aus, vielleicht hilfts:

Sub betreuung()

Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer

a = drucken_aktenspiegel()
b = drucken_zahlungsauftrag()
c = drucken_svschreiben()
d = drucken_erledigungsschreiben()
e = loeschen()

End Sub

Function drucken_aktenspiegel()
Sheets(„aktenspiegel“).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
End Function

Function drucken_zahlungsauftrag()
Sheets(„zahlungsauftrag“).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
End Function

Function drucken_svschreiben()
Sheets(„SV-Schreiben“).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2
End Function
Function drucken_erledigungsschreiben()
Dim Erledigung As String
Erledigung = Worksheets(„aktenspiegel“).Cells(60, 1)
Worksheets(Erledigung).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2
End Function

Function loeschen()
Sheets(„aktenspiegel“).Select

Range(„g2:m2“).ClearContents
Range(„k6:l6“).ClearContents
Range(„g7:stuck_out_tongue:7“).ClearContents
Range(„g8:o8“).ClearContents
Range(„i9:k9“).ClearContents
Range(„n9:v9“).ClearContents
Range(„q8:u8“).ClearContents
Range(„j10:v10“).ClearContents

Range(„o6:v6“).ClearContents
Range(„c33:f33“).ClearContents
Range(„g33:j33“).ClearContents
Range(„c18:v18“).ClearContents
Range(„k23:l23“).ClearContents
Range(„g24:stuck_out_tongue:24“).ClearContents
Range(„o23:v23“).ClearContents
Range(„g25:o25“).ClearContents
Range(„i26:k26“).ClearContents
Range(„n26:v26“).ClearContents
Range(„e29:g29“).ClearContents
Range(„j29:n29“).ClearContents
Range(„j27:v27“).ClearContents
Range(„g33:j33“).ClearContents
Range(„n33:q33“).ClearContents
Range(„c34:f34“).ClearContents
Range(„g34:j34“).ClearContents
Range(„n34:q34“).ClearContents
Range(„w3:x29“).ClearContents
‚nach Löschen wiederherstellen‘

Range(„c6:f6“).Select
ActiveCell.FormulaR1C1 = „“

Range(„g4:stuck_out_tongue:4“).Select
ActiveCell.FormulaR1C1 = „“

Range(„c12:v12“).Select
ActiveCell.FormulaR1C1 = „Anweisung auf Konto lt. Antrag“

Range(„G14:stuck_out_tongue:14“).Select
ActiveCell.FormulaR1C1 = „“

Range(„c16:v16“).Select
ActiveCell.FormulaR1C1 = „“

Range(„c21:v21“).Select
ActiveCell.FormulaR1C1 = „“

Range(„c23:f23“).Select
ActiveCell.FormulaR1C1 = „“

Range(„a38:g38“).Select
ActiveCell.FormulaR1C1 = „“

Range(„G34:J34“).Select
ActiveCell.FormulaR1C1 = „12/31/9999“

Range(„g2:m2“).Select

End Function

Danke für deine Hilfe. Was habe ich vor: Im Tabellenblatt
„zahlungsauftrag“ sind 9 Zeilen ausgeblendet und so wird es
auch ausgedruckt. Wenn allerdings im Tabellenblatt
„aktenspiegel“, Zelle j29:n29 - die sind verbunden - ein Wert
eingefügt wird möchte ich, dass sich im Blatt
„zahlungsauftrag“ die verdeckten Zellen öffnen und es so
ausgedruckt wird. Danach wieder sich die 9 Zeilen verstecken.

Hi Gauki,

Sub Druck()
With Worksheets("Zahlungsauftrag")
 .Rows("10:19").Hidden = Worksheets("Aktenspiegel").Range("J29") ""
 .PrintOut
 .Rows("10:19").Hidden = False
End With
End Sub

ps: so sieht momentan das Makro aus, vielleicht hilfts:

Ich habs gekürzt, die Zeile
Bereich = Array(…
mußt du noch vervollständigen. Wenn die Codezeile hinten zu lang wird, ein leerzeichen, dann einen Unterstrich, dann noch ein Leerzeichen dann Enter. Dann geht die Codezeile in der nächsten Zeile weiter.
Wenn das verbundenen Zellen sind, reicht auch die Angabe der ersten Zelle.

Option Explicit
'
Sub betreuung()
Dim Erledigung As String
Erledigung = Worksheets("aktenspiegel").Cells(60, 1)
Call Drucken("Aktenspiegel", 1)
Call Drucken("Zahlungsauftrag", 1)
Call Drucken("SV-Schreiben", 2)
Call Drucken(Erledigung, 2)
Call Loeschen
End Sub
'
Sub Drucken(wks As Worksheet, Anz As Integer)
wks.PrintOut Copies:=Anz
End Sub
'
Sub Loeschen()
Dim Bereich, B As Integer
With Worksheets("Aktenspiegel")
 Bereich = Array("g2:m2", "k6:l6", "g7:stuck\_out\_tongue:7", "g8:o8", "i9:k9", "n9:v9")
 For B = 0 To UBound(Bereich)
 Range(Bereich(B)).ClearContents
 Next B
 .Range("c12:v12") = "Anweisung auf Konto lt. Antrag"
 .Range("G34:J34") = "12/31/9999"
 .Range("g2:m2").Select
End With
End Sub

Gruß
Reinhard

Hallo Reinhard
Vielen Dank, der Code ist ja ein Wahnsinn, so einfach genial. Wußte gar nicht, dass man das auf diese Weise lösen kann, was meinen plumpen Code betrifft.
Nochmals Danke!
Herzliche Grüße, G.