Zellenformatierung nicht drucken

Bild

Betrifft: Zellenformatierung nicht drucken
von: Jochen
Geschrieben am: 13.03.2005 23:00:08
Hallo zusammen,
habe gerade folgendes Problem: In einem Tabellenblatt möchte ich einige Zellen Sperren (Extras > Schutz > Tabellenblatt schützen), andere aber für Eingaben nciht schützen. Die Zellen, in denen man Einträge machen kann / muß, möchte ich farblich kennzeichnen. Beim Drucken des Blattes soll dies Formatierung aber nciht sichtbar sein, sondern alle Zellen sollen glecih aussehen.
Geht daß irgendwie ?!?!
Danke für Eure Hilfe sagt
Jochen

Bild

Betrifft: AW: Zellenformatierung nicht drucken
von: Boris
Geschrieben am: 13.03.2005 23:20:46
Hi Jochen,
wenn es nicht allzuviele Eingabezellen sind, dann kannst du es z.B. so machen:
Option Explicit

Sub drucken()
Dim strUnlocked As String
strUnlocked = "A1,B5,D6:D7,E13" 'Hier alle Eingabezellen / Bereiche mit aufnehmen
With ActiveSheet
    .Unprotect '"passwort"
    .Range(strUnlocked).Interior.ColorIndex = xlNone
    .PrintOut
    .Range(strUnlocked).Interior.ColorIndex = 6 'gelb - musst du anpassen
    .Protect '"passwort"
End With
End Sub

Grüße Boris
Bild

Betrifft: AW: Zellenformatierung nicht drucken
von: Jochen
Geschrieben am: 14.03.2005 08:38:37
Hallo zusammen,
erst mal besten Dank für Eure schnelle Hilfe, aber leider klappt´s bei mir nicht. Wenn ich das Blatt drucken lasse, dann springt er gar nicht in das Makro. Weder bei
sub drucken() noch bei
sub print_it()
klappt es.
Muß ich da noch irgendwas einstellen? Oder kann es daran liegen, daß ich hier im Büro Office XP verwende?
Danke und Gruß
Jochen
Bild

Betrifft: AW: Zellenformatierung nicht drucken
von: K.Rola
Geschrieben am: 14.03.2005 00:59:57
Hallo,
markier die Eingabezellen und gib ihnen einen Namen, hier: n_NoPrint
Anschleißen folgenden Code starten:
Option Base 1
Sub Print_it()
Dim z As Long, OG As Long, c As Range
OG = [n_NoPrint].Cells.Count
ReDim arrNo(OG)
For Each c In [n_NoPrint]
  z = z + 1
  arrNo(z) = c.Interior.ColorIndex
Next
[n_NoPrint].Interior.ColorIndex = xlNone
z = 0
Sheets("DeinBlatt").PrintOut
For Each c In [n_NoPrint]
  z = z + 1
  c.Interior.ColorIndex = arrNo(z)
Next
End Sub

Gruß K.Rola
Bild

Betrifft: grün - gelb - blau - bunt
von: Boris
Geschrieben am: 14.03.2005 01:15:47
Hi Liebes,
...solche Spielchen hab ich jetzt mal nicht vorausgesetzt - zumindest in meinen Dateien haben Eingabezellen - wenn überhaupt - alle die gleiche Farbe :-p
Grüße Boris
Bild

Betrifft: AW: grün - gelb - blau - bunt
von: K.Rola
Geschrieben am: 14.03.2005 01:19:53
Hi Schatz,
ist doch eh der selbe Aufwand.
Kuss K.Rola
Bild

Betrifft: OFFTOPIC - nur für Profis
von: Boris
Geschrieben am: 14.03.2005 01:28:53
Hi mein Einstein der Programmierkunst,
=SUMME(Tabelle1:Tabelle3!A4:A7)
Hast du ne Ahnung, wie ich diesen Bereich (erstellt bei gedrückter Shift-Taste) an eine UDF übergeben kann, außer die gesamte UDF mit Application.Caller.Formula auszulesen, um dann den Bezug mit String-Zerlegung zu erhalten?
Für den User soll dem Komfort der o.g. Markiermöglichkeit erhalten bleiben...
Wie kann man so etwas noch programmieren?
Grüße Boris
Bild

Betrifft: AW: OFFTOPIC - nur für Profis
von: K.Rola
Geschrieben am: 14.03.2005 01:49:33
Hi,
du willst doch hoffentlich nur den Bezug ohne die Summe, oder?
Gruß K.Rola
"Der Fleiß ist die Wurzel aller
Häßlichkeit"

 Oscar Wilde
Bild

Betrifft: Natürlich nur den Bezug...
von: Boris
Geschrieben am: 14.03.2005 11:27:19
Hi,
...die Funktion SUMME dient hier nur als Beispiel.
Grüße Boris
Bild

Betrifft: AW: Natürlich nur den Bezug...
von: K.Rola
Geschrieben am: 14.03.2005 15:10:36
Hi,
so ganz versteh ich das nicht. User soll den Bezug eingeben oder auswählen?
Beschreib mal so, dass auch ich das verstehe oder mail mir ein Beispiel.
Gruß K.Rola
Bild

Betrifft: AW: Natürlich nur den Bezug...
von: Boris
Geschrieben am: 14.03.2005 20:46:06
Hi K.Rola,
der User soll den Bezug anwählen / selektieren können - eben genau so, wie er es auch z.B. bei der Funktion SUMME kann: =SUMME('Tabelle1:Tabelle3'!A4:C9)
Mit gelingt es aber nicht (bzw. nur so, wie Eingangs beschrieben - war ein Tipp von Jeanie), diesen Bezug (über mehrere Blätter) an eine x-beliebige UDF zu übergeben.
Also eigentlich: Wie verarbeitet die Funktion SUMME diesen Mehrhfachbezug? Und genau so soll es auch meine UDF tun. Natürlich muss die UDF auch in der Lage sein, einen ganz einfachen Bezug (nicht über mehrere Blätter) zu verarbeiten.
Also im Dummy-Beispiel:
Option Explicit

Function My_Dummy_UDF(Bezug As Range) As Long
Dim C As Range
For Each C In Bezug
    If C = "K.Rola" Then My_Dummy_UDF = My_Dummy_UDF + 1
Next C
End Function

Und Bezug soll eben auch ein Mehrfachbezug wie Tabelle1:Tabelle3!A1:C100 sein können - und man soll diesen auch anwählen können (also kein String!).
Jetzt klarer?
Grüße Boris
Bild

Betrifft: Um es ganz klar zu machen...
von: Boris
Geschrieben am: 14.03.2005 20:52:01
Hi K.Rola,
meine UDF soll also sowohl
=my_dummy_udf(Tabelle1:Tabelle3!A3:A9)
als auch
=my_dummy_udf(B6:B11)
verarbeiten können.
Grüße Boris
Bild

Betrifft: AW: Um es ganz klar zu machen...
von: K.Rola
Geschrieben am: 14.03.2005 23:08:14
Hi,
interessant, aber ich kann mir nicht vorstellen, wie das mit VBA zu machen ist.
SUMME() erkennt ja z.B., wenn eines der "Grenzblätter" umbenannt wird. Wie soll
die UDF das erkennen? Kein Plan.
Gruß K.Rola
Bild

Betrifft: Ein komplettes Beispiel:
von: Boris
Geschrieben am: 15.03.2005 12:09:23
Hi K.Rola,
ich hab jetzt mal eine diesbezügliche UDF geschrieben. Sie soll in der Lage sein, auch über mehrere Blätter zu zählen.
Syntax: =ZÄHLEN3D(Bezug;Suchtext)
Also z.B.:
=ZÄHLEN3D(Tabelle1:Tabelle3!C4:D100;"u")
Aber auch mit der normalen ZÄHLENWENN-Syntax:
=ZÄHLEN3D(C3:F13;"u")
Sieht dein geschultes Auge irgendwelche Schwachstellen / Umständlichkeiten / Verbesserungsmöglichkeiten?
Option Explicit

Function Zählen3D(Bezug As Variant, Suchtext As String) As Variant
Dim s           As String       'Formelstring
Dim WsStart     As String       'Name Erstes Blatt
Dim WsEnde      As String       'Name Letztes Blatt
Dim iCount      As Integer      'Zähler vom 1. bis zum letzten Blatt
Dim i           As Integer      'Index des 1. Blattes
Dim j           As Integer      'Index des letzten Blattes
Dim B           As Boolean      'Prüfung, ob Mehrfachbezug vorhanden
Dim sBereich     As String      'Bereich auslesen bei Mehrfachmarkierung
s = Application.Caller.Formula 'Formel auslesen
'Prüfen, ob Mehrfachmarkierung vorliegt
B = (InStr(1, s, ":") > 0) * (InStr(1, s, "!") > InStr(1, s, ":")) * (InStr(1, s, "!") < InStr(1, s, ","))
If B Then 'Falls Mehrfachbezug vorhanden in der Form: Tabelle1:Tabelle3!A1:C100
    'Formelstring auslesen und an s übergeben
    s = Mid(s, InStr(1, s, "(") + 1, InStr(1, s, ")") - InStr(1, s, "(") - 1)
    'Erstes Blatt auslesen
    WsStart = Trim(Left(s, InStr(1, s, ":") - 1))
    'Letztes Blatt auslesen
    WsEnde = Trim(Mid(s, InStr(1, s, ":") + 1, InStr(1, s, "!") - InStr(1, s, ":") - 1))
    'Zellbereich auslesen
    sBereich = Trim(Mid(s, InStr(1, s, "!") + 1, InStr(1, s, ",") - InStr(1, s, "!") - 1))
    'Index des 1. Blattes ermitteln
    i = Worksheets(WsStart).Index
    'Index des letzten Blattes ermitteln
    j = Worksheets(WsEnde).Index
    'Schleife über alle tangierten Blätter
    For iCount = i To j
        Zählen3D = Zählen3D + WorksheetFunction.CountIf(Sheets(iCount).Range(sBereich), Suchtext)
    Next iCount
Else 'Falls kein Mehrfachbezug vorhanden: Einfaches ZÄHLENWENN
        Zählen3D = WorksheetFunction.CountIf(Bezug, Suchtext)
End If
End Function

Danke und Grüße
Boris
Bild

Betrifft: Natürlich "as Long" und nicht Variant
von: Boris
Geschrieben am: 15.03.2005 12:12:20
Function Zählen3D(Bezug As Variant, Suchtext As String) As Long
Wobei das ja eigentlich egal ist.
Boris
Bild

Betrifft: AW: Nicht ganz das was Du willst...
von: FP
Geschrieben am: 17.03.2005 22:37:44
Hallo Boris,
... aber vielleicht trotzdem hilfreich
Tabelle1
 DEF
6x 5
7  4
8  3
9x 2
10  5
11x  
12   
13x  
14   
15x  
Formeln der Tabelle
F6 : =ZBORIS("x";D6:D15)
F7 : =ZBORIS("x";D6:D9;D13:D15)
F8 : =ZBORIS("x";Tabelle2!D6:D9)
F9 : =ZBORIS("x";Tabelle1!D$6:D$9)
F10 : =ZBORIS("x";Tabelle1!D$6:D$9;Tabelle2!D6:D9)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  

Hier der Code:

Function ZBoris(was As Variant, ParamArray b()) As Long
  Dim rng     As Range
  Dim var     As Variant
  For Each var In b
    For Each rng In var
      If rng = was Then ZBoris = ZBoris + 1
    Next
  Next
End Function

Servus aus dem Salzkammergut
Franz
Bild

Betrifft: Für heute erstmal: Gute Nacht! oT
von: Boris
Geschrieben am: 14.03.2005 01:41:17

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zellenformatierung nicht drucken"