Ergänzung zu VBA Code
Hallo ihr Lieben...
ich habe folgenden Code erstellt.
Allerdings bräuchte ich ne kleine Ergänzung, die ich als "Laie" nicht so hinbekomme wie gewünscht.
Wenn er die Kundennummer eingefügt hat soll er automatisch eine Zeile unter den letzten vorhandenen Datensatz springen, bevor er wieder zu "Kundennummer neu" springt. Damit die eingegebene Nummer nicht wieder überschrieben wird beim nächsten Mal
Ich hoffe, dass ihr mir da weiterhelfen könnt..
Sub Neue_Kundennummer_in_Hauptdatei()
'
' Neue_Kundennummer_in_Hauptdatei Makro
'
'
Range("B4").Select
Selection.Copy
Sheets("Hauptdatei").Select
Range("A8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A9").Select
Sheets("Kundennummer neu").Select
Application.CutCopyMode = False
End Sub
Vielen Dank
Antwort schreiben
Antwort 1 von Saarbauer vom 03.10.2021, 16:26 Options
Hallo,
ich habe das makro mir mal angesehen, ist aber ohhne die dazugehörige Datei etwas schwer nachzuvollziehen.
Sub Neue_Kundennummer_in_Hauptdatei()
' Neue_Kundennummer_in_Hauptdatei Makro
Range("B4").Select auf welchem Sheet steht der Cusor ?
Selection.Copy
Sheets("Hauptdatei").Select
Range("A8").Select sollen immer die Daten aus A8 kopiert werden?
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A9").Select sollen die Daten immer nach A9 kopiert werden?
Sheets("Kundennummer neu").Select
Application.CutCopyMode = False
End Sub
Es ist daher nicht so einfach dir einen Rat zu geben wo genau der Fehler ist, ich vermute aber in den Range-Anweisungen
Gruß
Helmut
Antwort 2 von rainberg vom 03.10.2021, 16:59 Options
Hallo DOMMEI,
probier's mal so
Option Explicit
Sub test()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim intZeile As Integer
Set ws1 = Worksheets("Kundennummer neu")
Set ws2 = Worksheets("Hauptdatei")
If IsEmpty(ws2.Range("A8")) Then
intZeile = 8
Else
intZeile = ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
ws1.Range("B4").Copy ws2.Range("A" & intZeile)
End Sub
Gruß
Rainer
Antwort 3 von DOMMEl vom 03.10.2021, 18:42 Options
@Saarbauer
Also der Cursor steht auf B4 im Tabellenblatt "Kundennummer neu", diese Zeile wird kopiert mit Strg C
und dann als Inhalt in ein anderes Tabellenblatt nennt sich "Hauptdatei" eingefügt. In die Zeile A8 (das war die Zeile unter dem letzten vorhandenen Datensatz).
Dort wird dann das Feld B4 eingefügt als Inhalt Werte.
Wenn das geschehen ist geht er zurück ins "Kundennummer neu "Tabellenblatt und die Taste Esc wird gedrückt damit die Kopierfunktion beendet wird.
Was mir noch fehlt, ist halt, dass er immer unter dem letzten Datensatz springt und da das Kopierte einfügt
Antwort 4 von DOMMEl vom 03.10.2021, 18:43 Options
ich glaube auch dass es an dem Range liegt.
B4 ist ja noch richtig... nur das A8 und A9 müsste durch etwas ersetzt werden, wo gesagt wird, dass er unter den letzten DAtensatz einfügen soll. Das weiß ich leider nicht wie das geht
Antwort 5 von Saarbauer vom 03.10.2021, 19:53 Options
Hallo,
versuch es mal so
Sub Neue_Kundennummer_in_Hauptdatei()
' Neue_Kundennummer_in_Hauptdatei Makro
' Range("B4").Select kann entfallen
ActiveCell.Select
Selection.Copy
Sheets("Hauptdatei").Select
Range("A" & Rows.Count, 1).End(xlUp).Row + 1
).Select 'geändert
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Range("A9").Select kann entfallen
Sheets("Kundennummer neu").Select
Application.CutCopyMode = False
End Sub
Gruß
Helmut
Antwort 6 von DOMMEl vom 03.10.2021, 21:57 Options
Er sagt: Fehler beim Kompilieren
Syntaxfehler
Antwort 7 von DOMMEl vom 03.10.2021, 22:04 Options
Er sagt: Fehler beim Kompilieren
Syntaxfehler
und meckert hier:
Range("A" & Rows.Count, 1).End(xlUp).Row + 1).Select
vl eine klammer zu wenig oder zu viel??
Antwort 8 von coros vom 04.10.2021, 06:34 Options
Hallo DOMMEI,
wenn ich das richtig verstanden habe, dann soll das Makro immer den Wert aus Tabellenblatt "Kundenummer Zelle B4" in das Blatt "Hauptdatei" in die erste freie Zelle in Spalte A eingefügt werden. Das macht nachfolgendes Makro.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Sub Neue_Kundennummer_in_Hauptdatei()
Dim lngFirstRow As Long
Application.ScreenUpdating = False
'erste freie Zelle in Blatt "Hauptdatei" ermitteln
lngFirstRow = Sheets("Hauptdatei").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'Wert aus Blatt "Kundennummer" Zelle B4 kopieren...
Sheets("Kundennummer").Range("B4").Copy
'und in Blatt "Hauptdatei" erste freie Zelle Spalte A einfügen
Sheets("Hauptdatei").Range("A" & lngFirstRow).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
Ich hoffe, Du meintest das so? Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 9 von rainberg vom 04.10.2021, 07:54 Options
Hallo miteinander,
ich hatte es so verstanden, dass die kopierten Werte aus B4 von "Kundennummer
neu", in "Hauptdatei" beginnend mit A8, eingefügt werden sollen.
Genau das macht mein Makro!
Gruß
Rainer
Antwort 10 von coros vom 04.10.2021, 07:59 Options
Moin Rainer,
das kann wohl nur @DOMMEI beantworten, warum für ihn Dein Makro nicht in Frage kommt, obwohl es das macht, was er sich vorgestellt hat. Ich habe mich nur auf das Makro von ihm bezogen, weil er hier den Fehler erhalten hat.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 11 von Saarbauer vom 04.10.2021, 12:43 Options
Hallo,
ein Fehler in meinem Makro, da kein richtiger Test möglich ist, dazu wäre ein Nachbau der Datei erforderlich,
Range("A" & Range("A65536").End(xlUp).Row+ 1).Select
Gruß
Helmut
Antwort 12 von DOMMEl vom 04.10.2021, 12:53 Options
@rainberg
was du für mich erstellt hast, habe ich in dieser Form schon.
@coros
leider führt er bei deinem nix aus.
Meiner sah ja so aus:
Sub Neue_Kundennummer_in_Hauptdatei()
'
' Neue_Kundennummer_in_Hauptdatei Makro
'
'
Range("B4").Select
Selection.Copy
Sheets("Hauptdatei").Select
Range("A8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A9").Select
Sheets("Kundennummer neu").Select
Application.CutCopyMode = False
End Sub
Für die fett geschriebenen Punkt fehlt mir halt so etwas, dass er stattdessen, die Sachen aus "Kundennummer neu B4" in die erste freie Zeile in Spalte A von "Hauptdatei" einfügt.
Antwort 13 von DOMMEl vom 04.10.2021, 12:54 Options
und nicht in die festvergebenen Zeilen, die hier "A8" und "A9" sind (die waren halt bei mir frei)
Antwort 14 von coros vom 04.10.2021, 13:57 Options
Hallo Domei,
ändere mal in dem Makro von mir in der Zeile
Sheets("Kundennummer").Range("B4").Copy
den Blattnamen in "Kundennummer neu", also lautet die Zeile dann
Sheets("Kundennummer neu").Range("B4").Copy
dann sollte es funktionieren.
Wobei ich nicht so richtig weiß, was Du eigentlich gegen Rainers Makro hast, denn das macht eigentlich auch dass, was Du willst.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 15 von DOMMEl vom 04.10.2021, 14:11 Options
sowas wie er mir dankenswerter weise erstellt hat habe ich leider schon als Makro, sodass er auch nur die Inhalte einfügt, wie ich es vorhatte, was mir halt fehlte: ist der Befehl, dass er sich automatisch die erste Spalte nimmt und da die erste freie Zeile sucht und das da einfügt.
deins funktioniert trotz Änderung irgendwie nicht..
Antwort 16 von DOMMEl vom 04.10.2021, 14:30 Options
Habe das eingefügt...
Option Explicit
Sub Neue_Kundennummer_in_Hauptdatei()
Dim lngFirstRow As Long
Application.ScreenUpdating = False
'erste freie Zelle in Blatt "Hauptdatei" ermitteln
lngFirstRow = Sheets("Hauptdatei").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'Wert aus Blatt "Kundennummer" Zelle B4 kopieren...
Sheets("Kundennummer neu").Range("B4").Copy
'und in Blatt "Hauptdatei" erste freie Zelle Spalte A einfügen
Sheets("Hauptdatei").Range("A" & lngFirstRow).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
.... aber er führt nix aus...leider :-(.. was ist denn die Anweisung / der VBA Code dafür, dass er in der "Hauptdatei" sucht in Spalte A nach der ersten freien Zeile und dort das aus "kundennummer neu" "b4" einfügt
Antwort 17 von rainberg vom 04.10.2021, 14:32 Options
Hallo DOMMEI,
da kann ich nur noch mal wiederholen, mein Makro macht genau das, was Du
mehrfach anforderst.
Hast Du es wenigstens mal getestet?
Andernfalls hast Du nicht das gefragt, was Du in Wirklichkeit wissen willst.
Gruß
Rainer
Antwort 18 von coros vom 04.10.2021, 14:44 Options
Hallo DOMMEI,
Du kannst Dich darauf verlassen, dass mein Makro zu 100% das macht, was Du gefordert hast. Es kopiert den Wert aus Tabellenblatt "Kundennummer neu" Zelle "B4" und fügt diesen kopierten Wert in Tabellenblatt "Hauptdatei" in die erste freie Zelle in Spalte A ein. Das war von Dir gefordert und das macht das Makro.
Ich kann Rainer nur zustimmen
Zitat:
Andernfalls hast Du nicht das gefragt, was Du in Wirklichkeit wissen willst.
Eventuell sieht Deine Datei ja auch nur anders aus, als das was wir uns als Beispieldatei erstellt haben. Lade daher mal Deine Datei z.B.
http://www.file-upload.net/ hoch und teile uns den Link, den Du erhälst hier mit.
Du kannst Dir aber auch mal meine Beispieldatei unter
http://www.excelbeispiele.de/Beispiele_Supportnet/Beispiel_Kundenum... herunterladen und da wirst Du sehen, dass das Makro das macht, was Du willst.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 19 von Saarbauer vom 04.10.2021, 14:49 Options
Hallo,
auch mein Makro müsste es leisten, da unsere Makros alle auf den Gleichen weg führen.
Ich kann mich daher @rainberg und @coros nur anschliessen
Gruß
Helmut
Antwort 20 von DOMMEl vom 04.10.2021, 15:44 Options
mhhh.. nun bin ich irgendwie ratlos oder total verpeilt..
@rainberg.. dein Makro hat funktioniert... bestens, es allerdings genau so wie meins...
@coros.. die datei die du gemacht hast funktioniert blendend und genau sowie ich mir das gedacht und gesagt habe mit dem code.. aber in meiner datei wills nicht das machen was du da super erstellt hast...deshalb bin ich jetzt total verwirrt...
hier einmal der link meiner datei:
http://www.file-upload.net/download-1925591/ExcelHauptdatei.xls.html