PDA

Vollständige Version anzeigen : VBA-Programmierung


der_phanter
21.07.2014, 09:58
Hallo.

Ich bin ein Neuling im Bereich VBA! Deswegen meine Frage:

Ich möchte, wenn ich einen Button anklicke, einen Wert von einer bestimmten Zelle (Tabelle 1, Zelle "C15") in ein anderes Tabellenblatt (Tabelle 2, Zelle "C5") verschieben. Die Zelle (Tabelle 1, Zelle "C15") soll sich danach leeren.

Wenn wieder ein Wert in Tabelle 1, Zelle "C15" steht und ich ihn wieder per Button verschiebe, soll er den Wert nicht in Tabelle 2, Zelle "C5" eintragen (denn da steht ja schon ein Wert), sonder Zelle "C6"! usw.

Wie kann ich das am besten umsetzten??

der_phanter

Crazy Tom
21.07.2014, 10:13
Hallo

das wäre ein Weg
Option Explicit

Sub rueber()
Dim lngLetzteZeile As Long
If Worksheets("Tabelle2").Range("C5").Value = "" Then
lngLetzteZeile = 5
Else
lngLetzteZeile = Worksheets("Tabelle2").Cells(Rows.Count, 3).End(xlUp).Row + 1
End If
Worksheets("Tabelle2").Cells(lngLetzteZeile, 3).Value = Range("C15").Value
Range("C15").ClearContents
End Sub
MfG Tom

der_phanter
21.07.2014, 12:57
Vielen Dank für die schnelle Hilfe!

Eine Frage hätte ich trotzdem noch.

Wenn ich jetzt nicht nur einen Wert hätte (Tabelle 1, Zelle "C15") sondern auch noch Zelle "C16" und "C17" und alle 3 übertragen werden sollen? Wie schreib ich das? Der Rest bleibt gleich (in die nächste freie Zelle schreiben)

der_phanter

Crazy Tom
21.07.2014, 13:05
Hallo

meinst du so?
Option Explicit

Sub rueber()
Dim lngLetzteZeile As Long
If Worksheets("Tabelle2").Range("C5").Value = "" Then
lngLetzteZeile = 5
Else
lngLetzteZeile = Worksheets("Tabelle2").Cells(Rows.Count, 3).End(xlUp).Row + 1
End If
Worksheets("Tabelle2").Cells(lngLetzteZeile, 3).Value = Range("C15").Value
Worksheets("Tabelle2").Cells(lngLetzteZeile + 1, 3).Value = Range("C16").Value
Worksheets("Tabelle2").Cells(lngLetzteZeile + 2, 3).Value = Range("C17").Value
Range("C15:C17").ClearContents
End Sub
MfG Tom

der_phanter
21.07.2014, 13:37
Vielen Dank. Funktioniert!

Kann ich auch ihr Beispiel für eine andere Spalte gleich darunter setzen und über den gleichen Button laufen lassen? Vielleicht beide unter "Sub rueber()"?

der_phanter

Crazy Tom
21.07.2014, 16:36
Hallo

klar geht das
du musst nur sagen was du wo haben möchtest

MfG Tom

der_phanter
21.07.2014, 19:21
Hallo.

Ich habe dein Makro kopiert und angepasst. Das hat auch wunderbar funktioniert. Dann habe ich genau darunter das gleiche nochmal eingefügt und für die nächste Spalte angepasst (statt Spalte "C" jetzt Spalte "D").

Aber das war wahrscheinlich falsch, denn ich habe eine Fehlemeldung bekommen.

Ich habe in Tabelle 1,Zelle "C15" eine Wert (Anzahl). In Zelle "D15" steht die Beschreibung dazu. Beide Daten möchte ich in Tabelle 2, Zelle "C5" (Anzahl) und Zelle "D5" (Beschreibung) eingefügt haben. Und folgend, wie oben beschrieben.

Hilft dir das weiter? Wenn nicht, versuche ich es noch besser zu beschreiben.

Vielen Dank schon mal für deine Hilfe!

der_phanter

Crazy Tom
21.07.2014, 19:27
Hallo

das würde im Prinzip so aussehen
Option Explicit

Sub rueber()
Dim lngLetzteZeile As Long
If Worksheets("Tabelle2").Range("C5").Value = "" Then
lngLetzteZeile = 5
Else
lngLetzteZeile = Worksheets("Tabelle2").Cells(Rows.Count, 3).End(xlUp).Row + 1
End If
Worksheets("Tabelle2").Cells(lngLetzteZeile, 3).Value = Range("C15").Value
Worksheets("Tabelle2").Cells(lngLetzteZeile, 4).Value = Range("D15").Value
Worksheets("Tabelle2").Cells(lngLetzteZeile + 1, 3).Value = Range("C16").Value
Worksheets("Tabelle2").Cells(lngLetzteZeile + 1, 4).Value = Range("D16").Value
Worksheets("Tabelle2").Cells(lngLetzteZeile + 2, 3).Value = Range("C17").Value
Worksheets("Tabelle2").Cells(lngLetzteZeile + 2, 4).Value = Range("D17").Value
Range("C15:D17").ClearContents
End Sub
MfG Tom

der_phanter
21.07.2014, 19:49
Vielen Dank für die Hilfe. Klappt wunderbar!!

Bis vielleicht zum nächsten mal (wenn ich was wissen muss)

der_phanter