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.

Zellwert zu Formel in anderer Zelle machen -> 4x4 zu =4x4
#31
(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.
Antworten Top
#32
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&"]"
Antworten Top
#33
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.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • o0Julia0o
Antworten Top
#34
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!!!!!!!! :)
Antworten Top
#35
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.
Gruß Atilla
Antworten Top
#36
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"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • o0Julia0o
Antworten Top
#37
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
Gruß Atilla
Antworten Top
#38
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).
Antworten Top
#39
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
Antworten Top


Gehe zu:


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