Werner war so hilfreich und hat mir bei diesen Code weitergeholfen.
Folgendes möchte ich noch verbesserrn :
Wenn ich die Zahl eingegeben habe Bsp. Artikelnummer fragt er zum gleichen Artikel diese nochmal ab, ist es möglich das nur eine Eingabe erforderlich ist. In der Spalte wo die Artikelnummer eingetragen ist ein
Text erfasst, dieser Text ist bei allen Datensätze die zu dieser Artikelnummer passen gleich.
Ich habe dies bis jetzt immer manuell mit "Suchen und Ersetzen" bearbeitet.
Danke und Gruß Mike
Code:
Sub datenkopieren()
' datenkopieren Makro
Dim letzteZeileXLSB As Integer
Dim letzteZeileCSV As Integer
Dim datXLSB As String
Dim datXLS As String
Dim datCSV As String
Dim heute As Date
Dim wbXLSB As Workbook
Dim wsXLSB As Worksheet
Dim wbCSV As Workbook
Dim wsCSV As Worksheet
Dim pfad As String
Dim zeile1 As Integer
Dim rngBereich As Range '##neu##
Dim rngZelle As Range '##neu##
Dim loZahl As Long '##neu##
Dim boZähler As Boolean '##neu##
heute = Date
datCSV = Format$(heute, "dd.mm.yyyy") & "_tagesbestellung.csv"
datXLSB = "Arbeitsdatei2017.xlsx"
pfad = "C:\Users\Mike\Documents\Arbeit\"
Set wbXLSB = Workbooks(datXLSB)
Set wsXLSB = wbXLSB.Worksheets("Datentabelle")
'1. Arbeitsmappe datCSV öffnen
If Dir(pfad & datCSV) = "" Then
MsgBox Prompt:="Datei """ & pfad & datCSV & """ existiert nicht!", _
Buttons:=vbCritical
Exit Sub
End If
On Error Resume Next
Workbooks(datXLS).Close SaveChanges:=False
On Error GoTo 0
Set wbCSV = Workbooks.Open(Filename:=pfad & datCSV)
Set wsCSV = wbCSV.Worksheets(1)
letzteZeileXLSB = wsXLSB.Cells(Rows.Count, 1).End(xlUp).Row
letzteZeileCSV = wsCSV.Cells(Rows.Count, 1).End(xlUp).Row
wsCSV.Range("A2:M2").Resize(letzteZeileCSV - 1).Copy _
Destination:=wsXLSB.Cells(letzteZeileXLSB + 1, "A")
' auf Zahlen in Spalte D prüfen
With wsXLSB
letzteZeileXLSB = .Cells(.Rows.Count, 4).End(xlUp).Row
Set rngBereich = .Range(.Cells(2, 4), .Cells(letzteZeileXLSB, 4))
boZähler = False
For Each rngZelle In rngBereich
If Not IsNumeric(rngZelle.Value) Then
boZähler = True
loZahl = Application.InputBox("Eingabe für: " & rngZelle.Offset(, 1).Value _
& " " & rngZelle.Offset(, 3), "Zahleneingabe", , , , , , 1)
If loZahl = 0 Then Exit Sub
rngZelle = loZahl
End If
Next rngZelle
If boZähler = False Then MsgBox "Nur numerische Werte vorhanden"
End With
End Sub