Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kann dieses Makro funktionieren?

Forumthread: Kann dieses Makro funktionieren?

Kann dieses Makro funktionieren?
30.04.2003 12:01:04
Rolf Dätwyler
Hallo Leute,

Ich habe folgendes Makro:

For i = 1 To versetz
Selection.ClearContents
ActiveCell.Offset(1, 0).Activate
Next i

versetz wurde vorher deffiniert als Variable (Dim versetz as Variant)
Der Wert von Variant ist eine Zahl(Mit Formel berechnet), die sich in Zelle H2 befindet.

Funktion:

Aus einer Liste sollen an einer Bestimmten Stelle Zahlen gelöscht werden (NICHT die Zellen)und zwar gena so viele Zahlen, wie als Wert in der Zelle H2 steht. Bsp:

Wert Zelle H2=2

Vorher:

10
20
30
40
50

Ergebniss:

10


40
50

Funktioniert das?Wenn nicht, was muss ich genau verändern?

Danke für die immer sehr hilfreichen Antworten!

Rolf


Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Nö ;-)
30.04.2003 12:08:42
Nike

Hi,
versuchs mal so:

Bye

Nike

Ja!
30.04.2003 12:44:00
Martin Beck

Hallo Rolf,

ja, und zwar dann, wenn bei Start des Makros die aktive Zelle die erste Zelle ist, deren Inhalt gelöscht werden soll.

Der Code ist jedoch prinzipiell schlecht. In der Schleife solltest Du Sachen wie Selection, ActiveCell und offset tunlichst vermeiden.

Gruß
Martin Beck

Anzeige
Re: Nö ;-)
30.04.2003 12:45:51
Rolf

Hi Nike,

Ist etwas dran, das Funktioniert, ist aber nicht ganz das, was ich brauche. Ich bin in Makros noch nicht so gut, aber man lernt immer wieder etwas dazu!

Wo genau ist der Wert der Zelle H2 geblieben? Die Zelle, die Angibt, wieviele Zahlen gelöscht werden sollen?
Und wenn es geht, hast du noch einige Erklärungen zu

lngAnz
lngStep
lngZeil

Danke!

Rolf

Anzeige
Re: An Martin Beck
30.04.2003 12:48:19
Rolf

Hallo Martin,

Ist vileicht eine dumme Frage, aber wieso sollte man Sachen wie Selection, ActiveCell und offset vermeiden? Was ist der Grund?

Danke für deine Antwort!

Rolf

Select, ActiveCell, Offset
30.04.2003 12:55:04
Martin Beck

Hallo Rolf,

das hat Hans grundsätzlich und ausführlich in seinen XlBasics beschrieben, nachzulesen hier: http://www.xlfaq.herber.de/

Stichwortartig einige Anmerkungen:

1. VBA ist eine objektorientierte Programmiersprache. Man sollte daher die Objekte (in Deinem Fall Zellen oder Ranges) korrekt referenzieren.

2. Durch Select wird der Code langsam und unübersichtlich.

3. Um den Code nachvollziehen/ändern zu können, muß man immer wissen, was gerade selected ist oder was die ActiveCell ist.

4. Die Fehlersuche wird deutlich schwieriger.

Gruß
Martin Beck

Anzeige
Re: Nö ;-)
30.04.2003 13:16:34
Nike

Hi,
ich hab den Wert aus H2 einfach mal an die Funktion übergeben.
Könnte man auch mit dem folgenden Code aufrufen...
Sub test()
loesch (Range("H2")
End Sub

Function loesch(lngAnz As long)
Dim lngStep As Long
For lngStep = lngAnz To lngAnz + lngAnz
Cells(lngStep, 1).Clear
Next
End Function
'lngAnz As long ist eine Variable vom Typ long,
'da Integer ab ca. 32000 Zeilen Probleme bereiten würde...
'lngStep ist der Bereich in dem editiert wird.
'DieSchrittweite ist automatisch 1 (Step 1)
die könnte man auch mit

For lngStep = lngAnz To lngAnz + lngAnz Step 2

auf 2 hochstellen

Bye

Nike

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige