Anzeige
Archiv - Navigation
1288to1292
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

Formel aufbauen

Formel aufbauen
17.12.2012 12:08:22
Ant
Hallo zusammen,
Folgendes ist mein Problem.
Ich möchte Resttage aus einer alte Urlaubsdatei übertragen. In den Zellen I7, I8 und I9 baue ich mir eine Formel zusammen, welche anschliessend die Referenzformel sein soll und dann x-mal copiert werden soll.
Ich habe mir 2 Code-Modelle vorbereitet, doch keine funktionniert:
- Beim ersten Modell "Sub search_data_last_year1" kann ich die Referenzformeln wohl korrekt in den MsgBoxen lesen, doch wird sie nicht in die angegebenen Zellen übertragen :-(((
- Beim zweiten Modell "Sub search_data_last_year2" funktioniert es einwandfrei, das "=" wird beim aufzeichnen auch durch "=" ersetzt, Die gewünschten Werte erscheinen auch in allen Zellen, doch wenn ich anschliessend den aufgezeichneten Code wieder laufen lasse, dann ersetzt er mir die "=" Zeichen nicht mehr. In allen Zellen steht dann die Formel wieder als Text :-(((
Kann mir villeicht jemend hier weiterhelfen?
MfG
Ant Deister aus Luxemburg

Sub search_data_last_year1()
Sheets("Header").Select
Dim Urlaubübertrag As String
strgUrlaubübertrag = Range("I7")
Dim Übertstundenübertrag As String
strgÜbertstundenübertrag = Range("I8")
Dim Xübertrag As String
strgXübertrag = Range("I9")
MsgBox strgUrlaubübertrag
MsgBox strgÜbertstundenübertrag
MsgBox strgXübertrag
Sheets("Entry").Select
Range("E6") = strgUrlaubübertrag
Range("E7") = strgÜbertstundenübertrag
Range("E8") = strgXübertrag
Range("E6:E8").Select
Selection.Copy
Range("F6:EZ8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub

Sub search_data_last_year2()
Sheets("Header").Select
Range("I7:I9").Select  'in diesen Zellen werden 3 variable Formeln zusammen gestellt _
="=VLOOKUP(E$3;'["&I3&"]Sheet1'!$A$2:$G$241;6)" _
="=VLOOKUP(E$3;'["&I3&"]Sheet1'!$A$2:$G$241;7)" _
="=VLOOKUP(E$3;'["&I3&"]Sheet1'!$A$2:$G$241;5)" _
Zelle I3 ändert jedes Jahr
Selection.Copy
Sheets("Entry").Select
Range("E6").Select  'beim kopieren als Wert entstehen z.B. diese Formeln _
=VLOOKUP(E$3;'[2012 URLAUB PWF Gewerbliche.xlsm]Sheet1'!$A$2:$G$241;6) _
=VLOOKUP(E$3;'[2012 URLAUB PWF Gewerbliche.xlsm]Sheet1'!$A$2:$G$241;7) _
=VLOOKUP(E$3;'[2012 URLAUB PWF Gewerbliche.xlsm]Sheet1'!$A$2:$G$241;5)
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'Da die Formel nicht als solches erkannt wird, ersetze ich "=" durch "="
Selection.Replace What:="=", Replacement:="=", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.CutCopyMode = False
Range("E6:E8").Select
Selection.Copy
Range("F6:EZ8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel aufbauen
17.12.2012 12:20:52
Ant
Hallo nochmal,
Ich habe eigentlich 2 Fragen:
Wieso wird die Formel beim ersten Beispiel nicht übertragen?
Range("E6") = strgUrlaubübertrag
Range("E7") = strgÜbertstundenübertrag
Range("E8") = strgXübertrag
Wieso wird das =Zeichen im zweiten Beispiel beim abspielen des Codes nicht ersetzt?
Selection.Replace What:="=", Replacement:="=", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
MfG
Ant

AW: Komma statt Semikolon
17.12.2012 12:36:55
Daniel
Hi
deine Texte entsprechen nicht den allgemeinen Regeln, wie Formeln geschrieben werden müssen.
deswegen werden sie nicht als Formeln erkannt sondern bleiben Texte.
wenn du per VBA über die REPLACE-Funktion eine Formel erzeugen willst, dann muss der erzeugte Text einer Formel in englischer Schreibweise mit Zellbezügen in A1-Schreibweise entsprechen.
Das ist bei dir nicht der Fall, weil du als Parameterterennzeichen das deutsche Semikolon verwendest.
Die englische Schreibweise jedoch erfordert das KOMMA als Paremtertrennzeichen.
solltest du hingegen die Aktion (also das Ersetzen) von Hand direkt in Excel ausführen (also ohne VBA) dann muss der Text der landestypischen Formelschreibweise entsprechen, dh hier in Deutschland mit dem Semikolon als Paramtertrennzeichen und deutschen Funktionsnamen.
man muss hier halt ein bisschen aufpassen und es ist nicht alles 1:1 von Excel nach VBA übertragbar, weil Excel mit dem Anwender immer Landessprache "spricht", mit VBA hingegen immer Englisch.
Gruß Daniel
Gruß

Anzeige
AW: Komma statt Semikolon
17.12.2012 13:52:01
Ant
Hallo Daniel,
Danke für die Antwort. Ich habe eine Englische Excel-Version, aus dem Grund verstehe ich deine Erklärungen nicht richtig.
Bei meinem ersten Beispiel wird ja auch nichts ersetzt. Wieso funktioniert der String hier nicht?
Range("E6") = strgUrlaubübertrag
Range("E7") = strgÜbertstundenübertrag
Range("E8") = strgXübertrag
MfG
Ant

AW: Komma statt Semikolon
17.12.2012 14:02:27
Daniel
Hi
sorry, kann ich so nicht beurteilen, da ich nicht weiß, was da drin steht.
kannst du mal die Datei hochladen?
Gruß Daniel

AW: Formel aufbauen
17.12.2012 14:28:14
ChrisL
Hi Ant
Das erste Makro habe ich mir mal etwas genauer angeschaut.
Hier schreibst du den String in die Zelle:
Range("E6") = strgUrlaubübertrag
Range("E7") = strgÜbertstundenübertrag
Range("E8") = strgXübertrag
Dadurch geht natürlich die Formel verloren.
Gegenvorschlag:
Sub search_data_last_year1()
Dim WS1 As Worksheet, WS2 As Worksheet
Set WS1 = Worksheets("Header")
Set WS2 = Worksheets("Entry")
MsgBox WS1.Range("I7")
MsgBox WS1.Range("I8")
MsgBox WS1.Range("I9")
WS2.Range("E6").Formula = WS1.Range("I7").Formula
WS2.Range("E7").Formula = WS1.Range("I8").Formula
WS2.Range("E8").Formula = WS1.Range("I9").Formula
WS2.Range("E6:E8").Select
Selection.Copy
WS2.Range("F6:EZ8").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub
cu
Chris

Anzeige
AW: Formel aufbauen
17.12.2012 14:34:55
Henrik
Hallo Ant,
hier ein paar Möglichkeiten als losgelöste Beispiele. Schreib in A1:A3 einfach 1,2,3 kopier den Code in ein Modul und schau wie es sich verhält.
Grundsätzlich noch der Hinweis: Umlaute wuerde ich grundsaetzlich in VBA vermeiden!

Sub malso()
Dim Formel As String, strFtext As String, strFR1C1 As String, dblWert As Double
Formel = "=A1+A2"
With ThisWorkbook.Worksheets("Tabelle1")
.Range("B1") = Formel
strFtext = .Range("B1").Formula
strstrFR1C1 = .Range("B1").FormulaR1C1
dblWert = .Range("B1").Value
.Range("C1") = strFtext
.Range("C2") = strstrFR1C1
.Range("C3") = dblWert
End With
End Sub

Gruß Henrik

Anzeige
AW: Formel aufbauen
17.12.2012 16:03:16
Ant
Hallo zusammen,
Leider hatte ich mit den verschiedenen Vorschlägen nicht das gewünschte Resultat. Leider ist es mir nicht möglich die beiden Originaldateien hochzuladen
Anbei demnach 2 nachgestellte Dateien.
Meine beiden Problemcodes befinden sich in der Datei 2013(N°83036) und die Werte sollten von 2012(N°83037) nach 2013 übertragen werden. In diesem Beispiel müssen beide Dateien gleichzeitig geöffnet sein.
Ich hoffe das ich diesmal besser mit der Erklärung meines Problems dienen konnte.
MfG
Ant
https://www.herber.de/bbs/user/83036.xlsm
https://www.herber.de/bbs/user/83037.xlsm

Anzeige
AW: Formel aufbauen
17.12.2012 17:32:32
Ant
Hallo zusammen,
Ich glaube mein letzter Post war ziemlich verwirrend.
Anbei eine Datei wo mein Problem einfacher sichtbar wird. Einfach auf die blauen Schaltflächen klicken.
In Beispiel 1 wird das Problem nach den 3 MsgBox Meldungen sofort sichtbar.
In Beispiel 2 läuft der Code voll durch, doch die = Zeichen werden nicht durch = Zeichen ersetzt.
https://www.herber.de/bbs/user/83040.xlsm
Danke für die Hilfe
MfG
Ant

AW: ersetze die Semikolons durch Kommas!
17.12.2012 18:15:08
Daniel
wenn du eine Formel in englischer Schreibweise verwendest, dann musst du auch das Kommas als Parametertrennzeichen verwenden und das Semikolon:
falsche Formel:
=VLOOKUP(E$3;'[2012 URLAUB PWF Gewerbliche.xlsm]Sheet3'!$A$2:$G$241;6)
richtige Formel:
=VLOOKUP(E$3,'[2012 URLAUB PWF Gewerbliche.xlsm]Sheet3'!$A$2:$G$241,6)
Gruß Daniel

Anzeige
Semikolons durch Kommas ersetzen geht nicht
18.12.2012 09:11:51
Ant
Sorry Daniel,
Formeln funtionieren bei mir nur Semikolons !
Anbei nochmals die Datei wo mein Problem einfach sichtbar wird. Einfach auf die blauen Schaltflächen klicken.
In Beispiel 1 wird das Problem nach den 3 MsgBox Meldungen sofort sichtbar, d.h. die Formeln stehen richtig in der MsgBox, doch sie werden anschliessend nicht in die jeweiligen Zellen übertragen.
In Beispiel 2 läuft der Code voll durch, doch der Passus "Replace" greift nicht. Die "=" Zeichen werden nicht durch "=" Zeichen ersetzt. Wenn ich jedoch E6:E8 manuel anwähle und die "=" Zeichen ersetze, dann funktionniert es.
https://www.herber.de/bbs/user/83050.xlsm
MfG
Ant

Anzeige
AW: Semikolons durch Kommas ersetzen geht nicht
18.12.2012 09:41:34
ChrisL
Hi Ant
Sub search_data_last_year1()
Sheets("Header").Select
Dim Urlaubübertrag As String
strgUrlaubübertrag = Range("I7")
Dim Übertstundenübertrag As String
strgÜbertstundenübertrag = Range("I8")
Dim Xübertrag As String
strgXübertrag = Range("I9")
MsgBox strgUrlaubübertrag
MsgBox strgÜbertstundenübertrag
MsgBox strgXübertrag
Sheets("Entry").Select
Range("E6").Formula = Replace(strgUrlaubübertrag, ";", ",")
Range("E7").Formula = Replace(strgÜbertstundenübertrag, ";", ",")
Range("E8").Formula = Replace(strgXübertrag, ";", ",")
'Range("E6:E8").Select
'Selection.Copy
'Range("F6:EZ8").Select
'Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub
cu
Chris

Anzeige
Genau das ist es! Danke Chris
18.12.2012 10:18:55
Ant
Genau das ist es!
Danke Chris

AW: Semikolons durch Kommas ersetzen geht nicht
18.12.2012 09:41:53
ChrisL
Hi Ant
Sub search_data_last_year1()
Sheets("Header").Select
Dim Urlaubübertrag As String
strgUrlaubübertrag = Range("I7")
Dim Übertstundenübertrag As String
strgÜbertstundenübertrag = Range("I8")
Dim Xübertrag As String
strgXübertrag = Range("I9")
MsgBox strgUrlaubübertrag
MsgBox strgÜbertstundenübertrag
MsgBox strgXübertrag
Sheets("Entry").Select
Range("E6").Formula = Replace(strgUrlaubübertrag, ";", ",")
Range("E7").Formula = Replace(strgÜbertstundenübertrag, ";", ",")
Range("E8").Formula = Replace(strgXübertrag, ";", ",")
'Range("E6:E8").Select
'Selection.Copy
'Range("F6:EZ8").Select
'Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub
cu
Chris

Anzeige
Genau das ist es! Danke Chris
18.12.2012 10:20:00
Ant
Genau das ist es!
Danke Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige