Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
584to588
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
584to588
584to588
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellenformatierung nicht drucken

Zellenformatierung nicht drucken
13.03.2005 23:00:08
Jochen
Hallo zusammen,
habe gerade folgendes Problem: In einem Tabellenblatt möchte ich einige Zellen Sperren (Extras &gt Schutz &gt 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

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenformatierung nicht drucken
13.03.2005 23:20:46
Boris
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
AW: Zellenformatierung nicht drucken
14.03.2005 08:38:37
Jochen
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
Anzeige
AW: Zellenformatierung nicht drucken
14.03.2005 00:59:57
K.Rola
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
grün - gelb - blau - bunt
14.03.2005 01:15:47
Boris
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
Anzeige
AW: grün - gelb - blau - bunt
14.03.2005 01:19:53
K.Rola
Hi Schatz,
ist doch eh der selbe Aufwand.
Kuss K.Rola
OFFTOPIC - nur für Profis
14.03.2005 01:28:53
Boris
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
AW: OFFTOPIC - nur für Profis
14.03.2005 01:49:33
K.Rola
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
Anzeige
Natürlich nur den Bezug...
14.03.2005 11:27:19
Boris
Hi,
...die Funktion SUMME dient hier nur als Beispiel.
Grüße Boris
AW: Natürlich nur den Bezug...
14.03.2005 15:10:36
K.Rola
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
AW: Natürlich nur den Bezug...
14.03.2005 20:46:06
Boris
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
Anzeige
Um es ganz klar zu machen...
14.03.2005 20:52:01
Boris
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
AW: Um es ganz klar zu machen...
14.03.2005 23:08:14
K.Rola
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
Ein komplettes Beispiel:
15.03.2005 12:09:23
Boris
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
Anzeige
Natürlich "as Long" und nicht Variant
15.03.2005 12:12:20
Boris
Function Zählen3D(Bezug As Variant, Suchtext As String) As Long
Wobei das ja eigentlich egal ist.
Boris
AW: Nicht ganz das was Du willst...
17.03.2005 22:37:44
FP
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
Anzeige
Für heute erstmal: Gute Nacht! oT
14.03.2005 01:41:17
Boris

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige