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. Ausgewählte Zelle auf einen bestimmten Platz springen lassen.

    in Microsoft Excel Hilfe
    Ausgewählte Zelle auf einen bestimmten Platz springen lassen.: Hallo mal wieder nach langer Zeit, vorab: ja ich habe gesucht, aber ich weiß nicht, wie ich mein Problem benennen soll. Folgendes Szenario: Eine Anwesenheitstabelle, zehn Namen, das Ganze Jahr...
  3. Excel Zellen und Spalten aus/einblenden

    in Microsoft Excel Hilfe
    Excel Zellen und Spalten aus/einblenden: Guten Tag, Ich bin neu hier im Forum. Und habe ein Problem das ich nicht lösen kann. Es geht um folgendes: Ich möchte Zeilen sowie auch Spalten aus bzw. auch wieder einblenden. Jeder Code für sich...
  4. Berücksichtigen von nur 1 Zelle und mehr als 1 Zelle

    in Microsoft Excel Hilfe
    Berücksichtigen von nur 1 Zelle und mehr als 1 Zelle: Guten Abend zusammen, der nachfolgende Code läuft nur, wenn es mindestens 2 Zellen gibt. Wie müsste der Code angepasst werden, wenn es als Möglichkeit nur eine Zelle gibt ? Danke für Deine...
  5. DropDown öffnen bei anwählen (.Select) einer Zelle

    in Microsoft Excel Hilfe
    DropDown öffnen bei anwählen (.Select) einer Zelle: Hallo und guten Abend, ich suche nach einem unter Office 365 funktionierenden VBA-Code, um ein DropDown-Menü direkt zu öffnen, wenn man die betreffenden Zelle anwählt, OHNE das NUMLOCK jedes mal...
  6. Zelle per VBA auf ihren Inhalt prüfen und reagieren sowie bei Änderung

    in Microsoft Excel Hilfe
    Zelle per VBA auf ihren Inhalt prüfen und reagieren sowie bei Änderung: Hallo zusammen, ich habe mit etwas verheddert und hoffe auf Eure Hilfe. Die Felder B111 und B112 sind zu Beginn LEER. B111 bietet ein Dropdown-Menü an, welches im Falle der Auswahl "Angebot mit...
  7. Prüfung unterschiedlicher Zellen auf Inhalt und Konsequenz

    in Microsoft Excel Hilfe
    Prüfung unterschiedlicher Zellen auf Inhalt und Konsequenz: Hallo zusammen, ich habe einen Code, bei dem ich mehrere voneinander getrennte Zellen auf Befüllung prüfe. Wenn ich mindestens eine nicht befülle, erscheint eine Fehlermeldung und das Script...
  8. Ausrichtung von Text innerhalb 1 Zelle

    in Microsoft Excel Hilfe
    Ausrichtung von Text innerhalb 1 Zelle: Hallo zusammen, ich möchte Text aus 2 Zellen gern so in Form bringen, dass je nach individueller Textlänge der Text links und rechts ausgerichtet ist. Hier mal ein Beispiel: Ausgangslage:...
  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