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

VBA Makro Zeile für Zeile ausführen

1,922 views
Skip to first unread message

Robert Hawkins

unread,
May 25, 2003, 11:37:55 AM5/25/03
to
Hallo NG

Ich habe ein Makro welches ich in einer Tabelle in jeder
Zeile in derselben Spalte je einmal ausführen will.
Die Tabelle hat 1000 Zeilen.

Ich bin noch nicht so fit in VBA, wäre nett wenn die
Anwort für mich vereinfacht formuliert sein könnte.

Wäre sehr dankbar für Eure Hilfe.

Danke und Gruss
Robert

Eberhard Funke

unread,
May 25, 2003, 12:21:24 PM5/25/03
to
On Sun, 25 May 2003 08:37:55 -0700, "Robert Hawkins"
<haw...@gmx.nospam.ch> wrote:

>Hallo NG
>
>Ich habe ein Makro welches ich in einer Tabelle in jeder=20
>Zeile in derselben Spalte je einmal ausf=FChren will.


>Die Tabelle hat 1000 Zeilen.
>

>Ich bin noch nicht so fit in VBA, w=E4re nett wenn die=20
>Anwort f=FCr mich vereinfacht formuliert sein k=F6nnte.
>
>W=E4re sehr dankbar f=FCr Eure Hilfe.
>
>Danke und Gruss
>Robert

Hallo Robert,

ich gehe mal davon aus, dass es sich um die Spalte A handelt.

In A1 steht eine Überschrift, für die das Makro nicht ausgeführt
werden soll, es beginnt also erst mit A2.

Mein DemoMakro ändert in jeder Zelle der Spalte A die Schriftfarbe auf
rot, wenn der Zellenwert = 3 ist. Dieses Makro musst Du durch Deines
ersetzen.

Sub ImmerWieder()
Dim LastRow As Integer
Dim Zle As Integer
LastRow = Range("A65536").End(xlUp).Row
For Zle = 2 To LastRow
'++++++++++++
'Mein Makro
If Range("A" & Zle).Value = 3 Then
Range("A" & Zle).Font.ColorIndex = 3
End If
'Ende meines Makro
'++++++++++++++++++
Next
End Sub

Wenn es Probleme gibt, poste Dein Makro hier in der NG.
--
Als XL-Lehrling grüßt
Eberhard mit XL 2000

Klaus Brauner

unread,
May 25, 2003, 12:39:50 PM5/25/03
to

Hallo Robert,

Hier einBeispiel, wie Du von Zelle A1 bis Zelle A1000 den Hintergrund gelb
färbst.

Sub HintergrundGelb()
Dim z As Integer ' Das ist die Zeile
For z = 1 To 1000 'Von Zeile 1 bis Zeile 1000
Cells(z, 1).Activate 'Hier wird die Zelle A1 aktiviert (Zelle mit
der Zeile z=1 und der Spalte 1
ActiveCell.Interior.ColorIndex = 36 ' Die aktive Zelle wird gelb
eingefärbt
Next z 'Rücksprung um das Makro noch mal zu
durchlaufen , nur jetzt mit der Zeile z=2 und das bis z= 1000
End Sub

Ich hoffe, ich habe mich verständlich ausgedrückt.


Thomas Ramel

unread,
May 25, 2003, 12:46:17 PM5/25/03
to
Grüezi Klaus

Klaus Brauner schrieb:


>
> Sub HintergrundGelb()
> Dim z As Integer ' Das ist die Zeile
> For z = 1 To 1000 'Von Zeile 1 bis Zeile 1000
> Cells(z, 1).Activate 'Hier wird die Zelle A1 aktiviert (Zelle mit
> der Zeile z=1 und der Spalte 1
> ActiveCell.Interior.ColorIndex = 36 ' Die aktive Zelle wird gelb
> eingefärbt
> Next z 'Rücksprung um das Makro noch mal zu
> durchlaufen , nur jetzt mit der Zeile z=2 und das bis z= 1000
> End Sub

Hmmm, und warum nicht:

Range(Cells(1,1),Cells(1000,1)).Interior.ColorIndex = 36

...geht direkt,schneller und erst noch ohne 'Flackern'

--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-3 / xl2000 SP-3]

Klaus Brauner

unread,
May 25, 2003, 1:13:06 PM5/25/03
to

"Thomas Ramel" <t.r...@mvps.org> schrieb im Newsbeitrag
news:3ED0F359...@mvps.org...
> Grüezi Klaus

>
>> Hmmm, und warum nicht:
>
> Range(Cells(1,1),Cells(1000,1)).Interior.ColorIndex = 36
>
> ...geht direkt,schneller und erst noch ohne 'Flackern'
>

Hallo Thomas,

das ist die natürlich in diesem Falle die schnellste und einfachste Art. Ich
weiss aber nicht, was Robert wirklich Zelle für Zelle machen möchte. Das
Färben war ja nur der Ersatz füe sein Makro.

Liebe Grüße Klaus


Rainer Georg Blankenagel

unread,
May 25, 2003, 4:25:44 PM5/25/03
to
"Klaus Brauner" <Klaus....@email.de>:

>Ich
>weiss aber nicht, was Robert wirklich Zelle für Zelle machen möchte. Das
>Färben war ja nur der Ersatz füe sein Makro.

Wenn das auszuführende Makro schon existiert, und es nur um das
*Ausführen* dieses Makros in den Zellen A1 bis A1000 geht (so hatte ich
den Originalposter verstanden), ist die einfachste Methode wohl
folgende:

|Dim Zelle As Range
|
|For Each Zelle In Range("A1:A1000")
| Zelle.Activate
| Makroname
|Next Zelle


HTH,

Rainer

Thomas Ramel

unread,
May 26, 2003, 12:51:48 AM5/26/03
to
Grüezi Klaus

Klaus Brauner schrieb:
>>


>>>Hmmm, und warum nicht:
>>Range(Cells(1,1),Cells(1000,1)).Interior.ColorIndex = 36
>

> das ist die natürlich in diesem Falle die schnellste und einfachste Art. Ich
> weiss aber nicht, was Robert wirklich Zelle für Zelle machen möchte. Das
> Färben war ja nur der Ersatz füe sein Makro.

Ja; das war mir schon klar...

...doch auch 'alles andere' kann ohne .Activate durch direktes Ansprechen
des Ranges ausgeführt werden, ohne dass dabei der Cursor Gassi geführt
werden muss. Das wollte ich eigentlich aufzeigen...

Robert Hawkins

unread,
May 26, 2003, 8:23:01 AM5/26/03
to
Hallo Jungs,

besten Dank für die zahlreichen Lösungsvorschläge.
Für mich ist die Lösung von Rainer am einfachsten, ich
werde aber, um schlussendlich nur ein Makro zu verwenden,
die anderen Lösungen testen.

Hier übrigens der Code der nur einzeln pro Zelle
angewendet werden kann.
Selection.Hyperlinks(1).TextToDisplay = ""

Damit wird die Adresse eines Hyperlinks wieder als Text
angezeigt. So habe ich die Möglichkeit den Dateinamen
auszulesen.

Vielen Dank und Gruss
Robert

Rainer Georg Blankenagel

unread,
May 27, 2003, 3:57:32 AM5/27/03
to
"Robert Hawkins" <Haw...@gmx.nospam.ch>:

>besten Dank für die zahlreichen Lösungsvorschläge.
>Für mich ist die Lösung von Rainer am einfachsten, ich
>werde aber, um schlussendlich nur ein Makro zu verwenden,
>die anderen Lösungen testen.
>
>Hier übrigens der Code der nur einzeln pro Zelle
>angewendet werden kann.
>Selection.Hyperlinks(1).TextToDisplay = ""

Ungetestet, aber:

|Zelle.Hyperlinks(1).TextToDisplay = ""

sollte nach meinem Verständnis eigentlich funktionieren, wenn es im Code
aus <beaf70ea68dc165e...@reniar.leganeknalb.de> verwendet
wird. Das wäre dann eine Lösung innerhalb eines einzelnen Makros.


Rainer

0 new messages