Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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
Formel einfügen mit VBA
28.05.2009 12:26:21
Michael
Hallo,
warum markiert mir de VBA Editor diesen Code rot ?
Sheets(20).Range("H24").FormulaLocal = "=VERKETTEN("TD ";RECHTS(H25;4))"
Gruß
Michael

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel einfügen mit VBA
28.05.2009 12:29:43
Rudi
Hallo,
weil " fehlen.
= "=VERKETTEN(""TD "";RECHTS(H25;4))"
Gruß
Rudi
AW: Formel einfügen mit VBA
28.05.2009 14:03:14
Michael
Das verstehe ich nicht. Diese Formel habe ich doch so aus der Zelle herausgenommen. Und warum muss ich das jetzt nochmal Anführungszeichen setzen?
Gruß
Michael
AW: Formel einfügen mit VBA
28.05.2009 14:06:56
Hajo_Zi
Hallo Michael,
das ist eben VBA dort gilt " als Ende vom Text.
Gruß Hajo
Innerhalb eines mit Hervorhebungszeichen...
28.05.2009 14:33:15
Luc:-?
...gekennzeichneten Textes kann nur ein verdoppeltes " auch als Zeichen " interpretiert wdn, Michael;
ist doch logisch, oder...!? Wie soll sonst vom Interpreter/Compiler unterschieden wdn können, was Textanfangs-/-endezeichen ist und was nur ein Zeichen innerhalb des Textes? Das ist in VBA (und vglb anderen PgmSprachen) generell so o.ä. geregelt, auch im Falle anderer Zeichen, die eine Steuerfkt haben wie bspw beim Like-Operator. Daran solltest du dich beizeiten gewöhnen... Kannst du auch alles in der VBE-Hilfe nachlesen. Solche Regeln (z.B. auch für Namen) nennt man Sprachdefinition(en). Diese liegt der Syntax zugrunde; ein Verstoß dagg ist ein Syntaxfehler - und den hast du damit ja produziert... ;-)
Das hat Hajo mit seinem knappen ( weil man so etwas Grdsätzliches eigentl wissen sollte) Kommentar angedeutet...
Gruß Luc :-?
Anzeige
AW: Innerhalb eines mit Hervorhebungszeichen...
28.05.2009 16:16:16
Michael
Tja guck Dir meinen Level an, dann weist Du warum ich so dumm Frage. jetzt hab ich aber das Problem, dass ich mir Formeln mit VBA auflisten lasse und diese möchte ich danach wieder an die gleiche Stelle einbauen, weil ich die Datei in der Zwischenzeit als Werte-Datei versende.
Nachdem ich Sie wieder zurück habe, möchte ich wieder die Formeln in den ursprünglichen Zellen haben. Das kann ich ja dann wohl vergessen, oder?
Gruß
Michael
AW: Innerhalb eines mit Hervorhebungszeichen...
28.05.2009 16:22:40
Hajo_Zi
Halo Michael,
die Formel ist doch bestimmt in einer Variablen?
Replace " durch ""
Gruß Hajo
Anzeige
AW: Innerhalb eines mit Hervorhebungszeichen...
28.05.2009 16:39:45
Michael
Das funktioniert leider nicht. Ich habe ca. 3500 Zeilen Formeln erzeugt mit diesem Makro.

Sub Formeln_auflisten()
Dim lngZ As Long
Dim wsBlatt As Worksheet
Dim rngFormeln As Range, rngZelle As Range
lngZ = 301
For Each wsBlatt In Worksheets
On Error Resume Next
Set rngFormeln = Nothing
Set rngFormeln = wsBlatt.Range("A1:BZ300").Cells.SpecialCells(xlCellTypeFormulas)
If Not rngFormeln Is Nothing Then
For Each rngZelle In rngFormeln
lngZ = lngZ + 1
Cells(lngZ, 1) = wsBlatt.CodeName
Cells(lngZ, 2) = rngZelle.Address(0, 0)
Cells(lngZ, 3) = "'" & rngZelle.FormulaLocal
Next
End If
Next
If lngZ = 1 Then MsgBox "Keine Formeln im Bereich"
End Sub


Ergebnisauszug
Tabelle2 B4 =DE.NAME($A$1;$A$4;"0157")
Tabelle2 B6 =DE.NAME($A$1;$A$6;"TEURO")
Tabelle2 C6 =DE.NAME($A$1;$A$6;"TLC")
Tabelle2 D6 =DE.NAME($A$1;$A$6;"EURO")
Tabelle2 B8 =DE.NAME($A$1;$A$8;"Yearend/Y2007")
Danach gehe ich in der Datei her und baue mit &-Zeichen den VBA Code zusammen. Sieht dann ungefähr so aus
=$A$295&E303&$A$296&B303&$A$297&$A$298&C303&$A$299
Ergebnis erste Zeile von Bsp.
Sheets(2).Range("B4").FormulaLocal = "=DE.NAME($A$1;$A$4;"0157")"
So dann wollte ich meine 3500 Zeilen so erzeugten Code nehmen und in eine


Sub Formel_einfuegen() packen. Jetzt habe ich aber das duselige Problem mit den Anfü _
hrungszeichen. Einfach Suchen/Ersetzen ist ja nicht. Da werden die ja auch z.B. von der Range mit ersetzt.
Wie bekomme ich nun die oben weggeschriebenen Formlen wieder aufs richtige Tabellenblatt in die  _
richtige Zelle?
Beste Grüße
Michael

Anzeige
AW: Innerhalb eines mit Hervorhebungszeichen...
28.05.2009 16:43:48
Hajo_Zi
Hallo Michael,
warum lädst Du keine Datei hoch. Dann könnte man es an Deinem Beispiel testen. Man hätte dann gleich das Makro für das auslesen und für das Zurückschreiben.
Warum schreibst Du die Formel als Text in die Zelle und nicht gleich als Formel?
Gruß Hajo
AW: Innerhalb eines mit Hervorhebungszeichen...
29.05.2009 08:08:08
Michael
So ich habe mal eine Bsp. Datei gemacht.
https://www.herber.de/bbs/user/62110.xls
So wie die Verketten Formel also mit Text-Referenz innerhalb der Formel habe ich ca. 2000. Wenn mir hier jemand helfen könnte. Das Sub Formel_einfuegen() hab ich durch Copy&Paste aus der Datei erzeugt, weil ich mir nicht anders zu helfen wusste.
Gruß
Michael
Anzeige
AW: Innerhalb eines mit Hervorhebungszeichen...
29.05.2009 08:27:30
Michael
So ich habe mal eine Bsp. Datei gemacht.
https://www.herber.de/bbs/user/62110.xls
So wie die Verketten Formel also mit Text-Referenz innerhalb der Formel habe ich ca. 2000. Wenn mir hier jemand helfen könnte. Das Sub Formel_einfuegen() hab ich durch Copy&Paste aus der Datei erzeugt, weil ich mir nicht anders zu helfen wusste.
Gruß
Michael
AW: Innerhalb eines mit Hervorhebungszeichen...
29.05.2009 08:40:49
robert
hi,
ein fehler...
sheets(3) ist falsch, du hast ja nur 2 blätter in der datei, daher Sheets(2)...
oder Sheets("Tabelle3")...
gruß
robert
AW: Innerhalb eines mit Hervorhebungszeichen...
29.05.2009 08:56:16
Hajo_Zi
Hallo Michael,
ich hätte es vieleicht so gelöst.

Option Explicit
Sub Formeln_auflisten()
Dim lngZ As Long
Dim wsBlatt As Worksheet
Dim rngFormeln As Range, rngZelle As Range
lngZ = 1
For Each wsBlatt In Worksheets
On Error Resume Next
Set rngFormeln = Nothing
Set rngFormeln = wsBlatt.Range("A1:C22").Cells.SpecialCells(xlCellTypeFormulas)
If Not rngFormeln Is Nothing Then
For Each rngZelle In rngFormeln
lngZ = lngZ + 1
Cells(lngZ, 10) = wsBlatt.CodeName
Cells(lngZ, 11) = rngZelle.Address(0, 0)
Cells(lngZ, 12).FormulaLocal = rngZelle.FormulaLocal
Next
End If
Next
If lngZ = 1 Then MsgBox "Keine Formeln im Bereich"
End Sub
Private Sub CommandButton1_Click()
Dim LoLetzte As Long
Dim LoI As Long
With Worksheets("Test")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 10)), .Cells(.Rows.Count, 10).End(xlUp).Row,  _
.Rows.Count)
For LoI = 2 To LoLetzte
.Cells(LoI, 10).Range(CStr(.Cells(LoI, 11))).FormulaLocal = .Cells(LoI, 12). _
FormulaLocal
Next LoI
End With
End Sub


Das Makro har noch einen kleinen Fehler bei der Ausführung, er sollte die Formel in C18 ff schreiben er schreibt sie aber in L36FF. Das ist mir jetzt nicht klar. Eigentlich sollte es richtig gehen. Vielleicht hat die Datei einen Fehler. Ich habe jetzt aber keine Zeit das zu vertiefen.
Gruß Hajo

Anzeige
AW: Innerhalb eines mit Hervorhebungszeichen...
29.05.2009 10:24:01
Michael
Ich nochmal mit einem Kollegen gesprochen und er hat folgende Lösung vorgeschlagen, die gut funktioniert.

Sub Formeln_auflisten()
Dim lngZ As Long
Dim wsBlatt As Worksheet
Dim rngFormeln As Range, rngZelle As Range
lngZ = 1
For Each wsBlatt In Worksheets
On Error Resume Next
Set rngFormeln = Nothing
Set rngFormeln = wsBlatt.Range("A1:C22").Cells.SpecialCells(xlCellTypeFormulas)
If Not rngFormeln Is Nothing Then
For Each rngZelle In rngFormeln
lngZ = lngZ + 1
Cells(lngZ, 10) = wsBlatt.CodeName
Cells(lngZ, 11) = rngZelle.Address(0, 0)
Cells(lngZ, 12) = "'" & rngZelle.FormulaLocal
Cells(lngZ, 13) = "Sheets(" & Right(wsBlatt.CodeName, Len(wsBlatt.CodeName) - 7) _
& ").Range(""" & rngZelle.Address(0, 0) & """).FormulaLocal = """ & Replace(rngZelle.FormulaLocal, """", """""") & """"
Next
End If
Next
If lngZ = 1 Then MsgBox "Keine Formeln im Bereich"
End Sub


Anzeige
..das geht nicht....
29.05.2009 10:37:14
robert
hi,
wenn die formel in tabelle5 steht und du machst Sheets(5) daraus funkt das nicht,
um die formel mit einem makro wieder einzutragen, musst du Sheets("Tabelle5") nehmen.
Sheets(5) heisst-das blatt 5, du hast aber z.b. nur Tabelle2 und Tabelle5-verständlich?
probier es einfach aus...
gruß
robert
Stimmt! Übersehen. Danke für den Tipp
29.05.2009 11:33:31
Michael
...Und warum verschickst du nicht einfach...
28.05.2009 22:46:20
Luc:-?
...eine Nur-Werte-Kopie, Michael?
Dann hättest du doch immer noch das Original und könntest dir zumindest das Zurückschreiben der Fmln sparen! Oder sollen die Fmln ebenfalls versandt wdn, quasi zum Selbstzusammenbau? Was sollte das für einen Sinn haben?!
Du bist doch aber xlGut - erklär uns das mal!
Gruß Luc :-?
Anzeige
AW: ...Und warum verschickst du nicht einfach...
29.05.2009 07:53:49
Michael
Das Problem ist etwas komplexer. Da die Formeln auf einen Cube zugreifen. Diese stammen von dem OLAP-Tool Infor PM10. Damit werden Planwerte herangezogen. Die Kollegen sollen nun diese Planwerte in einer Spalte nebendran überdenken. Kommt das File zurück, dann werden zu einem Zeitpunkt später die Istwerte durch die Formeln herangezogen.
Da die Kollegen die die Planwerte bearbeiten sollen dieses Tool nicht haben, müssen für diese Werte angezeigt werden. Wenn wir das File wieder haben, brauchen wir aber wieder die Formeln darin um die überarbeiteten Planwerte mit dem Ist zu vergleichen. Simpler Plan/Ist vergleich.
Gruß
Michael
Anzeige
Aha, ihr wollt die Fmln in die zurückgeschickte...
29.05.2009 09:36:29
Luc:-?
...und korrigierte Datei ohne Fmln schreiben, Michael!
Dank für Aufklärung + FroPf!
Luc :-?
Weil in VBA die engl. Namen verwendet werden
28.05.2009 12:31:07
Harald
"=CONCATENATE(""TD "",RIGHT(R[20]C[4],4))"
Gruß Harald
aber nicht bei ...
28.05.2009 12:52:22
Rudi
FormulaLocal
Gruß
Rudi
Oops, Detail übersehen, sorry
28.05.2009 12:59:47
Harald
.
AW: Formel einfügen mit VBA
28.05.2009 17:22:28
robert
hi,
das wr deine einstiegsfrage...bzw.problem:
Sheets(20).Range("H24").FormulaLocal = "=VERKETTEN("TD ";RECHTS(H25;4))"
was ist wenn du rudis antwort einfügst? und zwar so..
Sheets(20).Range("H24").FormulaLocal = "=VERKETTEN(""TD "";RECHTS(H25;4))"
AW: Formel einfügen mit VBA
29.05.2009 08:22:28
Michael
Dann funktionierts. Aber das für 3500 Zeilen Code händisch zu machen, kann es auch nicht sein. :-(
..verstehe nur bahnhof...
29.05.2009 09:41:59
robert
hi michael,
schau mal, wie harmlos dieser beitrag begonnen hat und was daraus geworden ist :-)
gruß
robert
Anzeige

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige