Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1044to1048
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

VBA-Code optimieren

VBA-Code optimieren
03.02.2009 13:18:18
Sascha
Hallöchen Ihr Profis.
Ich nutze per CommandButton folgenden Code:

Private Sub CommandButton1_Click()
Dim Rx As Range, Sx As Range
Dim Fx, DX, N As Integer
Dim Zeile As Long
Fx = Array("die Rechnungsnummer", "das Lieferdatum", "der Rechnungsbetrag")
DX = Array("$C$12", "$G$12", "$K$12")
Set Rx = Worksheets("Datenpflege").Range("$C$12")
Set Sx = Worksheets("Datenquelle").Range("B3")
Zeile = Worksheets("Datenquelle").Cells(Rows.Count, 2).End(xlUp).Row - 2
If Rx.Value  "" Or Rx.Offset(0, 3).Value  "" Or Rx.Offset(0, 7).Value  "" Then
For N = 0 To 2
If Range(DX(N)).Value  "" Then
Sx.Offset(Zeile, N * 2).Value = Range(DX(N)).Value
Range(DX(N)).Value = ""
Else
MsgBox "Zur Übernahme ist " & Fx(N) & " notwendig!", vbCritical, "Fehler!"
Exit For
End If
Next
Else
MsgBox "Erforderliche Daten nicht vorhanden", vbCritical, "Fehler!"
End If
Set Rx = Nothing
Set Sx = Nothing
End Sub


Dieser Code kopiert mir die Daten aus den Feldern C12/G12/K12 in das Arbeitsblatt "Datenquelle"
Das einzige was abeändert werden müsste ist, dass im Feld K12 beim kopieren +21 gerechnet wird.
Im Feld K12 steht das Datum und dieses muss in der Datenquelle 21 Tage höher sein als bei Dateneingabe.
Sicherlich eine einfache Angelegenheit, aber da ich mit VBA nicht sehr viel erfahrung habe, krieg ich das allein nicht hin.
Danke für eure Hilfe :)
LG
Sascha

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Code optimieren
03.02.2009 14:09:42
Luschi
Hallo Sascha,
probiere mal Folgendes:
Sx.Offset(Zeile, N * 2).Value = Range(DX(N)).Value + IIf(N = 2, 21, 0)
Bemerkung,
die IIf()-Funktion wertet die Bedingung aus (N = 2). Trifft die Bedingung zu, dann wird die
Zahl 21 dazuaddiert, ansonsten der Wert 0.
Da Datum + Zahl wieder ein Datum ergibt, sollte es funktionieren.
Gruß von Luschi
aus klein-Paris
AW: VBA-Code optimieren
03.02.2009 14:26:00
Sascha
Dankie, klappt bestens :)
Kein wunder, dass ich es nicht geschafft habe.
Auf die Idee wär ich nie gekommen...
AW: VBA-Code optimieren
03.02.2009 15:14:00
Luschi
Hallo Sascha,
Du hättest das Problem auch so auflösen können:

If N = 2 Then
Sx.Offset(Zeile, N * 2).Value = Range(DX(N)).Value + 21
Else
Sx.Offset(Zeile, N * 2).Value = Range(DX(N)).Value
End If

Gruß von Luschi
aus klein-Paris

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige