Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Zellenreferenzen durch Variablen ersetzen
#11
Hallo,
Excel will diesen Code nicht annehmen und schreibt ihn in rot.
Ich habe schon einige Zeit nach der Ursache gesucht, die ich aber nicht gefunden habe.
MfG
Alooha
Antworten Top
#12
Hallo,

sorry, aber warum testest du Vorschläge denn nicht. Die Formel ist doch relativ.
Code:
Range("BW" & efZelle & ":BW" & lZelle).FormulaR1C1 = _
"=IF(OR(R[1]C[-74]=""/"",ISNA(HLOOKUP(R[1]C[-73],INDIRECT(R[1]C[-72]&""!B1:v29""),29,0))),"""",HLOOKUP(R[1]C[-73],INDIRECT(R[1]C[-72]&""!B1:v29""),29,0))"

Gruß Werner
Antworten Top
#13
Hallo,
ich habe sie getestet, aber Excel akzeptiert sie nicht.
Allerdings habe ich die Sache inzwischen selbst hingekriegt.
Hier der Code der funktioniert; ich habe ihn an meinen Originalcode angepasst (Variablen in frz.)

Code:
ActiveCell.FormulaR1C1 = _
        "=IF(OR(R[0]C[-74]=""/"",ISNA(HLOOKUP(R[0]C[-73],INDIRECT(R[0]C[-72]&""!B1:v29""),29,0))),"""",HLOOKUP(R[0]C[-73],INDIRECT(R[0]C[-72]&""!B1:v29""),29,0))"
    Range("BW" & prem_ligne_vide_BW).Select
    Selection.AutoFill Destination:=Range("BW" & prem_ligne_vide_BW & ":BW" & dern_ligne_remplie_A), Type:=xlFillDefault
Danke für eure Hilfe.
Uebrigens war das Problem  ...R[1]... das bewirkte, dass die Referenzen immer um 1 Zeile versetzt waren. Ich habe es durch ...R[0]... ersetzt und es funktioniert.
Ein weiteres Problem hatte ich, wenn noch nichts ausser die Ueberschrift in BW1 in BW war und die erste freie Zelle war dann größer als BW1000000, d.h. die letzt mögliche Zeile. Ich habe die Sache schließlich auf eine nicht so elegante Weise gelöst: die erste Zeile der Datenbank ist die Zeile 2 und ich habe festgestellt dass der Code auch bei leerer Datenbank funktioniert wenn ich ein einfaches unsichtbares Leerzeichen in BW2 eingebe. Das habe ich dann per VBA gemacht, allerdings wird es jedes Mal gemacht wo der Code gestartet wird.
Ich habe mit
Code:
If IsEmpty(Range("BW3").Value) = True Then [ist die erste Zelle die BW3]
aber das habe ich nicht hingekriegt.

Was ich jetzt noch brauche, ist ein Code, der dem Benutzer die Möglichkeit gibt, eine Datei zum Oeffnen auszuwählen. Sie sind im selben Ordner wie die Datei mit dem Code und heißen 1.xls bis 12.xls. Sie stellen die Monate dar und sind daher nicht das ganze Jahr alle präsent; wenn es z.B. schon 1.xls, 2.xls und 3.xls gibt, wird 4.xls Anfang Mai eingefügt.
Ich stelle mir es so vor:
Der Nutzer drückt auf einen Knopf und ihm werden die vorhandenen Dateien angezeigt aus denen er die richtige auswählt.
Ich habe keine Ahnung, wie ich das anfangen soll, um einen funktionierenden Code zustande zu bringen.

MfG
Alooha
Antworten Top
#14
Hallo,
ich habe es hingekriegt, dem Benutzer die Möglichkeit zu geben, die 2 Dateien die geöffnet werden müssen, auszuwählen.
Mein nächstes Problem:
Zuerst hatte ich geplant, die eine der beiden Dateien, deren Name die Monatsnummer ist (1.xlsx, 2.xlsx,... 12.xlsx), jedes Mal in NDJF umzutaufen, als ich noch keinen Dialog zum Auswählen hatt.

Wie müsste folgender Code angepasst werden, dass die Formel nicht in die Datei NDJF die Daten holen geht, sondern in diejenige die der User ausgewählt hat (Variable MonatNDJF)?

Code:
ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(--RC1,NDJF.xlsx!R6C1:R100C10,4,0)),0,VLOOKUP(--RC1,NDJF.xlsx!R6C1:R100C10,4,0))"

Mit freundlichen Grüßen
Alooha
Antworten Top
#15
Hallo,

ich habe die Lösung gefunden:

Code:
ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(--RC1," & Variable & "!R6C1:R100C10,4,0)),0,VLOOKUP(--RC1," & Variable & "!R6C1:R100C10,4,0))"
MfG
Alooha
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste