Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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

VBA: Autofill Funktion Range Cells

VBA: Autofill Funktion Range Cells
25.05.2020 19:00:39
chemorio
Moin,
Beschäftige mich bereits seit Stunden mit diesem Problem, aber keine Lösung gefunden. Ich habe in 4 Zellen jeweils eine Zahl stehen, die für die Zeilen und Spaltennummern zweier Zellen einer Range (B11:L1810) stehen. Siehe Userbild
Jetzt möchte ich in B11 eine Verknüpfung zu einer Zelle in einem externen Excel-File herstellen (C:\Dokumente\[file.xlsm]sheet1'!'A1) und diese Zelle dann per AutoFill auf den Bereich B11:L11 erweitern. Das ganze habe ich per Makro aufgezeichnet und versuche nun den Bereich für die AutoFill Funktion dynamisch per "Cells()" anzusteuern, aber es klappt einfach nicht.
Nachfolgend mein Makro. Die Fett-formatierte Zeile funktioniert nicht.
' Definition der Variablen
'
Zeile_Start = Range("E4")
Zeile_Ende = Range("E5")
Spalte_Start = Range("C4")
Spalte_Ende = Range("C5")
'
' Ansteuern des Bereiches mit den vorher definierten Variablen.
'
ActiveSheet.Cells(Zeile_Start, Spalte_Start).Select
ActiveCell.FormulaR1C1 = _
"='C:\Dokumente\[file.xlsm]sheet1'!A1"
Cells(Zeile_Start, Spalte_Start).Select
Selection.AutoFill Destination:=Range(Cells(Zeile_Start, Spalte_Start), Cells(Zeile_Start, Spalte_Ende)), Type:=xlFillValues
Range("B11:L11").Select
Selection.AutoFill Destination:=Range("B11:L1810"), Type:=xlFillValues
Calculate
Range("B11:L1810").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Folgendes habe ich auch probiert, um "select" zu umgehen:
Range("B11").AutoFill Destination:=Range(Cells(Zeile_Start, Spalte_Start), Cells(Zeile_Start, Spalte_Ende))
Hier kann ich aber B11 nicht durch Cells ersetzen, warum auch immer...
Wie man am weiteren Code sehen kann möchte ich eigentlich den Bereich B11:L1810 per Autofill ausfüllen. Vielleicht hat auch jemand eine Idee wie dies effizienter als mit diesem "2-Schritt-Prozedere" klappen könnte?

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Autofill Funktion Range Cells
25.05.2020 20:25:59
Daniel
hi
da läuft noch vieles falsch.
ist mir jetzt zu viel alles zu beschreiben.
dein größter Fehler ist, dass die Fehlerbeschreibung "Klappt nicht" als Ausgangsbasis für eine funktionierende Lösung so hilfreich ist wie "machs anders" als Lösungsvorschlag.
du solltest schon genauer beschreiben wie sich das "klappt nicht" bemerkbar macht, dh gibt es eine Fehlermeldung, wenn ja welche und in welcher Zeile?
Wenn nein, was macht der Code und was sollte er deiner Ansicht nach tun?
am einfachsten geht's, wenn du auf Autofill verzichtest und die Formel gleich in alle Zellen auf einmal schreibst.
das geht auch und entspricht, wenn man den Vorgang in gleicher weise von Hand ausführen und aufzeichnen will, folgendem:
- markiere zuerst alle Zellen die die Formel bekommen sollen
- gebe die Formel in die aktive Zelle ein und schließe die Eingabe mit STRG+ENTER ab. Die Formel wird dann in alle Zellen übernommen
auch das ersetzen der Formeln durch ihre Werte kann man einfacher schreiben.
damit sieht dein Code dann so aus:

Zeile_Start = Range("E4")
Zeile_Ende = Range("E5")
Spalte_Start = Range("C4")
Spalte_Ende = Range("C5")
With Range(Cells(Zeile_Start, Spalte_Start), Cells(Zeile_Ende, Spalte_Ende))
.Formula = "='C:\Dokumente\[file.xlsm]sheet1'!A1"
.Formula = .Value
End with 
Gruß Daniel
Anzeige
AW: VBA: Autofill Funktion Range Cells
26.05.2020 17:40:58
chemorio
Vielen Dank Daniel,
du hast mir sehr geholfen und mich auf den richtigen Trichter gebracht! Ich habe auf Autofill verzichtet. Nur deine vorgeschlagene Zeile:
.Formula = .Value
verursacht einen "Laufzeitfehler'1004'". Was genau sollte diese Codezeile tun?
Wenn ich diese Zeile auskommentiere klappt es aber mit folgendem Code:
Sub final()
' final Makro
' Definieren der Variablen, um den Bereich der mit der Quelldatei geupdated werden soll,  _
dynamisch auszuwaehlen.
Zeile_Start = Range("E4")
Zeile_Ende = Range("E5")
Spalte_Start = Range("C4")
Spalte_Ende = Range("C5")
With Range(Cells(Zeile_Start, Spalte_Start), Cells(Zeile_Ende, Spalte_Ende))
.Formula = "='C:\Dokumente\[file.xlsm]sheet1'!A1"
.Select
'    .Formula = .Value
' Auswahl kopieren
'Range(Cells(Zeile_Start, Spalte_Start), Cells(Zeile_Ende, Spalte_Ende)).Select
.Copy
' Kopierte Zellen einfügen, jedoch nur die Werte (xlValues)
.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' Kopieren-Modus ausschalten
Application.CutCopyMode = False
' Abschluss-Meldung (optional)
MsgBox "Formeln in " & Selection.Cells.Count & " Zellen durch ihren Wert ersetzt!"
End With
End Sub

Anzeige
AW: VBA: Autofill Funktion Range Cells
26.05.2020 18:07:34
Daniel
Hi
Das ersetzt die Formeln durch das Formelergebnis, genauso die dein Copy / PasteSpecial xlpastevalues.
Und funktioniert normalerweise problemlos.
Wenns hier einen Fehler gibt, müsste das mit deinen Daten zusammen hängen.
Man kann beides verwenden, was einem besser gefällt.
Ich bevorzuge im Regelfall das .Formula = .Value, weil es nur eine Programmzeile benötigt und nicht zwei.
Außerdem werden hierbei eventuell als Text formatierte Zahlen in Zahlen gewandelt und ein Formelergebnis "" (Leerstring) in eine Leerzelle.
Bei .Copy/.PasteSpecial bleiben solche Werte Text.
Gruß Daniel
Anzeige

21 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige