5.4k Aufrufe
Gefragt in Tabellenkalkulation von dommel Mitglied (361 Punkte)
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

22 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
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
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
@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
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
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
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
Er sagt: Fehler beim Kompilieren
Syntaxfehler
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
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??
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
...