Office: Druckverbot, wenn Zelle einen bestimmten Inhalt haben.

Helfe beim Thema Druckverbot, wenn Zelle einen bestimmten Inhalt haben. in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen, ich brauch mal wieder etwas Hilfe bei VBA. Ich benötige ein Druckverbot, wenn in verschiedenen Zellen ein "T" eingetragen ist. Die... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Mirisla, 27. August 2023.

  1. Mirisla Neuer User

    Druckverbot, wenn Zelle einen bestimmten Inhalt haben.


    Hallo Zusammen,
    ich brauch mal wieder etwas Hilfe bei VBA.
    Ich benötige ein Druckverbot, wenn in verschiedenen Zellen ein "T" eingetragen ist.
    Die Zellen sind an verschiedenen Stellen.
    Dies habe ich bereits für eine einzelne Zelle:

    Private Sub Workbook_BeforePrint(Cancel As Boolean)

    For Each xWs In Application.ActiveWorkbook.Windows(1).SelectedSheets
    If Worksheets("Tabelle1").Range("H4").Value = "T" Then
    MsgBox ("Es kann nicht gedruckt werden")
    Cancel = True
    End If

    Next
    End Sub

    Leider reicht mein Wissen über VBA nicht aus, um daraus etwas sinnvolles zu basteln, für mehrere Zellen.

    Konkret handelt es sich um diese Zellen
    H4 bis H21
    I22 bis I32
    H33 bis H35
    I36 bis I42
    G43 bis G58
    Q52
    Q54 bis Q58 (zusammengeführte Zellen)

    Also in egal welcher Zelle ein "T" kommt, muss ein Druckverbot kommen, bis das T weg ist.


    Vielen Dank im Voraus.
    Miro
     
    Mirisla, 27. August 2023
    #1
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    Hallo Miro,

    versuch es so
    Range("H4;H21;I22,I32 .....")

    Druckverbot, wenn Zelle einen bestimmten Inhalt haben. GrußformelDruckverbot, wenn Zelle einen bestimmten Inhalt haben. Homepage
     
    Hajo_Zi, 27. August 2023
    #2
  3. RPP63_neu
    RPP63_neu Erfahrener User
    Moin!
    Ich kenne da "etwas" andere Trennzeichen.
    • Setze den Union-Bereich
    • wende die Range.Find-Methode an
    • prüfe ob die Objektvariable zugewiesen wurde oder Nothing ist:
    Code:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim Fund As Range
    Set Fund = Worksheets("Tabelle1") _
        .Range("H4:H21,I22:I32,H33:H35,I36:I42,G43:G58,Q52,Q54") _
        .Find("T", , , xlWhole)
    If Not Fund Is Nothing Then
      MsgBox "Es kann nicht gedruckt werden"
      Cancel = True
    End If
    End Sub
    (bei verbundenen Zellen ist die relevante die oben links, also Q54)

    Gruß Ralf
     
    RPP63_neu, 27. August 2023
    #3
  4. Mirisla Neuer User

    Druckverbot, wenn Zelle einen bestimmten Inhalt haben.


    Hallo Hajo,

    sobald ich bei Range("") irgendetwas anderes als eine einzelne Zelle eintrage, egal ob Doppelpunkt für einen Bereich Range("H4:H21") oder Semikolon für zwei einzelne Zellen Range("H4;H5") kommt eine Fehlermeldung.
    Deswegen bin ich schon verzweifelt... :'(


    Hallo Ralf,
    Danke für die Hilfe, funktioniert leider nur nicht.
    Er druckt trotzdem. Unabhängig ob ein "T" drin ist oder nicht.
    Aber evtl habe ich nicht verstanden was Du meinst.
    Wie prüfe ich, ob die Objektvariable zugewiesen wurde? :)
    Ich bin eine NULL was VBA an geht... Druckverbot, wenn Zelle einen bestimmten Inhalt haben. :(
    Das meiste muss ich mir mühselig im www zusammenklabern um nicht wegen jeder "Kleinigkeit" fragen zu müssen.
     
    Mirisla, 27. August 2023
    #4
  5. DIZA
    DIZA hat Ahnung
    Hallo Mirisla,

    du musst den Code von Ralf in "Diese Arbeitsmappe" packen und
    nicht etwa in das "Tabellenblatt oder ein Modul"
    und musst ggf. bei...
    Code:
    Set Fund = Worksheets("Tabelle1")
    das entsprechende Tabellenblatt anpassen.
     
  6. Mirisla Neuer User
    Hey Dirk,
    danke für die Antwort.

    Leider ist das alles bereits schon so, wie Du es beschreibst.
    Der Code passt. Eigentlich nur Coppy, Paste und fertig.
    Ist in der Arbeitsmappe und nicht in der Tabelle, und das Arbeitsblatt heißt einfach nur Tabelle1.
     
  7. DIZA
    DIZA hat Ahnung
    Hallo Marisla,
    das ist für mich nicht nachvollziehbar. Habs auch nochmal probiert und es geht.
    Bleibt eigetlich nur der Blick in deine Datei.
     
  8. d'r Bastler
    d'r Bastler Erfahrener User

    Druckverbot, wenn Zelle einen bestimmten Inhalt haben.

    Moin Marisla,
    Deine Aufgabenstellung ist mir noch nicht ganz klar, daher folgende Fragen:
    • Du erwähnst "Tabelle1", hast Du ein oder mehrere Tabellenblätter?
    • Soll überhaupt nichts gedruckt werden oder nur die gesperrten Zeilen/Arbeitsblätter nicht?
    • Soll immer ein definierte Bereich geprüft werden, oder ist das einzelne "T" immer ein Druckverbotsgrund?
    • Gibt es für den Marker "T" einen bestimmten Grund, oder ließe der sich z.B. durch ein Sonderzeichen ersetzen?
    Lass mich lernen, bitte. Schöne Grüße
     
    d'r Bastler, 3. September 2023
    #8
  9. Mirisla Neuer User
    @DIZA

    Danke für die Antwort.
    Sobald ich wieder Zugang zur Datei habe - was nur in der Arbeit ist, kümmere ich mich mal um Anschauungsmaterial. :)

    @d'r Bastler
    Danke auch für Deine Antwort.

    - Tabelle1 ist einfach nur der Tabellenblattname. Es ist das einzige.
    - sobald eine der entsprechend benannten Zellen ein "T" drin hat, darf das ganze Dokument nicht gedruckt werden.
    - In die benannten Zellen wird mittels "wenn dann" ein T eingetragen, wenn andere Zellen fehlerhaft eingetragen sind. Wenn alles passt, sind die benannten Zellen ohne Wert.
    - Es könnte auch durch ein Sonderzeichen ersetzt werden. Das "T" als solches ist kein Zwang. Könnte auch ein "%" sein...

    Ich hoffe, dass es soweit passt. :)
     
  10. d'r Bastler
    d'r Bastler Erfahrener User
    Moin Marisla,
    das hilft ungemein ;-) Mit diesen Informationen lässt sich leicht was stricken. Leider nicht mehr heute Abend, muss zum Geburtstagsessen.

    Grüße
     
    d'r Bastler, 4. September 2023
    #10
  11. Mirisla Neuer User
    Es sei Dir vergönnt!!
    Guten Appetit und alles Gute dem Geburtstagskind! :)
     
  12. DIZA
    DIZA hat Ahnung
    macht Sinn, dann kann viel Gerate ausgemerzt werden.
     
  13. d'r Bastler
    d'r Bastler Erfahrener User

    Druckverbot, wenn Zelle einen bestimmten Inhalt haben.

    Moin allerseits,

    in Diese Arbeitsmappe:
    Code:
    Option Explicit
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    
        Check_T
        If canPrint = False Then
            Cancel = True
        End If
    
    End Sub
    in ein Allgm. Modul:
    Code:
    Option Explicit
    Public canPrint As Boolean
    
    Sub Check_T()
    Dim i As Integer, r As Integer
    canPrint = True
    
    With ActiveSheet
    
    r = .UsedRange.Rows.Count
    
        For i = 1 To r
            If .Cells(i, 8) = "T" Then
                canPrint = False
                MsgBox "Drucken is' nicht"
                Exit Sub
            End If
        Next i
    
    End With
    
    End Sub
    
    Was tut das Dingen? Es prüft vor dem Drucken, ob in der Spalte H = 8 ein einzelnes "T" zu finden ist. Falls ja, wird der Druck verhindert, falls nicht gedruckt. Andere Zelleninhalte mit T wie Tomate, Tornröschen oder Topf werden nicht als Druckblockade gesehen, womit die Spalte weiterhin auch anderweitig nutzbar ist. Dadurch wird das dedizierte Ansprechen einzelner Zellen/Ranges unnötig.

    Um auch die Spalten G, I, und Q zu prüfen, lässt man die For...Next Schleife einfach auch über die Spalten 7, 9 und 17 laufen. z.B. so:
    Code:
    If Cells(i,7) = "T" or Cells(i,8) = "T" or Cells(I,9) = "T" or ... ... Then
    Grüße
     
    Zuletzt bearbeitet: 5. September 2023
    d'r Bastler, 5. September 2023
    #13
  14. HKindler
    HKindler Erfahrener User
    @d'r Bastler
    Globale Variablen sind Bäh! Vor allem wenn sie sich so leicht vermeiden lassen:
    Code:
    Function canPrint() As Boolen
    Dim i As Long
    With Tabelle1
        For i = 1 To .UsedRange.Rows.Count
            If .Cells(i, 8) = "T" Then
                canPrint = False
                MsgBox "Drucken is' nicht"
                Exit Function
            End If
        Next i
    End With
    canPrint = True
    End Function
    Wobei man eigentlich eine Sub/Function niemals mit "Exit" verlassen sollte...
    Auch sollte man Zeilenzähler niemals als Integer definieren. Denn jenseits von Zeile 32.768 fällt man damit auf die Schnauze.
    Genauso sollte man niemals nicht ActiveSheet verwenden. Wie heißt es so schön bei Forrset Gump? "ActiveSheet ist wie eine Schachtel Pralinen: Man weiß nie, was man bekommt!". Vom TE wurde erwähnt, dass das Blatt "Tabelle1" geprüft werden soll. Also macht man auch das. Allerdings könnte der Benutzer den Namen ändern, daher habe ich hier den CodeName verwendet, der sich normalerweise nie ändert (es sei denn man macht es mutwillig).

    Der Aufruf erfolgt dann mit
    Code:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Cancel = Not canPrint()
    End Sub
    Oder man schreibt die paar Zeilen der Function gleich in BeforePrint.

    So ganz nebenbei, würde übrigens dieser Einzeiler genau dasselbe machen:
    Code:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Cancel = Application.WorksheetFunction.CountIf(Tabelle1.Columns("H"), "T") <> 0
    End Sub
    oder mit Benachrichtigung:
    Code:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If Application.WorksheetFunction.CountIf(Tabelle1.Columns("H"), "T") <> 0 Then
        MsgBox "Drucken is' nicht"
        Cancel = True
    End If
    End Sub
     
  15. d'r Bastler
    d'r Bastler Erfahrener User
    Moin Mirisla,

    ich habe meinen Code noch einmal etwas optimiert und zeilenweise erklärt. Vielleicht erweitert er Dein VBA-Wissen ein wenig. Das Ergebnis findest Du hier.

    Schöne Grüße
     
    d'r Bastler, 5. September 2023
    #15
Thema:

Druckverbot, wenn Zelle einen bestimmten Inhalt haben.

Die Seite wird geladen...
  1. Druckverbot, wenn Zelle einen bestimmten Inhalt haben. - Similar Threads - Druckverbot Zelle bestimmten

  2. Eine Zelle blinken lassen

    in Microsoft Excel Hilfe
    Eine Zelle blinken lassen: Wünsche einen schönen Sonntag in die Runde. Ich habe einen VBA Code, um eine Zelle blinken zu lassen. Nun kann ich das Blinken nur im VBA Code starten. Ich hatte mir vorgestellt, dass wenn ich das...
  3. Daten Einlesen aus mehre Zellen in Verbindung einer Verbundene Zelle

    in Microsoft Excel Hilfe
    Daten Einlesen aus mehre Zellen in Verbindung einer Verbundene Zelle: Moin Allerseits, mit Verlaub ich bin seit 5 Jahren aus der Materie raus, fange somit von Vorne an. Frage: Anpassung eines bereits Geschrieben Codes. Verwendete Elemente: Quelle> Tabelle "wsLK",...
  4. Hochzählen Zelle Excel oder Office365?

    in Microsoft Excel Hilfe
    Hochzählen Zelle Excel oder Office365?: Hallo zusammen Ich möchte im Excel eine Spalte mit den Schaltknopf hochzählen. Lokal funktioniert es einwandfrei, wie könnte ich es lösen da verschiedene Personen die gleiche Datei öffnen müssen,...
  5. Zelleninhalte in andere Zelle mit Komma getrennt

    in Microsoft Excel Hilfe
    Zelleninhalte in andere Zelle mit Komma getrennt: Hallo, ich weiß nicht, ob ich im EXCEL Bereich richtig bin, da es sich um eine Tabelle aus einer Access Datenbank handelt. Allerdings müsste ich "nur" in dieser Tabelle einiges ändern: Für jeden...
  6. In einer Zelle Zahlen erkennen und trennen

    in Microsoft Excel Hilfe
    In einer Zelle Zahlen erkennen und trennen: Guten Tag zusammen Ich habe folgende Daten in einer Zelle und muss diese in mehrere Spalten aufteilen, insbesondere benötige ich die Zahl, die hinter dem X steht PKP210SX90AOS08...
  7. Formularsteuerelement Textfeld: Selbe Formatierung wie verlinkte Zelle?

    in Microsoft Excel Hilfe
    Formularsteuerelement Textfeld: Selbe Formatierung wie verlinkte Zelle?: Hallo, ich bin ja gerade dabei ein Bestellformular mit Excel zu realisieren. Das ganze sieht soweit auch schon sehr gut aus und funktioniert weitgehendst. Die Textfelder sind nun alle verlinkt...
  8. Teilstring einer Zelle auf Wert aus anderer Zelle überprüfen

    in Microsoft Excel Hilfe
    Teilstring einer Zelle auf Wert aus anderer Zelle überprüfen: Hallo zusammen, ich habe in einer Excel-Tabelle in zwei Tabellenblätter. Tabellenblatt "Artikelstamm" beinhaltet in Spalte A eine Artikel-Nr. und diverse weitere Spalten. Hier ein kleiner Auszug:...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden