Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Activecell.offset

Forumthread: Activecell.offset

Activecell.offset
04.09.2007 10:47:00
Felix
Hallo,
ich habe zwei Probleme:
1.) ich habe 5 Zeilen (E63:E67). Ich möchte jeweils den Wert aus diesen Zeilen per Makro auslesen. Es kann jedoch sein, dass z.B. nur in der 1. und 3. Zeile oder aber auch in der 4., 5., und 2. Zeile was steht. Das ganze ist also recht flexibel. Wie lese ich nur die Zeilen ein, die auch Werte haben? Mit activecell.offset und while könnte es irgendwie gehen. Ich kriege es aber nicht hin.
2.) Ist es eigentlich möglich auch in VBA relativ zu refernzieren. Falls ich in meinem obigen Bespiel die Zeilen verschiede, muss ich ja alles per Hand wieder im Makro umändern. Gibt es da irgendwie eine Möglichkeit?
Vielen Dank für eure Hilfe
Gruß
Felix

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Activecell.offset
04.09.2007 12:05:00
Ralf
Hi Felix,
Zu 1.
z.Bsp. so:
For x = 63 to 97
if range("E" & x") "" then....
next x
Zu 2.
Indem Du Namen verwendest. Dann kannst Du die Zellen verschieben und das Makro nimmt trotzdem Bezug darauf. Im Bsp. verwendete Namen: Brutto, Netto, MwSt.
Verwendung im Makro:
Range("Brutto").FormulaR1C1 = "=Netto+Netto*(Mwst/100)"
Ciao, Ralf

Anzeige
AW: Activecell.offset
04.09.2007 12:14:44
Daniel
Hi
zu 1
wenn du per Makro nur die Zellen auslesen möchtest, in denen auch ein Wert steht, dann könnte das über diesen Code gehen:
For each Zelle in Range("E63:E67").specialcells(xlcelltypeconstants)
'... Dann dein Code
Next

geht aber nur, wenn die Zellen auch tatsächlich leer sind, und keine Formeln drinstehen, die einen Leerstring erzeugen.
zu 2
mir ist nicht bekannt, das es zwischen Excel und VBA eine Verbindung gibt, so daß Zellverschiebungen oder Löschungen im VBA-Code aktualisiert werden.
folgende Workarounds fallen mir aber dazu ein:
- du vergibst dem Zellbereich in Excel einen Namen (z.b. MEINBEREICH)
- du beziehst dich im VBA-Code dann auf diesen Namen, d.h. anstelle von Range("E63:E67") schreibst du dann Range("MEINBEREICH")
- du hast für diesen Bereich eine eindeutige Überschrift, die du per Find-Funktion suchst und den Zellbereich relativ zum Suchergebnis referenzierst
Beispiel:
- in Zelle E62 steht der Text "xxx"
- dann kannst du über folgenden Code den Zellbereich E63:E67 einer Objektvariable zuordnen:

dim MeinBereich as Range
set Meinbereich = cells.find(what:="xxx", lookat:=xlwhole).offset(1,0).resize(5,1)


Gruß, Daniel

Anzeige
AW: Activecell.offset
04.09.2007 12:17:00
Felix
Hallo ihr beiden,
vielen Dank für die schnellen Antworten. Das hilft enorm!!!
Gruß
Felix
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige