Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1480to1484
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

run-time error 1004

run-time error 1004
17.03.2016 10:20:22
Ant
Hallo zusammen,
Ich möchte mit VBA eine variable Formel aufbauen, mit welcher ich aus einer anderen Datei aktuelle Löhne und Gehälter einfügen kann. Diese andere Referenz-Datei ändert jedoch von Monat zu Monat den Namen und den Speicherpfad.
Ich bekomme die Formel auch einwandfrei aufgebaut, doch sie funktioniert nicht.
Mit dem Apostroph bei = "'=VLOOKUP bekomme ich die Formel einwandfrei aufgebaut, doch es werden keine Werte übernommen:
Range("I6") = "'=VLOOKUP(A5;" & "'" & path & year & "[" & name & "]Gehaltstabelle'!$C$250:$AL$465;35)"
Ohne Apostroph bei = "=VLOOKUP bekomme ich immer den Laufzeitfehler:
Range("I6") = "=VLOOKUP(A5;" & "'" & path & year & "[" & name & "]Gehaltstabelle'!$C$250:$AL$465;35)"
Hat vielleicht jemand eine Lösung für mein Problem?
MfG aus Luxemburg
Ant
Anbei der komplette Code:

Sub Wechsel_Monat_und_Jahr_Gewerbliche()
Sheets("Referenz Löhne und Gehälter").Select
Dim path As String
path = Range("Header!D17")
'MsgBox path
Dim year As String
year = Range("Header!L17")
'MsgBox year
Dim name As String
name = Range("Header!Q17")
'MsgBox name
Range("I6") = "'=VLOOKUP(A5;" & "'" & path & year & "[" & name & "]Gehaltstabelle'!$ _
C$250:$AL$465;35)"
Range("I6").Select
Selection.AutoFill Destination:=Range("I6:I489"), Type:=xlFillDefault
Range("A1").Select
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zusätzliche Info zu meinem Problem
17.03.2016 11:04:35
Ant
Zusätzliche Info:
Wenn ich die Variante mit dem Apostroph benutze wird die Formel ja korrekt in Zelle I6 erstellt. Wenn ich dann das Apostroph manuell in der Zelle entferne, dann erscheint der gewünschte Wert aus der Referenz-Datei.

AW: Zusätzliche Info zu meinem Problem
17.03.2016 11:15:10
Daniel
Hi
wenn du die Formel so direkt in die .Value-Eigenschaft schreibst, dann muss dein Formeltext folgende Eigenschaften erfüllen, um als Formel erkannt zu werden:
a) die Zellbezüge müssen in A1-Schreibweise beschrieben werden
b) die Formel muss in englischer Schreibweise eingegeben werden, das bedeutet:
- englische Funktionsnamen
- Komma als Parametertrennzeichen
- Wenn Zahlen vorkommen, den Punkt als Parametertrennzeichen
deine Formel ist aber eine Mischung aus deutscher und englischer Schreibweise und kann daher von Excel nicht berechnet werden.
Gruß Daniel

Anzeige
AW: Zusätzliche Info zu meinem Problem
17.03.2016 12:59:09
Ant
Hallo Daniel,
Danke für deine Antwort, doch ich kann Deine Erklärungen leider nicht nachvollziehen.
Funktionsnamen sind in Englisch und die Parametertrennzeichen sind meines Erachtens richtig. Die Formel wird mit dem Apostroph auch korrekt in Zelle I6 angezeigt:
'=VLOOKUP(A5;'W:\Wagner Personal\Personaldaten\Saisie des heures\0001 Gewerb. PWF\2016\02\[Gewerb. PWF Feb Saisie des heures.xlsm]Gehaltstabelle'!$C$250:$AL$465;35)
Wenn ich das Apostroph dann manuell entferne erscheint auch der gewünschte Wert. D.h. die eingetragene Formel müsste korrekt sein.
In einem anderen Code benutze ich einen ähnlichen Satz (ohne Apostroph) und das funktioniert einwandfrei:
Range("I5") = "='" & path & "[" & year & name & "]Sumary G'!A8"
Meines Erachtens liegt das Problem am Anfang des Satzes, bei "=VLOOKUP(A5, …….
Ob ich hier "=VLOOKUP(A5, ……. oder "=VLOOKUP(A5; ……. oder "= VLOOKUP(RC[-2],….. oder "= VLOOKUP(RC[-2];….. d.h. Komma oder Semikolon benutze, ändert auch nichts. Ich bekomme immer wieder Laufwerkfehler 1004
Wie gesagt: Baue ich die Formel mit dem Anfangs-Apostroph auf, dann bekomme ich die Formel in die Zelle und nachdem ich das Apostroph manuell entferne erscheint der gewünschte Wert. Wenn ich genau die gleiche Formel ohne das Anfangs-Apostroph aufbaue, bekomme ich den Laufzeit Fehler.
Ich bekomme das Problem demnach leider nicht gelöst und benötige immer noch Eure Hilfe
MfG
Ant

Anzeige
AW: Zusätzliche Info zu meinem Problem
17.03.2016 13:20:05
Daniel
Hi
wenn du eine Formel per VBA in eine Zelle schreibst, dann solltst du VBA auch mittelen, dass du das tust.
das macht man dann so
Range(...).Formula = "=Dein Formeltext"
dabei hat man vier verschiedene Möglichkeiten zur Auswahl:
.Formula: englische Schreibweise mit A1-Zellbezügen
.FormulaR1C1: englische Schreibweise mit R1C1-Zellbezügen
.formulaLocal: landestypische Schreibweise mit A1-Zellbezügen (so gibt man die Formel von Hand in Excel ein)
.FormulaR1C1Local: landestypische Schreibweise mit R1C1 (in deutsch: Z1S1-Zellbezügen)
die Zelle, in die man die Formel eingibt, darf nicht mit dem Zahlenformat TEXT formatiert sein.
man sollte vermeiden, die Formel in die .Value-Eigenschaft der Zelle zu schreiben.
Gruß Daniel

Anzeige
AW: Zusätzliche Info zu meinem Problem
17.03.2016 13:46:19
Ant
Hi Daniel,
Auch das funzt leider nicht. Ob mit .Value oder den verschienen .Formula Varianten, keine funktioniert.
MfG
Ant

kleine Ergänzung
17.03.2016 12:59:32
Michael
Hi,
eine Zuweisung
Range("I6") = "irgendwas"
benutzt standardmäßig die .Value - Eigenschaft des Range-Objekts, ist also identisch mit
Range("I6").Value = "irgendwas"
.Value ist aber der WERT der Zelle; was Du für die Formel benötigst, ist eine der folgenden Eigenschaften:
Sub t()
Range("I6").Formula = "=now()"
' oder die dt. Variante
Range("I7").FormulaLocal = "=jetzt()"
'Schreib mal HÄNDISCH die Formel in A1: =WENN(B1=B2;"gleich";"ungleich")
' Ausgabe im Debug-Fenster:
Debug.Print "1. " & Range("A1").Formula
Debug.Print "2. " & Range("A1").FormulaLocal
Debug.Print "3. " & Range("A1").FormulaR1C1
Debug.Print "4. " & Range("A1").FormulaR1C1Local
Debug.Print "5. " & Range("A1").Value
Debug.Print "6. " & Range("A1").Text
End Sub

Ausgabe im Debug-Fenster:
1. =IF(B1=B2,"gleich","ungleich")
2. =WENN(B1=B2;"gleich";"ungleich")
3. =IF(RC[1]=R[1]C[1],"gleich","ungleich")
4. =WENN(ZS(1)=Z(1)S(1);"gleich";"ungleich")
5. ungleich
6. ungleich
Ok?
Schöne Grüße,
Michael

Anzeige
AW: kleine Ergänzung
17.03.2016 13:28:51
Ant
Danke Michael,
Ich habe eine englische Excel-Version und das Problem mit den Deutschen und Englischen Funktionen ist mir wohl bekannt. Die einzige Funktion in meinem Satz (VLOOKUP) ist in Englisch und wie eben beschrieben wird die Formel ja mit dem Apostroph korrekt in I6 erstellt (der gewünschte Wert erscheint jedoch erst wenn ich das Apostroph manuell entferne)und ohne Apostroph kommt die Fehlermeldung.
MfG
ANt

AW: kleine Ergänzung
17.03.2016 13:51:09
Ant
Hallo,
Ich muss jett leider weg, bin morgen ab 8:00 Uhr wieder am Tüfteln.
Gruss
Ant

nochmal ganz langsam
17.03.2016 15:44:48
Michael

Hi Ant,
lies doch mal im Debug-Fenster einfach eine funktionsfähige Formel aus mit .formula; dann siehst Du exakt, wie Du sie schreiben mußt.
Am besten schreibst Du dann die zusammengestückelte VBA-Version auch nochmal ins Debug, dann stehen beide direkt untereinander, und Du siehst, wo evtl. ein Fehler ist.
Ich habe mal schnell zwei Testdatein gebastelt und das gemacht - die ursprüngliche Formel steht bei mir in A2: =SVERWEIS(A5;'C:\A_Herber\[SpaltenLoeschenDic.xlsm]Tabelle5'!$A$2:$B$4;2)
Sub t()
'Debug.Print Range("A2").Formula
' ergibt das hier:
'=VLOOKUP(A5,'C:\A_Herber\[SpaltenLoeschenDic.xlsm]Tabelle5'!$A$2:$B$4,2)
Dim path As String
Dim Name As String
path = "C:\A_Herber\"
Name = "SpaltenLoeschenDic.xlsm"
'Range("A6") = "=VLOOKUP(A5," & "'" & path & "[" & Name & "]Gehaltstabelle'!" & _
'  "$C$250:$AL$465;35)"
Debug.Print "=VLOOKUP(A5," & "'" & path & "[" & Name & "]Tabelle5'!" & _
"$A$2:$B$4,2)"
'Gleiches Ergebnis:
'=VLOOKUP(A5,'C:\A_Herber\[SpaltenLoeschenDic.xlsm]Tabelle5'!$A$2:$B$4,2)
Range("A6") = "=VLOOKUP(A5," & "'" & path & "[" & Name & "]Tabelle5'!" & _
"$A$2:$B$4,2)"
Range("A7").Formula = "=VLOOKUP(A5," & "'" & path & "[" & Name & "]Tabelle5'!" & _
"$A$2:$B$4,2)"
End Sub

Verblüffenderweise funktionieren beide Varianten, die mit "vorbelegtem" .value und die mit .formula.
Du hast ja schon mit , und ; herumgespielt; allerdings: ganz rechts vor der Spaltenangabe (in Deinem Fall die 35) muß halt auch ein , stehen.
Schöne Grüße,
Michael

Anzeige
AW: nochmal ganz langsam
18.03.2016 09:33:23
Ant
Hallo Michael,
Einen Riesendank für Deine Hilfe.
Das Problem war effektiv das Komma ganz rechts vor der Spaltenangabe.
MfG aus Luxemburg
Ant

na, dann hammer's ja
18.03.2016 12:07:07
Michael
Hi Ant,
vielen Dank für die Rückmeldung und
schöne Grüße zurück,
Michael

220 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige