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

Zellinhalt eines Bereiches mit VBA löschen

6,684 views
Skip to first unread message

Winfried Sauer

unread,
Sep 29, 2009, 8:10:44 AM9/29/09
to
Hallo NG,

ich habe in "Tabelle1" (zu Testzwecken ) einen CommandButton, mit dem ich
durch Klicken in der "Tabelle2" den Inhalt eines Zellbereichs l�schen will.
Der Code lautet:

Private Sub CommandButton1_Click()

Worksheets("Tabelle2").Activate
ActiveWorkbook.Sheets("Tabelle2").Range(Cells(1, 1), Cells(5,
1)).ClearContents

End Sub

1.) Warum bekomme ich den Laufzeitfehler 1004 "Anwendungs- oder
objektdefinierter Fehler?
2.) Warum bekomme ich keinen Fehler, wenn ich den Code in "Tabelle1"
anwende? Also

Private Sub CommandButton1_Click()

Worksheets("Tabelle1").Activate
ActiveWorkbook.Sheets("Tabelle1").Range(Cells(1, 1), Cells(5,
1)).ClearContents

End Sub


Claus Busch

unread,
Sep 29, 2009, 8:29:40 AM9/29/09
to
Hallo Winfried,

Am Tue, 29 Sep 2009 14:10:44 +0200 schrieb Winfried Sauer:

> Private Sub CommandButton1_Click()
>
> Worksheets("Tabelle2").Activate
> ActiveWorkbook.Sheets("Tabelle2").Range(Cells(1, 1), Cells(5,
> 1)).ClearContents
>
> End Sub

probiers mal so:

Private Sub CommandButton1_Click()
With Sheets("Tabelle2")
.Range(.Cells(1, 1), .Cells(5, 1)).ClearContents
End With
End Sub


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

Andreas Killer

unread,
Sep 29, 2009, 8:47:27 AM9/29/09
to
Winfried Sauer schrieb:

> ich habe in "Tabelle1" (zu Testzwecken ) einen CommandButton, mit dem ich

> durch Klicken in der "Tabelle2" den Inhalt eines Zellbereichs lᅵschen will.
...


> 1.) Warum bekomme ich den Laufzeitfehler 1004 "Anwendungs- oder
> objektdefinierter Fehler?

Mehrere Grᅵnde mᅵglich, der wahrscheinlichste ist das Du den Code im
Codemodul der Tabelle hast:

Weil Du a.) nicht aus dem aktuellen Blatt (Tabelle1) heraus die
Tabelle2 aktivieren und b.) auch ansonsten keine Bereiche manipulieren
kannst.

> 2.) Warum bekomme ich keinen Fehler, wenn ich den Code in "Tabelle1"
> anwende? Also

Weil Du den Code im Codemodul der aktiven Tabelle ausfᅵhrst. Daher
wird das Activate "ignoriert", weil sie schon aktiv ist und auch die
sonstigen Bezᅵge ala ActiveWorkbook.Sheets("Tabelle1") fallen hinten
rᅵber aus dem gleichen Grund.

Merke: Code im Codemodul eines Blattes kann/darf nur das aktuelle
Blatt ᅵndern!

Willst Du das trotzdem machen, muss der Code in ein normales Modul und
schon kannst Du ihn ausfᅵhren.

Noch 2 Dinge:

a.) das Activate kannst Du Dir schenken/lᅵschen (genau wie Select)
b.) Tausche den Commandbutton (aus der Symbolleiste Steuerelemente)
durch eine Schaltflᅵche (aus der Symbolleiste Formular) zum ausfᅵhren
des Makros.

Andreas.

Peter Schirmer

unread,
Sep 29, 2009, 2:39:31 PM9/29/09
to
Worksheets("Tabelle1").Range("A1:B2").Select
Selection.ClearContents


;)

Andreas Killer

unread,
Sep 29, 2009, 2:00:29 PM9/29/09
to
Peter Schirmer schrieb:

Ist hier "oben"? :-))

> Worksheets("Tabelle1").Range("A1:B2").Select
> Selection.ClearContents

Nun ja, wie soll ich sagen: Unfug? ;-)

a.) Ist ein Select drin was unn�tig ist
b.) Entspricht Range(.Cells(1, 1), .Cells(5, 1)) A1:A5 und nicht A1:B2
c.) Geht der Code ebenso wenig im Codemodul Tabelle2
d.) War die Frage wieso es einen RTE 1004 gibt
e.) Mach ich jetzt Feierabend, aber nur f�r heute. .-)

Andreas.

Thomas Ramel

unread,
Oct 1, 2009, 8:16:47 PM10/1/09
to
Grüezi Andreas

On 29 Sep., 20:47, Andreas Killer <andreas.kil...@gmx.net> wrote:
> Winfried Sauer schrieb:
>
> > ich habe in "Tabelle1"  (zu Testzwecken ) einen CommandButton, mit dem ich

> > durch Klicken in der "Tabelle2" den Inhalt eines Zellbereichs löschen will.


> ...
> > 1.) Warum bekomme ich den Laufzeitfehler 1004 "Anwendungs- oder
> > objektdefinierter Fehler?
>

> Mehrere Gründe möglich, der wahrscheinlichste ist das Du den Code im
> Codemodul der Tabelle hast:

Nein, ganz einfach weil die Cells() nicht sauber referenziert sind,
sie Claus es dann gezeigt hat klappt es nämlich problemlos.
Cells() bezog sich im obigen Fall dann auf das aktive Tabellenblatt.

> Weil Du a.) nicht aus dem aktuellen Blatt (Tabelle1) heraus die
> Tabelle2 aktivieren und b.) auch ansonsten keine Bereiche manipulieren
> kannst.

Das ist IMO schlichtweg falsch - wenn sauber referenziert wird klappt
das bestens.

> > 2.) Warum bekomme ich keinen Fehler, wenn ich den Code in "Tabelle1"
> > anwende? Also
>

> Weil Du den Code im Codemodul der aktiven Tabelle ausführst. Daher


> wird das Activate "ignoriert", weil sie schon aktiv ist und auch die

> sonstigen Bezüge ala ActiveWorkbook.Sheets("Tabelle1") fallen hinten
> rüber aus dem gleichen Grund.


>
> Merke: Code im Codemodul eines Blattes kann/darf nur das aktuelle

> Blatt ändern!

Nein, auch hier muss ich nochmals widersprechen - mir korrekter
Refernzierung spielt das keine Rolle.


Mit freundlichen Grüssen aus Taiwan

Thomas Ramel
- MVP für MS-Excel -

Andreas Killer

unread,
Oct 2, 2009, 6:02:53 AM10/2/09
to
On 2 Okt., 02:16, Thomas Ramel <thomas.ra...@gmail.com> wrote:

> > Mehrere Gründe möglich, der wahrscheinlichste ist das Du den Code im
> > Codemodul der Tabelle hast:
> Nein, ganz einfach weil die Cells() nicht sauber referenziert sind,
> sie Claus es dann gezeigt hat klappt es nämlich problemlos.
> Cells() bezog sich im obigen Fall dann auf das aktive Tabellenblatt.

Hey, ist ja doch noch jemand wach! ;-))

Ich hab Murks verzählt, hast völlig recht.

> Mit freundlichen Grüssen aus Taiwan

Taiwan? Bist Du ausgewandert? :-))

Andreas.

Thomas Ramel

unread,
Oct 4, 2009, 2:23:18 AM10/4/09
to
Gr�ezi Andreas

Andreas Killer schrieb am 02.10.2009

> On 2 Okt., 02:16, Thomas Ramel <thomas.ra...@gmail.com> wrote:
>

>>> Mehrere Gr�nde m�glich, der wahrscheinlichste ist das Du den Code im


>>> Codemodul der Tabelle hast:
>> Nein, ganz einfach weil die Cells() nicht sauber referenziert sind,

>> sie Claus es dann gezeigt hat klappt es n�mlich problemlos.


>> Cells() bezog sich im obigen Fall dann auf das aktive Tabellenblatt.
> Hey, ist ja doch noch jemand wach! ;-))

Neee, schon wieder ;-)

Hier wars bereits 8 Uhr in der Fr�h

>> Mit freundlichen Gr�ssen aus Taiwan


> Taiwan? Bist Du ausgewandert? :-))

Nein, bloss eine Woche Arbeit hat mich dahin gezogen - inzwischen bin ich
wieder zu Hause :-)


Mit freundlichen Gr�ssen
Thomas Ramel

--
- MVP f�r Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]

0 new messages