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. Zahlen aus Zelle in zwei Zellen aufteilen?

    in Microsoft Excel Hilfe
    Zahlen aus Zelle in zwei Zellen aufteilen?: Servus, ich habe hier eine Spalte mit Zellen, in der je mehrere Zahlen stehen: 012345/6789 Diese Zahlen aus einer Zelle möchte ich auf zwei Zellen aufteilen, sodass es dann so aussieht, dass in...
  3. aus Zahlenreihen den niedrigsten Wert ermitteln und einer Zelle zuordnen

    in Microsoft Excel Hilfe
    aus Zahlenreihen den niedrigsten Wert ermitteln und einer Zelle zuordnen: Hallo liebes Forum Mein Problem ist Ich muß aus einer Tabelle aus verschiedenen Zeilen und Spalten den niedrigsten Wert ermitteln und dann mit dem dazugehörigen Namen ausgeben. Ich hoffe Schon mal...
  4. Zellbezug zu externer Datei aus Zelle

    in Microsoft Excel Hilfe
    Zellbezug zu externer Datei aus Zelle: Servus! Ich habe zwei Dateien: Quelle: Hier stehen meine Daten drin. Formel: Hier beziehe ich mich auf Daten in meiner Quelle. Hier exemplarisch eine einfache Formel, die sich in Formel.xlsx...
  5. % zwischen 2 Zellen

    in Microsoft Excel Hilfe
    % zwischen 2 Zellen: Hallo, ich habe 2 Zellen, 1.136 -4.086 wie groß ist der Unterschied in % von -4086 auf 1136 Vielen Dank für Eure Hilfe Gruß Klaus
  6. Zellen mit Formeln kopieren

    in Microsoft Excel Hilfe
    Zellen mit Formeln kopieren: Hi Folgendes Problem: In den Zellen B5 - B7 stehen Formeln. Diese beziehen sich schlicht auf andere Zellen. Diese Formeln möchte ich nun in andere Spalten kopieren, dabei aber die Zeilen...
  7. Tabellename in Zelle

    in Microsoft Excel Hilfe
    Tabellename in Zelle: Hallo, Tabellen wurden nicht übersetzt. für Tabellenname in Zelle habe ich eine Formel gefunden. =TEIL(ZELLE("dateiname");SUCHEN("]";ZELLE("dateiname"))+1;LÄNGE(ZELLE("dateiname"))) In einer dem...
  8. Excel: "Schwebende Beschreibung" in Zelle

    in Microsoft Excel Hilfe
    Excel: "Schwebende Beschreibung" in Zelle: Hallo, mal wieder was spannendes. :) Und zwar möchte ich erreichen, dass auf einem Arbeitsblatt Felder eine Beschriftung erhalten, wenn diese nicht ausgefüllt sind. Aufgrund von Platzproblemen...
  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