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

Mit Funktion erste freie Zelle in anderem Workbook

Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 19:16:22
Patrick
Hallo liebe Fachmänner,
bin ein Neuling mit VBA und habe noch massive Sprachprobleme:(
Daher habe ich auch ein ganz grundsätzliches Problem und hätte gerne eure Hilfe fürs Verständnis...
Ich habe ein workbook Ziel in dem ich ein Makro starten möchte, das mir aus einem anderen Arbeitsblatt (Quelle) die nächste freie Rechnungsnummer ermittelt und diese in eine Zelle einträgt.
Leider gibts dabei Sprachbarrieren:(
Ich habe folgende tolle Funktion, die mir die erste leere Zelle in einer Spalte mitteilt (ich _
muss schauen wo der letzte rechnungsname in Spalte 2 steht, um die Rechnungsnummer aus Spalte 1 _ zu bekommen).

Public Function rowErsteFreieZelle(ByVal sh As Worksheet, Optional ByVal col As Integer = 1,  _
Optional ByVal starting_row As Integer = 1) As Long
Dim row As Long
row = starting_row
With sh
Do While (.Cells(row, col).Value  "")
row = row + 1
Loop
End With
rowErsteFreieZelle = row
Exit Function
End Function

Diese soll mir aber nun den Wert eines Sheets eines anderen (offenen) workbooks ermitteln. Etwa so...
sub holMirEndlichDieRichtigeZeilennummer ()
dim Ergebnis as long
Ergebnis = rowerstefreieZelle(Tabelle1, 2, 1)
Alle Versuche, die ich bisher gestartet habe, sind leider fehlgeschlagen(workbook aktivieren, with thisworkbook, Funktion in die andere Datei packen und dort aufrufen, eine weitere Variable wkb für die Funktion usw.)Sie liefern mir immer nur Fehler oder die Zeilennummer des Ziel-Workbooks.
Auch verstehe ich nicht, warum ich das sheet nicht mit seinem von mir vergebenen Namen ansprechen kann und warum hier keine "" benötigt werden.
Bitte helft einem Sprechanfänger bei seinem ersten Gestammel:)
Vielen Dank bereits im voraus und liebe Grüße

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 19:36:25
onur
Da brauchst du keine Funktion zu schreiben, so was gibt es schon.
Das hier genügt:

Dim FreieZeile
FreieZeile = Workbooks("Quelle.xlsm").Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row + 1

Du musst nur noch die richtigen Datei- und Blattnamen eintragen.
Abgesehen davon:
Row ist ein VBA-Befehl, also kannst du Row NICHT als Variablennamen benutzen.
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 22:39:11
Patrick
Hallo Onur,
danke für deine schnelle Antwort. Das Problem ist, dass ich die Tabelle formatiert habe und vorab schon mit den Rechnungsnummern gefüllt habe . Dann funktioniert deine Lösung leider nicht, da mir mit .End(xlUp) immer die Zelle letzte Zeile mit Formatierung und NICHT die letzte Zelle mit einem Eintrag(Text) ermittelt wird.
Vielleicht muss ich mir ja diesen Teil neu überlegen. Also mehr Code schreiben um ständig die Tabelle zu erweitern und immer neue Rechnungsnummern anlegen.
Dennoch würde mich interessieren, was ich falsch mache. Denn eigentlich müsste mein Vorgehen ja mit der richtigen Syntax umzusetzen sein.
Also vllt. kann mir das ja noch jemand erklären damit ich dazulerne:)
Danke und lieben Gruß
Anzeige
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 22:46:24
onur
Dann so:

Dim FreieZeile as Long
For FreieZeile = 1 To 10000
If Workbooks("Quelle.xlsm").Sheets("Tabelle1").Cells(FreieZeile, 2) = "" Then Exit For
Next FreieZeile

AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 22:59:28
Patrick
Coole Sache, danke Onur:)
funktioniert erst mal und ist nur halb so lang:)
Wenn ich jetzt den wert aus der Zeile davor(aus dem selben workbook) kopoieren möchte, ,wie würdest du deinen Code erweitern?
So etwa?
with workbooks("Quelle.xlsm")worksheets("Tabelle1).cells(freieZeile, 1).copy
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:00:48
onur
"aus der Zeile davor"?
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:08:02
Patrick
Sorry,viele Tippfehler:) ist schon spät
gemeint war Spalte davor, also Spalte A
..und ohne Tippfehler
Sub check()
Dim FreieZeile As Long
For FreieZeile = 1 To 10000
If Workbooks("tst.xlsm").Sheets("Test1").Cells(FreieZeile, 2) = "" Then Exit For
Next FreieZeile
With Workbooks("Quelle.xlsm")
.Worksheets("Tabelle1").Cells(FreieZeile, 1).Select
End With
End Sub
Jetzt kommt leider Laufzeitfehler 9. Index ausserhalb des gültigen Bereichs.
Irgendwie schaffe ich es nicht workbooks richt anzusprechen:(
Anzeige
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:11:20
onur
Was denn jetzt?
Workbooks("tst.xlsm").Sheets("Test1")
oder
Workbooks("Quelle.xlsm")..Worksheets("Tabelle1") ?
Wozu Select ?
Ich denke, du willst nur kopieren ?
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:32:33
Patrick
Sorry, ist mein erster Forumsthread. Bin das ganze zu unstrukturiert angegangen.
Quelle und Ziel war nur zur Verdeutlichung gewählte Begriffe.
Derzeit teste ich folgendes
Dieses Makro steht in wkb tst2.xlsm, es soll den Wert aus wkb tst.xlsm kopieren und in eine Zelle von tst2.xlsm einfügen (welche ist ja erst mal egal.
Sub check()
Dim FreieZeile As Long
For FreieZeile = 1 To 10000
If Workbooks("tst.xlsm").Sheets("Test1").Cells(FreieZeile, 2) = "" Then Exit For
Next FreieZeile
' dein Code funktioniert super und ermittelt die richtige Zeile:)
Workbooks("tst.xlsm").Worksheets("Test1").Cells(FreieZeile + 1, 1).Copy
Workbooks("tst2.xlsm").Worksheets("Test2").Cells(1, 1).Paste
End Sub

Anzeige
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:06:21
onur
Wenn, dann so:
Workbooks("Quelle.xlsm").Worksheets("Tabelle1).Cells(freieZeile-1, 2).Copy

für Spalte B
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:19:19
Patrick
Hey Onur,
wollte jetzt einfach mal den Wert testweise in die Zieldatei einfügen(tst2.xlsm).
Der Code läuft bis in die letzte Zeile, dann Laufzeitfehler 9. Mappe und Tabellenname richtig geschrieben.Was verstehe ich nicht?
Sub check()
Dim FreieZeile As Long
For FreieZeile = 1 To 10000
If Workbooks("tst.xlsm").Sheets("Test1").Cells(FreieZeile, 2) = "" Then Exit For
Next FreieZeile
Workbooks("tst.xlsm").Worksheets("Test1").Cells(FreieZeile + 1, 1).Copy
Workbooks("tst2.xlsm").Worksheets("Test2").Cells(1, 1).Paste
End Sub

Anzeige
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:28:10
onur
Was weiss ich, was du da für einen Mist machst?
Heisst die Datei, wo du einfügen willst, wirklich "tst2.xlsm" und das Blatt darin "Test2"?
Cells(FreieZeile + 1,2)?
Willst du eine leere Zeile kopieren?
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 23:47:54
Patrick
Mist ist wohl der richtige Ausdruck:( Habe erst diese Woche angefangen....
Mappe und Tabelle heissen wirklich so....
freie zeile (von Spalte B) + 1 weil die nächste ReNr in Spalte A ja eine Zeile tiefer stehen würde:
Re Nr TestKunde
1 Mayer
2 Müller
3
Die nächst rechnungsnummer wäre also die 3.
Nur copy und paste funktioniert nicht
Bei der Zeile mit paste kommt:
Laufzeitfehler 438, Objekt unterstützt dei Methode nicht....
Aber danke, du hast mir schon geholfen. Vllt muss ich diesen Fehler ja selber finden....:)
Anzeige
AW: Mit Funktion erste freie Zelle in anderem Workbook
25.03.2019 22:40:23
Patrick
Hallo Onur,
danke für deine schnelle Antwort. Das Problem ist, dass ich die Tabelle formatiert habe und vorab schon mit den Rechnungsnummern gefüllt habe . Dann funktioniert deine Lösung leider nicht, da mir mit .End(xlUp) immer die Zelle letzte Zeile mit Formatierung und NICHT die letzte Zelle mit einem Eintrag(Text) ermittelt wird.
Vielleicht muss ich mir ja diesen Teil neu überlegen. Also mehr Code schreiben um ständig die Tabelle zu erweitern und immer neue Rechnungsnummern anlegen.
Dennoch würde mich interessieren, was ich falsch mache. Denn eigentlich müsste mein Vorgehen ja mit der richtigen Syntax umzusetzen sein.
Also vllt. kann mir das ja noch jemand erklären damit ich dazulerne:)
Danke und lieben Gruß
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige