Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

einzelne zelle ansprechen/ausblenden VBA

1,390 views
Skip to first unread message

christian mähler

unread,
Jul 1, 2004, 3:50:30 AM7/1/04
to
Wie kann ich einzelne Zellen ansprechen(ihren Inhalt
auslesen) bzw. ausblenden (visible = false). Ich finde
keine Methode mit der das möglich ist-nur für ganze
Zeilen oder Spalten. Kann mir jemand weiterhelfen oder
einen Tip geben? Ich möchte die Zelle Koordinatenmäßig
ansprechen a la
tabelle.zelleausblenden(3,4).visible = false oder ihren
Inhalt auslesen. Je nach dem......

danke im Voraus
mfg

Bernd Augustin

unread,
Jul 1, 2004, 4:31:12 AM7/1/04
to
Hallo Christian

ich kenne hierfür bislang nur zwei Möglichkeiten.

1.) Den Text auf weiß umschalten Selection.Font.ColorIndex = 2

oder

2.) Über die Zelle eine Textbox setzen, welche die Daten enthält.
Diese kann dann mit

Sheets(1).TextBox1.Visible = False

ausgeblendet werden.


Freundliche Grüße aus der Pfalz


Bernd Augustin

http://www.bernd-augustin.de
ca. 40 kostenlose AddIns für Excel
Made by Bernd Augustin


"christian mähler" <pi.in...@web.de> schrieb im Newsbeitrag
news:2404d01c45f40$14eb3100$a301...@phx.gbl...

Melanie Breden

unread,
Jul 1, 2004, 5:31:19 AM7/1/04
to
Hallo christian,

christian mähler schrieb:

solch eine Funktion gibt es standardmäßig nicht in Excel.
Eine Zelle selbst kann man nicht einzeln ausblenden, aber deren Inhalt
über das benutzerdefinierte Zahlenformat (;;;) unsichtbar machen.

Du kannst dir aber eigene Funktionen programmieren, welche
deine Bedürfnisse übernehmen.
Hier mal ein Beispiel:

Public Function ZelleAusblenden(wks As Worksheet, _
lngRow As Long, intCol As Integer, _
Optional strVisible As String) As Variant
With wks.Cells(lngRow, intCol)
' Wenn Parameter nicht angegeben, überprüfe das Format
If strVisible = "" Then
strVisible = .NumberFormat <> ";;;"
End If
.NumberFormat = IIf(strVisible = "Falsch", ";;;", "General")
If .NumberFormat <> ";;;" Then
ZelleAusblenden = .Value
Else
ZelleAusblenden = "Zelle ist ausgeblendet"
End If
End With
End Function

Beim Aufruf der Funktion kannst du entscheiden, ob die
Zelle ein/-ausgeblendet, oder deren Wert ausgegeben wird.
Es wird aber nur ein Wert zurückgegeben, wenn der Zelleninhalt *sichtbar* ist

Sub CallZelleAusblenden()
' ausblenden D3
ZelleAusblenden Worksheets("Tabelle1"), 3, 4, False
' einblenden
ZelleAusblenden ActiveSheet, 3, 4, True
' Wert auslesen, wenn Zelleninhalt sichtbar
MsgBox ZelleAusblenden(ActiveSheet, 3, 4)
End Sub

Die Syntax:
ZelleAusblenden Worksheets("Tabelle1"), 3, 4, False

kommt deinen Vorstellungen doch schon sehr nahe ;-)
> tabelle.zelleausblenden(3,4).visible = false

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#


Thomas Ramel

unread,
Jul 1, 2004, 5:44:23 AM7/1/04
to
Grüezi Melanie

Melanie Breden schrieb am 01.07.2004

> Eine Zelle selbst kann man nicht einzeln ausblenden, aber deren Inhalt
> über das benutzerdefinierte Zahlenformat (;;;) unsichtbar machen.

Das hätte ich ebenfalls vorgeschlagen :-)

Etwas problematischer sehe ich die Anwendung der Funktion, die in sich
wieder mal sehr schön ist!

Wenn die so ausgeblendete Zelle ein Datum, eine Währung oder sonst ein
etwas spezielleres Format hatte wird es schwierig, dieses wieder
herzustellen.

In letzter Konsequenz wäre dann wohl eine Dummy-Tabelle vonnöten, in welche
die ausgeblendeten Werte verschoben und bei Bedarf mitsamt der kompletten
Formatierung wieder geholt werden.

Ob dieser Aufwand den Nutzen allerdins wert ist, kann nur Christian
beantworten.
Vielleicht gibt es für sein Problem noch andere Lösungen, wenn er uns
mitteilt, was der Hintergrund seiner Frage ist.

--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win XP Pro SP-1 / xl2000 SP-3]

Melanie Breden

unread,
Jul 1, 2004, 7:35:21 AM7/1/04
to
Hallo Thomas,

Thomas Ramel schrieb:


> Etwas problematischer sehe ich die Anwendung der Funktion, die in sich
> wieder mal sehr schön ist!
>
> Wenn die so ausgeblendete Zelle ein Datum, eine Währung oder sonst ein
> etwas spezielleres Format hatte wird es schwierig, dieses wieder
> herzustellen.

Das Problem der ursprünglichen Zellenformatierung habe ich auch gesehen,
aber erst mal die generelle Funktionalität aufgezeigt

> In letzter Konsequenz wäre dann wohl eine Dummy-Tabelle vonnöten, in welche
> die ausgeblendeten Werte verschoben und bei Bedarf mitsamt der kompletten
> Formatierung wieder geholt werden.

Daran dachte ich auch, oder wie in einem älteren Thread den Bereich in einer
globalen Collection zu hinterlegen ;-)

> Ob dieser Aufwand den Nutzen allerdins wert ist, kann nur Christian
> beantworten.

Dem stimme ich 100%ig zu :-)

Man könnte auch anstatt das Zahlenformat zu ändern auf die Schriftfarbe zugreifen.
Ich gehe diesmal wieder davon aus, dass alle Zellen mit schwarzer Schriftfarbe formatiert
sind und einen weißen Zellenhintergrund haben.
Bei unterschiedlichen Farben ergibt sich wieder das gleiche Problem wie mit dem Zahlenformat:

Public Function ZelleAusblenden(wks As Worksheet, _
lngRow As Long, intCol As Integer, _
Optional strVisible As String) As Variant
With wks.Cells(lngRow, intCol)

If strVisible = "" Then
strVisible = .Font.ColorIndex <> 0
End If
.Font.ColorIndex = IIf(strVisible = "Falsch", 2, 0)
If .Font.ColorIndex <> 0 Then
ZelleAusblenden = .Value
Else
ZelleAusblenden = "Zelle ausgeblendet"


End If
End With
End Function

> Vielleicht gibt es für sein Problem noch andere Lösungen, wenn er uns


> mitteilt, was der Hintergrund seiner Frage ist.

Bin auch auf seine Rückmeldung gespannt.

Thomas Ramel

unread,
Jul 1, 2004, 8:21:52 AM7/1/04
to
Grüezi Melanie

Melanie Breden schrieb am 01.07.2004

>> In letzter Konsequenz wäre dann wohl eine Dummy-Tabelle vonnöten, in


>> welche die ausgeblendeten Werte verschoben und bei Bedarf mitsamt der
>> kompletten Formatierung wieder geholt werden.
>
> Daran dachte ich auch, oder wie in einem älteren Thread den Bereich in
> einer globalen Collection zu hinterlegen ;-)

Ja, ich entsinne mich der Beiträge bestens..;-)

> Man könnte auch anstatt das Zahlenformat zu ändern auf die Schriftfarbe
> zugreifen. Ich gehe diesmal wieder davon aus, dass alle Zellen mit
> schwarzer Schriftfarbe formatiert sind und einen weißen
> Zellenhintergrund haben. Bei unterschiedlichen Farben ergibt sich wieder
> das gleiche Problem wie mit dem Zahlenformat:

Noch etwas allgemeiner, nämlich unabhängig von der jeweiligen
Hintergrundfarbe wäre die folgende Variante, die 'nur' noch das Manko hat,
dass der Hintergrund einer Zelle nicht schwarz sein sollte, da beim
Einblenden die Farbe generell auf 'Automatisch' gesetzt wird:

Public Function ZelleAusblenden(wks As Worksheet, _
lngRow As Long, intCol As Integer, _
Optional strVisible As String) As Variant
With wks.Cells(lngRow, intCol)
If strVisible = "" Then

ZelleAusblenden = IIf(.Font.ColorIndex = _
.Interior.ColorIndex, "Zelle ausgeblendet", .Value)
ElseIf strVisible = "Falsch" Then
.Font.ColorIndex = xlAutomatic
Else
.Font.ColorIndex = .Interior.ColorIndex


End If
End With
End Function

Nun denke ich aber dass es an der Zeit ist, dass Christian die angebotenen
Varianten mal ansieht und testet...

Melanie Breden

unread,
Jul 1, 2004, 10:11:49 AM7/1/04
to
Hallo Thomas,

Thomas Ramel schrieb:


> Noch etwas allgemeiner, nämlich unabhängig von der jeweiligen
> Hintergrundfarbe wäre die folgende Variante, die 'nur' noch das Manko hat,
> dass der Hintergrund einer Zelle nicht schwarz sein sollte, da beim
> Einblenden die Farbe generell auf 'Automatisch' gesetzt wird:

bei deiner Funktion erhalte ich in der Zeile
.Font.ColorIndex = .Interior.ColorIndex
eine Fehlermeldung, wenn die Hintergrundfarbe auf automatisch steht :-(

Auch stimmt die Ausführung bei False nicht mehr.
False gibt an, dass die Zelle ausgeblendet werden soll (Visible=False)

Habe die Funktion noch mal geändert:

Public Function ZelleAusblenden(wks As Worksheet, _
lngRow As Long, intCol As Integer, _
Optional strVisible As String) As Variant
With wks.Cells(lngRow, intCol)

Select Case strVisible
Case "Wahr" ' Zelle einblenden
.Font.ColorIndex = xlAutomatic
Case "Falsch" ' Zelle ausblenden
.Font.ColorIndex = IIf(.Interior.ColorIndex < 0, xlNo, _
.Interior.ColorIndex)
Case "" ' Wert liefern


ZelleAusblenden = IIf(.Font.ColorIndex = _
.Interior.ColorIndex, "Zelle ausgeblendet", .Value)

End Select
End With
End Function

Thomas Ramel

unread,
Jul 1, 2004, 10:50:39 AM7/1/04
to
Grüezi Melanie

Melanie Breden schrieb am 01.07.2004

> bei deiner Funktion erhalte ich in der Zeile


> .Font.ColorIndex = .Interior.ColorIndex
> eine Fehlermeldung, wenn die Hintergrundfarbe auf automatisch steht :-(

Mift!
*Den* Fall hatte ic hnicht getestet ;-)

> Auch stimmt die Ausführung bei False nicht mehr.
> False gibt an, dass die Zelle ausgeblendet werden soll (Visible=False)

Zumindest ist sich nicht mehr wi vorher, das stimmt.
Ich hatte mich da am Funktionsnamen orientiert und bin wohl etwas
durcheinander geraten:

ZelleAusblenden() war dann für mich 'True'

Aber ich denke, wir lassen die Feinheiten mal bis zur Stellungnahme von
Christian bleiben.

0 new messages