Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1124to1128
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

Datenübernahme VBA per Schaltfläche

Datenübernahme VBA per Schaltfläche
Sascha
Hallo Zusammen,
etwas kniffliges für mich, aber sicher einfach für VBA-Kenner:
In anhängender Liste soll folgendes passieren:
Die Daten aus "Datenpflege!C12", ´"Datenpflege!G12", "Datenpflege!K12" und "Datenpflege!N12"
sollen mittels Auslösung eines Command-Buttons unterhalb der vier Felder in die Zellen
"Datenquelle!B3", "Datenquelle!C3!", "Datenquelle!D3!" und "Datenquelle!F3" kopiert werden.
Wenn eines der Felder C12/G12/K12/N12 leer ist, soll eine Fehlermeldung kommen, kopiert werden soll in diesem Fall nichts.
Nach Datenübernahme sollen die Felder C12/G12/K12/N12 gelöscht werden, so dass neue Daten eingeben werden können welche dann bei erneuter Datenübernahme logischerweise in die Felder unter den bereits übernommenen Daten kopiert werden (B4/C4/D4/F4 und so weiter).
Der vorhandene VBA-Code scheint leider dies nicht so richtig zu tun, da er immer das letzte Feld auslässt. Dieses bezieht die Daten allerdings nicht durch eingabe, sondern durch Zellendropown (Gültigkeit/Liste)
Hat jemand eine Lösung für mich?
LG und vielen Dank,
Sascha
https://www.herber.de/bbs/user/66939.xls

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datenübernahme VBA per Schaltfläche
02.01.2010 22:05:44
Ewald
Hallo Sascha,
Ohne den Code ausprobiert, sehe ich ein Fehler in der For-Schleife "For N = 0 to 2 ..."
Das Array hat aber 4 Felder, also schreibe mal "For N = 0 to 3 ...".
Und lass mal so schöne Wörter in diesem netten Forum bei Dir im PC.
Gruss Ewald
AW: Datenübernahme VBA per Schaltfläche
02.01.2010 22:19:21
Jürgen
Hallo Sascha,
hab mal Code unten in eine neue Sub geschrieben.
Sollte funktionieren. Eventuell noch mit Button verknüpfen, oder in deins einbauen.
Gruß Jürgen
Rückmeldung wäre nett
https://www.herber.de/bbs/user/66940.xls
AW: Datenübernahme VBA per Schaltfläche
02.01.2010 23:01:27
Jürgen
Hallo Helfer,
ich muß leider kapitulieren!!!
Da ich im Datenblatt "Datenquelle" keine Zelle über den Range("B3") auswählen kann.
Kann dadurch die letzte beschrieben Zelle nicht ermitteln , sorry
Gruß Jürgen
Anzeige
AW: Datenübernahme VBA per Schaltfläche
03.01.2010 11:50:16
fcs
Hallo Sascha,
damit eine Prozedur das macht was man möchte, muss ja zumindest der Ablauf der Aktivitäten in der richtigen Reihenfolge sein. also erst einmal die Eingaben auf Vollständigkeit prüfen und dann Werte übertragen.
Außerdem erschwert das unnötige Verwenden von verbundenen Zellen die Programmierung.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim Fx, SpaltenPflege, SpaltenQuelle, N As Integer
Dim Zeile As Long
Dim msgText As String
Dim wksPflege As Worksheet, wksQuelle As Worksheet
Set wksPflege = Worksheets("Datenpflege")
Set wksQuelle = Worksheets("Datenquelle")
Fx = Array("die Rechnungsnummer", "das Lieferdatum", "der Rechnungsbetrag", _
"die Kontonummer")
SpaltenPflege = Array(3, 7, 11, 14) 'Spalten in Datenpflege (C, G, K, N)
Const ZeilePflege As Long = 12 'Eingabezeile im Blatt Datenpflege
SpaltenQuelle = Array(2, 3, 4, 6) 'Spalten in Datenquelle (B, C, D, F)
'Eingaben Prüfen
For N = LBound(SpaltenPflege) To UBound(SpaltenPflege)
If msgText = "" Then
'Zelle mit unvollständiger Eingabe selektieren
wksPflege.Cells(ZeilePflege, SpaltenPflege(N)).MergeArea.Select
End If
If IsEmpty(wksPflege.Cells(ZeilePflege, SpaltenPflege(N))) Then
msgText = msgText & vbLf & "  - " & Fx(N)
End If
Next
If msgText  "" Then
'Fehlermeldung anzeigen
msgText = "Zur Übernahme ist " & msgText & vbLf & " notwendig!"
MsgBox msgText, vbInformation + vbOKOnly, "Fehler!"
Else
'Daten übertragen
With wksQuelle
'Nächste freie Zeile im Blatt Datenquelle
Zeile = .Cells(.Rows.Count, 3).End(xlUp).Row + 1
'Daten eintragen
For N = LBound(SpaltenPflege) To UBound(SpaltenPflege)
If SpaltenPflege(N) = 7 Then 'Lieferdatum
.Cells(Zeile, SpaltenQuelle(N)) = _
wksPflege.Cells(ZeilePflege, SpaltenPflege(N)) + 21
Else
.Cells(Zeile, SpaltenQuelle(N)) = _
wksPflege.Cells(ZeilePflege, SpaltenPflege(N))
End If
'Inhalte in Eingabezelle löschen
wksPflege.Cells(ZeilePflege, SpaltenPflege(N)).MergeArea.ClearContents
Next
End With
Range("C12").Select
End If
Set wksPflege = Nothing
Set wksQuelle = Nothing
End Sub

Anzeige
AW: Datenübernahme VBA per Schaltfläche
03.01.2010 14:57:11
Sascha
Hallo Franz,
vielen Dank für deine Mühe, das klappt super :)
Auch allen anderen danke für die Zeit und Unterstützung.
Habt mir sehr geholfen.
LG
Sascha

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige