VBA .adress()

Bild

Betrifft: VBA .adress() von: Karl
Geschrieben am: 11.03.2005 19:26:23

Hi,

Sorry das ich wieder was reinstelle, aber komme bei meinem Problem nicht wirklich weiter.

Ich möchte in der VLookup Formel meines Makro gerne die Lookup Zelle (hier: R8C3) nach Durchlauf der Schleife ändern (d.h. R9C3, R10C3, RjC3 wobei j die Zeilenvariable ist).

Wie kann ich das anstellen? Habe schon R[j]C3 und ähnliches probiert funktioniert aber nicht. "R" &j &"C3" funktioniert bei mir auch nicht. Bekomme die Fehlermeldung Compile Error: Expected end of statement.

Dim v As Integer
Dim i As Integer
Dim j As Integer

i = 0
j = 0
v = 8

For i = 0 To 4
For j = 0 To 100
ActiveSheet.Range("E" & v + j).Offset(0, i).FormulaR1C1 = "=VLOOKUP(R8C3,Company1!R[-7]:R[65528]," & v + i + 1 & ",0)"

Next j
Next i

Den Tip Cells und adress zu benutzen habe ich leider nicht verstanden und die VBA hilfe ist auch nicht wirklich gut.

1) Könnte mir bitte (BBBBIIIIIITTTTTEEEEEEE) jemand erklären (idiotensicher) wie
ich diese Bezüge herstellen kann?

2) Wie kann ich den Bereich (Company1!R[-7]:R[65528]) fixieren?

Vielen Dank im Voraus Ihr Excel VBA Hacker!

Karl

Bild


Betrifft: AW: VBA .adress() von: Luc :-?
Geschrieben am: 11.03.2005 19:58:15

Hi Karl,
wo kommt der Code her bei VBA-Unkenntnis lt. Eigeneinschätzung? Sieht verdammt nach MakroRecorder aus! Die Standardeinstellung für die Zelladressierung bei Excel ist A1 und nicht Z1S1. Trotzdem erzeugt der MakroRecorder mit konstanter Boshaftigkeit Z1S1-Adressbezüge (engl. R1C1). Davon musst du dich lösen, wenn du eine vernünftige Programmierung zustande bringen willst. Also nicht .FormulaR1C1, sondern nur .Formula, wenn du die Arbeitsblattformel englisch, oder .FormulaLocal, wenn du die sie deutsch eintragen willst. Dann kannst du auch Range("E" & v + j) verwenden. Die xlOnLine-Hilfe empfiehlt allerdings, nach Möglichkeit die Cells-Eigenschaft von Range zu benutzen, also in diesem Fall Cells(v + j, 5). Und dann kannst du auch weitgehend den umständlichen Quatsch mit dem Offset lassen. Sowas wird genauso wie ein vorheriges Selektieren der Zelle (.Select, auch vom MakroRecorder her) nur selten gebraucht. Das sind so Dinge, an denen man die MakroRecorder-Benutzung erkennt. Der hat nämlich früher ganz genau deine Mausbewegungen aufgezeichnet, so dass sie beim Abspielen wiederholt wurden (ideal für Demos!). Aber MS hat das dann später aufgegeben. Nur solche Sachen sind noch Reste davon. Also versuch mal, deine Formel entsprechend umzustellen. Wenn das nicht klappt, sehen wir weiter.
Gruß Luc :-?


Bild


Betrifft: AW: VBA .adress() von: Karl
Geschrieben am: 11.03.2005 21:33:30

Hi Luc,

Vielen Dank für die Erklärung, so langsam kommt licht ins dunkel. Ich habe die Formel jetzt grändert, bekomme aber immer noch denselben Fehler.

For i = 0 To 4
For j = 0 To 100
ActiveSheet.Range("E" & v + j).Offset(0, i).Formula = "=VLOOKUP(Cells("E"&v+j),Company1!R[-7]:R[65528]," & v + i + 1 & ",0)"

Next j
Next i

Ich lade die Datei mal hoch damit Ihr euch das anschauen könnt (wobei ich glaube das das für Dich/Euch eher ein Kindergeburtstag ist).

https://www.herber.de/bbs/user/19538.xls

Vielen Dank für Deine Hilfe,

Karl


Bild


Betrifft: AW: VBA .adress() von: Hajo_Zi
Geschrieben am: 11.03.2005 21:52:21

Hallo Karl,

ändere m,al die Zeile in

ActiveSheet.Range("E" & v + j).Offset(0, i).Formula = _
"=VLOOKUP(E" & v + j & ",Company1!R[-7]:R[65528]," & v + i + 1 & ",0)"



Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.




Bild


Betrifft: AW: VBA .adress() von: Karl
Geschrieben am: 11.03.2005 22:29:24

Hi Hajo,

Vielen Dank für Deinen Beitrag. Dennoch: Es funktioniert nicht! SCHEIBENKLEISTER! Ich verzweifle hier noch. Ich habe Deine Formel copy & paste eingesetzt.

In der zelle steht jetzt folgendes:

=VLOOKUP('E8';Company1!1:65536;9;0) Ich weiß nicht warum er da 'E8' macht anstatt
nur E8

Wenn ich außerdem die Formel auf Vlookup(C"...

ActiveSheet.Range("E" & v + j).Offset(0, i).Formula = _
"=VLOOKUP(C" & v + j & ",Company1!R[-7]:R[65528]," & v + i + 1 & ",0)"

erscheint in der Zelle Vlookup(H:H;Company1!1:65536;9;0)

Liegt das an meiner Englischen Excel Version oder habe ich irgendwelche Einstellungen falsch?

Vielen Dank nochmal für die Hilfe,

Karl


Bild


Betrifft: AW: VBA .adress() von: Hajo_Zi
Geschrieben am: 11.03.2005 22:43:33

Hallo Karl,

der Beitrag läst sich leichter verfolgen, wenn Du Deine Antwort hinter der entsprechenden Antwort schreibst.
Mit der automatischen E-Mailbenachrichtigung werden nur die letzten beiden Beiträge angezeigt und in diesem Fall sehe ich meine Antwort nicht mehr, wenn die Frage nicht richtig plaziert wurde.

ActiveSheet.Range("E" & v + J + I).Formula = _
"=VLOOKUP(E" & v + J & ",Company1!" & v + J + I & ":65528," & v + I + 1 & ",0)"
Ich hoffe mal das ich die Startzeile richtig festgestellt habe.
Gruß Hajo

Das Forum lebt auch von den Rückmeldungen.


Bild


Betrifft: AW: VBA .adress() von: Karl
Geschrieben am: 11.03.2005 22:55:43

Hi Hajo,

Tausend Dank!!! Zumindest nimmt er jetzt die Daten richtig auf und schreibt hin was hin soll. Ich habe allerdings nicht verstanden was ich falsch hatte. Werde mir das ganze mal näher anschauen.

Auf jeden Fall nochmal Vielen Dank und Entschuldigung für den Faux-Pas beim Antworten.

Schönen Abend,

Karl


Bild


Betrifft: AW: VBA .adress() von: Hajo_Zi
Geschrieben am: 11.03.2005 22:57:18

Hallo Karl,

Du hattest zwei unterschiedliche Bezugsarten in Deiner Formel mal A1 und Z1S1

Gruß Hajo

Das Forum lebt auch von den Rückmeldungen.


Bild


Betrifft: AW: VBA .adress() von: Karl
Geschrieben am: 11.03.2005 23:17:34

Hei Hajo,

Ok, Fehler registriert und eingesehen ;-)

Vielen Dank nochmal. Nur so nebenbei, warum kann ich nicht folgenden Code

ActiveSheet.Cells(8 + j, i + 5).Formula = "=VLOOKUP(C" & v + j & ",Company"&m&"!" & v + j + i & ":65528," & v + i + 1 & ",0)"

eingeben? Da hier keine Zell referenz vorliegt müßte das doch gehen. Da zickt VBA aber rum.

Vielen Dank nochmal

Karl


Bild


Betrifft: AW: VBA .adress() von: Hajo_Zi
Geschrieben am: 11.03.2005 23:21:18

Hallo Karl

m& ist für VBA das Zeichen das die Variable ein String ist schreibe m &

Gruß Hajo

Das Forum lebt auch von den Rückmeldungen.


Bild


Betrifft: AW: VBA .adress() von: Karl
Geschrieben am: 11.03.2005 23:30:47

Hajo, Hajo,

Was soll ich dazu sagen? DU BIST EINSAME SPITZE!!!

Vielen Dank Du hast mir mein Wochenende gerettet (zumindest hab ich jetzt mehr Zeit zum VBA Lernen ;-))

Ich hätte ja nie gedacht das Foren so hilfreich sein können.

Besten Dank,

Karl


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel-Abfrage automatisieren"