Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1876to1880
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

wähle nächste leere Zelle

wähle nächste leere Zelle
18.04.2022 18:10:30
Claudia
Hallo zusammen,
ich versuche seit Tagen ein Problem zu lösen und komme einfach nicht weiter. Ich bin absoluter Neuling und beschäftige mich erst seit 3 Wochen mit VBA.
Ich hoffe mir kann jemand hier helfen.
Ich habe ein Formulare zur Anforderung von Arbeitshandschuhen.
1. Dieses wird nach dem ausfüllen mittels VBA Button in eine PDF umgewandelt
2. und als E-Mail versendet.
3. Die PDF wird im Server gepeichert.
4. Die Zellen nach dem absenden automatisch geleert.
5. Nun sollen die Daten mit dem gleichen Button in eine andere geschlossene Arbeitsmappe kopiert werden. Damit man den Verbrauch der jeweiligen Abteilungen auswerten kann.
Wie bekomme ich es hin das die Daten immer in die nächste leere Zelle einer bestimmten Spalte kopiert wird?
Mein VBA Code zu Punkt 5. lautet:
Workbooks.Open "M:\00_ServerNeu\Produktionslogistik\Test Ziel1.xlsm"
Windows("Test Handschuhe_Halle 2.xlsm").Activate
Range("A11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Dim ErstefreieZelle As Long
ErstefreieZelle = Range("A1").End(x1Down).Row + 1
Range("A" & ErstefreieZelle).Select
Windows("Test_Handschuhe_Halle 2.xlsm").Activate
Range("A7").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Dim ErstefreieZelle As Long
ErstefreieZelle = Range("B1").End(x1Down).Row + 1
Range("B" & ErstefreieZelle).Select
Windows("Test_Handschuhe_Halle 2.xlsm").Activate
Range("B27").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Dim ErstefreieZelle As Long
ErstefreieZelle = Range("C1").End(x1Down).Row + 1
Range("C" & ErstefreieZelle).Select
Windows("Test_Handschuhe_Halle 2.xlsm").Activate
Range("B26").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Test Ziel1.xlsm").Activate
Dim ErstefreieZelle As Long
ErstefreieZelle = Range("D1").End(x1Down).Row + 1
Range("D" & ErstefreieZelle).Select
Ich bekomme immer die Fehlermeldung:
Fehler beim Komplementieren
Mehrfachdeklaration im aktuellen Gültigkeitsbereich.
Und
ErstefreieZelle As Long
wird blau angezeigt.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wähle nächste leere Zelle
18.04.2022 18:47:56
onur
Wenn du alle DIM-Anweisungen immer am Anfang der Sub schreiben würdest (dahin, wo sie hingehören), würdest du auch merken, wenn die eine DIM-Anweisung mehrfach existiert.
AW: wähle nächste leere Zelle
18.04.2022 20:44:39
ralf_b
für deine vielen activate, Selects und cutcopymode Codebestandteile gibt es auch eine Lösung. Und zwar die direkte Zuweisung der Zellwerte.

Windows("Test Ziel1.xlsm").Range("A"& ErstefreieZelle).value = Windows("Test Handschuhe_Halle 2.xlsm").Range("A11").value
Falls du eine Beispieldatei hochladen würdest, wird dir sicher hier ein sehr kurzer Code im Vergleich zu Deinem bereitgestellt.
Anzeige
AW: wähle nächste leere Zelle
18.04.2022 21:08:08
GerdL
Moin,
exemplarisch.

Sub Unit()
Dim wbZ As Workbook, wbQ As Workbook
Dim wsZ As Worksheet, wsQ As Worksheet
Dim Ziel As Range, Quelle As Range
Set wbZ = Workbooks.Open("M:\00_ServerNeu\Produktionslogistik\Test Ziel1.xlsm")
Set wbQ = Workbooks("Test Handschuhe_Halle 2.xlsm")
Set wsZ = wbZ.Worksheets("Tabelle1")
Set wsQ = wbQ.Worksheets("Tabelle1")
Set Quelle = wsQ.Range("B27")
Set Ziel = wsZ.Cells(wsZ.Rows.Count, "B").End(xlUp).Offset(1, 0)
Quelle.Copy Destination:=Ziel
Set Ziel = Nothing: Set Quelle = Nothing: Set wsQ = Nothing: Set wsZ = Nothing: Set wbQ = Nothing: Set wbZ = Nothing
End Sub
Gruß Gerd
Anzeige
AW: wähle nächste leere Zelle
19.04.2022 17:04:52
Claudia
Hi, vielen Dank für die schnellen Antworten.
Gerd, dein Code passt genau zu meinem Problem.
Er funktioniert.
AW: wähle nächste leere Zelle
20.04.2022 21:17:06
Claudia
Hallo zusammen.
Ich muss Euch leider noch einmal um Hilfe bitten. Ich hätte auch einmal eine Beispieldatei hochgeladen aber das klappt irgendwie nicht.
Darum nur einmal der Code. in abgekürzter Form, da sonst alles zu lang wird. :)

Sub PDFundSendenHalle()
Dim DateiName As String
DateiName = "M:\00_ServerNeu\Produktionslogistik\PDF_Handschuhe\Halle 2\2022\" & Format(Now, "dd_mm_yyyy_hh.mm") & "Anforderung Halle 2" & ".pdf"
Range("A1:E39").ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Dim Outlook As Object
Dim OutlookMailItem As Object
Dim myAttachments As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMailItem = OutlookApp.CreateItem(0)
Set myAttachments = OutlookMailItem.Attachments
With OutlookMailItem
.To = "Zentralmagazin.de>"
.Subject = "Handschuh - Bestellung - Halle 2"
.Body = "Bitte die Bestellung im Anhang bearbeiten. Vielen Dank"
myAttachments.Add DateiName
.Display
End With
Set OutlookApp = Nothing
Set OutlookMailItem = Nothing
Dim wbZ As Workbook, wbQ As Workbook
Dim wsZ As Worksheet, wsQ As Worksheet
Dim Ziel As Range, Quelle As Range
Set wbZ = Workbooks.Open("M:\00_ServerNeu\Produktionslogistik\Test Ziel1.xlsm")
Set wbQ = Workbooks("Handschuhe_Halle 2.xlsm")
Set wsZ = wbZ.Worksheets("Tabelle1")
Set wsQ = wbQ.Worksheets("Tabelle1")
Set Quelle = wsQ.Range("A11")
Set Ziel = wsZ.Cells(wsZ.Rows.Count, "A").End(xlUp).Offset(1, 0)
Quelle.Copy Destination:=Ziel
Set wsZ = wbZ.Worksheets("Tabelle1")
Set wsQ = wbQ.Worksheets("Tabelle1")
Set Quelle = wsQ.Range("B26")
Set Ziel = wsZ.Cells(wsZ.Rows.Count, "B").End(xlUp).Offset(1, 0)
Quelle.Copy Destination:=Ziel
Set wsZ = wbZ.Worksheets("Tabelle1")
Set wsQ = wbQ.Worksheets("Tabelle1")
Set Quelle = wsQ.Range("B28")
Set Ziel = wsZ.Cells(wsZ.Rows.Count, "C").End(xlUp).Offset(1, 0)
Quelle.Copy Destination:=Ziel
Set Ziel = Nothing: Set Quelle = Nothing: Set wsQ = Nothing: Set wsZ = Nothing: Set wbQ = Nothing: Set wbZ = Nothing
ActiveWorkbook.Save
ActiveWindow.Close
'ZellenLeeren()
Range("A7").Select
Selection.ClearContents
Range("A11").Select
Selection.ClearContents
Range("B26").Select
Selection.ClearContents
Range("B27").Select
Selection.ClearContents
ActiveWindow.ScrollColumn = 1
ActiveWindow.SmallScroll Down:=-24
End Sub
Das Makro funktioniert so wie es ist gut, jetzt möchte ich aber das nur die Werte kopiert werden ohne die Formeln die sich in der Datei
Workbooks("Test Handschuhe_Halle 2.xlsm")
befinden. Ich habe das Forum schon durchsucht und auch den Makrorekorder eingesetzt aber ich bekomme es einfach nicht hin.
Kann mir noch einmal jemand helfen?
LG
Anzeige
AW: wähle nächste leere Zelle
20.04.2022 21:38:15
ralf_b
with wsZ,usedrange.cells
.value = .value
end with
update wsZ. statt wsZ, owT
20.04.2022 21:41:20
ralf_b
AW: wähle nächste leere Zelle
21.04.2022 08:25:43
GerdL
Moin Claudia,
eine Möglichkeit.

Dim wbZ As Workbook, wbQ As Workbook
Dim wsZ As Worksheet, wsQ As Worksheet
Dim Ziel As Range, Quelle As Range
Set wbZ = Workbooks.Open("M:\00_ServerNeu\Produktionslogistik\Test Ziel1.xlsm")
Set wbQ = Workbooks("Handschuhe_Halle 2.xlsm")
Set wsZ = wbZ.Worksheets("Tabelle1")
Set wsQ = wbQ.Worksheets("Tabelle1")
Set Quelle = wsQ.Range("A11")
Set Ziel = wsZ.Cells(wsZ.Rows.Count, "A").End(xlUp).Offset(1, 0)
Ziel.Value = Quelle.Value
Set Quelle = wsQ.Range("B26")
Set Ziel = wsZ.Cells(wsZ.Rows.Count, "B").End(xlUp).Offset(1, 0)
Ziel.Value = Quelle.Value
Set Quelle = wsQ.Range("B28")
Set Ziel = wsZ.Cells(wsZ.Rows.Count, "C").End(xlUp).Offset(1, 0)
Ziel.Value = Quelle.Value
Set Ziel = Nothing: Set Quelle = Nothing: Set wsQ = Nothing: Set wsZ = Nothing: Set wbQ = Nothing: Set wbZ = Nothing
ActiveWorkbook.Save
ActiveWindow.Close
'ZellenLeeren()
Range("A7,A11,B26,B27").ClearContents
Gruß Gerd
Anzeige
AW: wähle nächste leere Zelle
21.04.2022 20:55:02
Claudia
Super, auch das klappt Gerd.
Vielen lieben Dank auch an Ralf für die schnelle Antwort.
Schönen Abend noch.

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige