Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
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
Inhaltsverzeichnis

Zellinhalt erst löschen, dann drucken ... FEHLER

Zellinhalt erst löschen, dann drucken ... FEHLER
20.07.2015 22:39:15
Juergen
Hallo,
ich hatte die Anfrage kürzlich schon einmal und eine sehr hilfreiche Antwort erhalten. (Danke Michael)
Jetzt funktioniert das Makro unten, wenn ein großes oder kleines "J" im Arbeitsblatt 1 eingegeben wurde. Wenn ich versuche das auf mehrere Arbeitsblätter auszuweiten, dann klappt das aber nicht mehr. (z.B. Set Bereich = Worksheets("Arbeitsblatt1, Arbeitsblatt2, etc.") Mache ich da etwas falsch? Da dieses Makro ja in "DieseArbeitsmappe" gespeichert wird, bin ich etwas ratlos. Insgesamt hat meine Datei ca. 30 Arbeitsblätter und die zu löschenden "J"s sind immer an anderer Stelle. ... auf ein paar Seiten sind es auch einzelne "L"s, aber das lässt sich ja analog zu den "J"s beheben.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Worksheets("Arbeitsblatt1").Range("A1:H60")
For Each Zelle In Bereich
If Zelle.Value = "j" Then
Zelle.ClearContents
End If
Next
For Each Zelle In Bereich
If Zelle.Value = "J" Then
Zelle.ClearContents
End If
Next
End Sub
Schonmal lieben Dank!
Jürgen

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalt erst löschen, dann drucken ... FEHLER
20.07.2015 22:49:58
Sepp
Hallo Jürgen,
da gibt es mehrere Möglichkeiten.
Z. B.:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Dim Bereich() As Range, rng As Range
  Dim vntItem As Variant
  
  Redim Bereich(1)
  
  Set Bereich(0) = Worksheets("Arbeitsblatt1").Range("A1:H60")
  Set Bereich(1) = Worksheets("Arbeitsblatt2").Range("B1:I50")
  
  For Each vntItem In Bereich
    For Each rng In vntItem
      If LCase(rng) = "j" Then rng = ""
    Next
  Next
  
End Sub


Gruß Sepp

Anzeige
AW: Zellinhalt erst löschen, dann drucken ... FEHLER
20.07.2015 23:18:41
Juergen
Hmm, erstmal danke Sepp.
das funktioniert bei mir aber nicht. Habe die Arbeitsblatt-Namen geändert ... und dann bekomme ich immer "Laufzeitfehler (9)" ... Index außerhalb des Bereichs. Den fett markierten Bereich bekomme ich als Fehler angezeigt. Blattschutz aufheben ändert auch nichts.
Habe ich das falsch umgesetzt? Ich müsste Inhalte in ca. 30 Arbeitsblättern auf diese Art "schützen", dass sie nicht gedruckt werden können. Die Zellen enthalten z.T. Formeln und sind z.T. bedingt formatiert, so dass leichtere Optionen nicht möglich sind.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Bereich() As Range, rng As Range
Dim vntItem As Variant
ReDim Bereich(1)
Set Bereich(0) = Worksheets("ER_Skonto").Range("A1:E100")
  Set Bereich(1) = Worksheets("AR_Skonto").Range("A1:E105")
  Set Bereich(2) = Worksheets("Abschreibung").Range("A1:E110")
For Each vntItem In Bereich
For Each rng In vntItem
If LCase(rng) = "j" Then rng = ""
Next
Next
End Sub

Anzeige
vielleicht -> ReDim Bereich(2) owT
20.07.2015 23:39:56
Matthias

AW: Zellinhalt erst löschen, dann drucken ... FEHLER
20.07.2015 23:50:02
Sepp
Hallo Jürgen,
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Dim Bereich() As Range, rng As Range
  Dim vntItem As Variant
  
  Redim Bereich(2)
  
  Set Bereich(0) = Worksheets("ER_Skonto").Range("A1:E100")
  Set Bereich(1) = Worksheets("AR_Skonto").Range("A1:E105")
  Set Bereich(2) = Worksheets("Abschreibung").Range("A1:E110")
  
  For Each vntItem In Bereich
    For Each rng In vntItem
      If LCase(rng) = "j" Then rng = ""
    Next
  Next
  
End Sub


Allerdings frage ich mich, welch verkorksten Tabellenaufbau du wohl hast. Wieso sollen die Blätter, oder zumindest Teile davon nicht gedruckt werden? Was, wenn jemand die Mappe ohne Makros öffnet?
Gruß Sepp

Anzeige
AW: Zellinhalt erst löschen, dann drucken ... FEHLER
21.07.2015 14:49:05
Juergen
Hallo Sepp,
wusste nicht, dass ich hier am Pranger stehe.
Natürlich hat das einen Grund, dass ich diese Funktion brauche und natürlich gibt es aus meiner Sicht keinen anderen, sinnvollen Aufbau in einer Datei.
Die Excel-Datei wird später in eine WIN-Anwendung verpackt. Ein Öffnen ohne Makro (z.B. mit Viewer) kann ich erlauben, oder nicht - darüber brauche ich mich doch wohl nicht rechtfertigen.
Jürgen
... und mit Union funktioniert das auch nicht ... ist m.E. auch nicht die richtige Funktion.
... verbleibe ratlos

AW: Zellinhalt erst löschen, dann drucken ... FEHLER
21.07.2015 18:36:10
Sepp
Hallo Jürgen,
du brauchst dich überhaupt nicht rechtfertigen, ich darf aber auch bei meiner Meinung bleiben, dass der Weg den du gehst, ein wenig holprig ist und ich bin mir ziemlich sicher, das es bessere Wege gibt, um dein(e) Probleme zu lösen.
Was funktioniert den an meinem Vorschlag nicht?
Gruß Sepp

Anzeige
Dafür gibt es Union und Replace
21.07.2015 07:35:08
RPP63
Hallo!
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Union(Worksheets("ER_Skonto").Range("A1:E100"), Worksheets("AR_Skonto").Range("A1:E105"), _
   Worksheets("Abschreibung").Range("A1:E110")).Replace What:="j", Replacement:="", _
   LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchCase:=False
End Sub
Bei MatchCase:=False ist nicht case sensitive.
Gruß Ralf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige