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

Ausgeblendete Zellen nicht per Code auslesbar? (Excl 2010)

220 views
Skip to first unread message

Stefan Dase

unread,
Jul 5, 2011, 12:05:37 PM7/5/11
to
Hallo allerseits,

wir verwenden in einem Projekt eine Arbeitsmappe zur Erfassung der
Arbeitszeiten von Mitarbeitern. Diese werden dann in einem .Net-Programm
ausgelesen und aufbereitet.

Nun wurde eine Spalte mit einem benannten Bereich ausgeblendet, seitdem
werden nur noch leere Werte im Programm zurᅵckgeliefert:

Me.excelWorksheetTimecard.Range("Dates").Cells(row, 1).Text

Kᅵnnen ausgeblendete Zellen/Bereiche nicht per Code ausgelesen werden?
Wenn ich die Spalte einblende, klappt es wunderbar...

Vielen Dank fᅵr jeden Hinweis,
Stefan

Carlos Naplos

unread,
Jul 6, 2011, 12:33:31 AM7/6/11
to
Hallo Stefan

Du kᅵnntest die Spalte vor dem Auslesen einblenden und danach wieder
ausblenden.

Etwa:

Application.ScreenUpdating = False
Me.excelWorksheetTimecard.Range("Dates").EntireColumn.Hidden = False
Auslesen(Me.excelWorksheetTimecard.Range("Dates").Cells(row, 1).Text)
Me.excelWorksheetTimecard.Range("Dates").EntireColumn.Hidden = True
Application.ScreenUpdating = True

Gruᅵ
Carlos

Alexander Wolff

unread,
Jul 9, 2011, 7:09:20 AM7/9/11
to
>> wir verwenden in einem Projekt eine Arbeitsmappe zur Erfassung
>> der
>> Arbeitszeiten von Mitarbeitern. Diese werden dann in einem
>> .Net-Programm
>> ausgelesen und aufbereitet.
>>
>> Nun wurde eine Spalte mit einem benannten Bereich ausgeblendet,
>> seitdem
>> werden nur noch leere Werte im Programm zurückgeliefert:
>>
>> Me.excelWorksheetTimecard.Range("Dates").Cells(row, 1).Text
>>
>> Können ausgeblendete Zellen/Bereiche nicht per Code ausgelesen
>> werden?
>> Wenn ich die Spalte einblende, klappt es wunderbar...

-------------------------------------

> Du könntest die Spalte vor dem Auslesen einblenden und danach
> wieder ausblenden.

> Etwa:

> Application.ScreenUpdating = False
> Me.excelWorksheetTimecard.Range("Dates").EntireColumn.Hidden =
> False
> Auslesen(Me.excelWorksheetTimecard.Range("Dates").Cells(row,
> 1).Text)
> Me.excelWorksheetTimecard.Range("Dates").EntireColumn.Hidden =
> True
> Application.ScreenUpdating = True

-------------------------------------

Das ist zwar recht elegant, aber letztlich unübersichtlich und
dabei ist es auch noch Code, der aufgrund eines möglichen
Zustands, aber nicht immer ausgeführt werden sollte. Denn: Der
Code blendet am Ende immer aus, auch wenn das vorher nicht der
Fall war.

Wenigstens sollte man die einzelnen Spalten/Zeilen auf Hidden=True
testen, bevor man überhaupt diese 5 Zeilen durchläuft.

Besser wäre es, wenn man die physischen Zellen direkt behandelt.
--
Moin+Gruss Alexander - www.xxcl.de -
mso2000sp3 -50---5----60---5----702

Claus Busch

unread,
Jul 9, 2011, 8:40:45 AM7/9/11
to
Hallo Stefan,

Am Tue, 05 Jul 2011 18:05:37 +0200 schrieb Stefan Dase:

> Nun wurde eine Spalte mit einem benannten Bereich ausgeblendet, seitdem

> werden nur noch leere Werte im Programm zur�ckgeliefert:
>
> Me.excelWorksheetTimecard.Range("Dates").Cells(row, 1).Text
>
> K�nnen ausgeblendete Zellen/Bereiche nicht per Code ausgelesen werden?

> Wenn ich die Spalte einblende, klappt es wunderbar...

excel-intern kann ich mit VBA auch ausgeblendete Bereich auslesen.
Vielleicht h�ngt es am Referenzieren? Und ich w�rde auch kein
Schl�sselwort als Variablenname nehmen.


Mit freundlichen Gr�ssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Stefan Dase

unread,
Jul 11, 2011, 5:19:53 AM7/11/11
to
Am 09.07.2011 13:09, schrieb Alexander Wolff:
>(...)

> Besser wäre es, wenn man die physischen Zellen direkt behandelt.

Ich versuche mal, die Zellen aus dem benannten Bereich zu ermitteln und
dann auszulesen.

Bis dahin erst einmal Dank an euch beide,
Stefan

Carlos Naplos

unread,
Jul 13, 2011, 10:23:22 AM7/13/11
to

schrieb Alexander Wolff am 09.07.2011 13:09:
>
> -------------------------------------
>
>> Du könntest die Spalte vor dem Auslesen einblenden und danach wieder
>> ausblenden.
>
>> Etwa:
>
>> Application.ScreenUpdating = False
>> Me.excelWorksheetTimecard.Range("Dates").EntireColumn.Hidden = False
>> Auslesen(Me.excelWorksheetTimecard.Range("Dates").Cells(row, 1).Text)
>> Me.excelWorksheetTimecard.Range("Dates").EntireColumn.Hidden = True
>> Application.ScreenUpdating = True
>
> -------------------------------------
>
> Das ist zwar recht elegant, aber letztlich unübersichtlich und dabei ist
> es auch noch Code, der aufgrund eines möglichen Zustands, aber nicht
> immer ausgeführt werden sollte. Denn: Der Code blendet am Ende immer
> aus, auch wenn das vorher nicht der Fall war.
>
> Wenigstens sollte man die einzelnen Spalten/Zeilen auf Hidden=True
> testen, bevor man überhaupt diese 5 Zeilen durchläuft.
>
> Besser wäre es, wenn man die physischen Zellen direkt behandelt.

Nun ja, "Eleganz" ist - glaube ich - in der Datenverarbeitungstheorie
nicht so genau definiert.

Auch sollte man bei fünf Codezeilen noch nicht die Übersicht verlieren.

Zum dritten ist der Code nicht patentiert, frei verfügbar und darf von
jedem nach Belieben abgeändert werden, so dass der Benutzer z.B. die
Möglichkeit hat, die vierte Zeile so anzupassen, dass genau das
ausgeblendet wird, was er möchte.

MfG
CN

0 new messages