Clever-Excel-Forum

Normale Version: Zellwert zu Formel in anderer Zelle machen -> 4x4 zu =4x4
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
(19.02.2017, 18:24)o0Julia0o schrieb: [ -> ]Ich erhalte jedoch "Typen unverträglich". Er markiert mir folgende Zeile gelb - immerhin besser als rot ^^:
Code:
For i = Range("Calc!A1").Value To Range("Calc!G30").Value

Steht zufällig in A1 oder G30 anstatt eine Zahl ein Wort?
Es reicht glaube auch wenn eine Zahl als Wort deklariert wurde!

Wenn ja sollte man bei Eingaben darauf achten, dass auch nur das eingegeben werden darf man haben möchte.
hm, danke. Das verändert aber nichts zu einer Formel wie FormulaLocal. In Calc!C2 steht ja zuvor als Ergebnis von:
Code:
"["&B102&"]"
der Dateiname, also:
Code:
[15WegWert].xlsm

Wenn ich jetzt folgendes mache:
Code:
Range("A1:B30").FormulaLocal = "=" & Range("Calc!C2").Value & "Werte!$A6"
dann wird der Text wirklich zu einer Formel umgewandelt. Also das Ergenis der Zelle ist dann der Wert aus der Datei [15WegWert].xlsm & dort vom Feld "Werte!$A6".

Während dieses .Replace "=", "#" nur das =-heitszeichen durch ein #-Zeichen ersetzt. Und der 2. Code andersherum. Dann ist es so, als wenn ich die 1. Formel nie ausgeführt hätte.

(19.02.2017, 18:38)atilla schrieb: [ -> ]Dann habe ich noch eine zusätzliche Frage, sind das unterschiedliche Formeln?
Ja, jedes Feld gibt einen anderen unikaten Dateinamen aus.
In A1 steht dann z.B.:
Code:
"["&B102&"]"

und in A2
Code:
"["&B103&"]"

(19.02.2017, 23:50)Basisa schrieb: [ -> ]Steht zufällig in A1 oder G30 anstatt eine Zahl ein Wort?
Es reicht glaube auch wenn eine Zahl als Wort deklariert wurde!
Als Zellergebnis steht dort der Dateiname, also z.b.: [15WegWert].xlsm Als Formel:
Code:
"["&B102&"]"
Hallo Julia,

mir ist mehr klar als Du denkst.
Was mir nicht klar ist, warum Du in den Zellen Text stehen hast, die Du mit einfügen des "=" zur Formel machst.
Warum steht da nicht schon die Formel?
Ich ging davon aus, dass Du die Formel nicht drin haben wolltest, damit sie sich nicht automatisch an Gegebenheiten anpasst.

Dann schreibst Du halt die Zellen voll mit Formeln und ersetzt danach das "=" durch "#".
Und wenn Du die Formeln wieder brauchst, dann ersetzt Du "#" mit "=". Ist doch ganz easy.

Das mit Formeln reinschreiben geht einmal ohne Schleife und einmal musst Du eine Schleife benutzen.
Beipiel:
1.Du hast folgende Formel:
=[MappeZu.xlsx]Tabelle1!A1

Diese Formel möchtest Du in den Bereich A1:G30 eintragen.
Manuel geht das so, dass Du den Bereich beginnen mit zelle A1 markierst und die Formel eingibst.
Alle Zellen des Bereichs sind dann mit der Formel gefüllt, wobei der Zellbezug sich automatisch angepasst hat!!!!!!!
Du kannst auch die Formel in A1 eingeben und nach rechts und unten kopieren. Die Zelladresse passt sich an!!!!

Das war das, was ich bisher versucht habe Dir zu zeigen.
Und das geht dann per VBA einfach so:

Range("A1:G30").FormulaLocal = "=[MappeZu.xlsx]Tabelle1!A1"

oder wenn der Text der Formel in Zelle A! so:
[MappeZu.xlsx]Tabelle1!A1 vorliegt,
dann
Range("A1:G30").FormulaLocal = "=" & Range("A1")

oder steht da:

[b]MappeZu.xlsx


Range("A1:BG30").FormulaLocal = "=" & "[" & Range("A1") & "]" & "Tabelle1!$A1"[/b]


Hast Du aber in Zelle A1 eine Formel, die nicht nach den Seiten oder nach oben unten kopierbar ist, dann muss jede Zelle einzeln behandelt werden.

Und die Schleife ist bei mehr als einer Spalte verschachtelt, das ginge so:

Code:
Sub test()
 Dim i As Long, j As Long
 
 For i = 1 To 30 'Zeilen
   For j = 1 To 7 'Spalten
     Cells(i, j).FormulaLocal = "=" & Cells(i, j) & "Werte!$A6"
   Next j
 Next i
End Sub


Damit dürfte ich auch raus sein hier. Es sein denn Du machst das noch irgendwie interessant für mich. :19:
Bei weiteren Fragen würde ich unbedingt eine Beispielmappe mit nachvollziehbaren und verständlichen Beispielen einstellen.
Am besten Quellmappe und Zielmappe.
Dankeeeeee! Und es funktionier genauso wie du sagst alles! Auch die Schleife tut was sie soll :)

Wohl etwas lästig, da jetzt jede Datei geöffnet werden soll(die sind ja noch nicht einmal vorhanden). Wenn ich dann ESC-Taste drücke, wenn der nach der Datei im von Excel geföffnetem Browser suchen möchte, springt er zum nächsten Feld usw. Da kann aber schonmal dauern bei meintetwegen hunderten von Feldern. Wenn ich ESC-Taste gedrückt halte, bricht der VBA-Code ab. Dann verhaspelt sich der Code wohl irgendwie.

Aber vom Grundsatz funktioniert es. Wäre natürlich für zukünftige Anwendungen deines Codes gut zu wissen, ob man das automatische Öffnen des Browsers(welche nach den verlinkten Dateien suchen möchte) unterbinden könnte(während der Ausführung des VBA-Codes).

P.S. Hurra!!!!!!!! :)
Hallo,

soviel mir bekannt, kann man da nichts machen.

Du kannst es Umgehen, indem Du eine Dummydatei die genauso heißt, wie in Deiner Formel im gleichen Pfad zu speichern.

Das könnte unter Umständen so ablaufen, dass vor Formelsetzung die Dummy Datei im Pfad erzeugt und am Ende wieder gelöscht wird.
Hab aber jetzt für so einfache Sachen keine Zeit.   Blush
Vielleicht schaut ein Anderer noch rein. Oder Du fragst gleich in einem neuen Thema nach der Vorgehensweise.
Hallöchen,

hier mal zusammengefasst das Anlegen einer Dati:

Code:
Workbooks.Add
    ActiveWorkbook.SaveAs Filename:="K:\Test.xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close


Statt "K:\Test.xlsx" müsstest Du dann eine Variable verwenden, die Deinen Dateinamen enthält.
Zusätzlich musst Du noch beachten, dass die Datei auch Blätter mit den benötigten Blattnamen enthält. Nicht immer reicht "Tabelle1"
Hallo Andre,

ich hatte mir das so vorgestellt, dass die Datei am Ende wieder gekillt wird. Die wird ja nur solange benötigt, bis die Formeln in den Zellen sind.

Eine Lösung habe ich niocht eingestellt, damit Julia auch mal etwas für ihr Geld tut. Blush
Also mit Dateien löschen, kenne ich mich überhaupt nicht aus. Ich vermute, das geht auch nicht, da man ja sonst per VBA den gesamten PC löschen könnte... Wahrscheinlich irgendwie Temporär nur erstellen die Datei im Arbeitsspeicher.

Aber das ist auch kein Problem. Das kann ich ja einfach dann außerhalb von Excel erledigen. Also alle Dateien markieren und löschen(die Datei die nicht gelöscht werden soll vorher irgendwo sichern).
Hi,
(22.02.2017, 22:39)o0Julia0o schrieb: [ -> ]Ich vermute, das geht auch nicht, da man ja sonst per VBA den gesamten PC löschen könnte...

natürlich geht das und wenn Du weißt, wie die Datei heißt, sowieso.

suche mal im Forum nach dem Begriff "kill"

gleich der erste Beitrag:
Zitat:Und dann löschst Du sie mit dieser Zeile:
Kill strVorlage & ".xl*"

und der zweite:
Code:
Kill TempFilePath & TempFileName & FileExtStr
Seiten: 1 2 3 4