VBA Code verändern

Hallo,
wie kann ich diesen Code denn so verändern,

Private Sub KaufButton_Click()
WertÜbertragen „G10“, 1, 9
WertÜbertragen „F10“, 2, 9
WertÜbertragen „F11“, 3, 9
WertÜbertragen „B5“, 4, 9
WertÜbertragen „B4“, 5, 9
WertÜbertragen „C20“, 6, 9
WertÜbertragen „F9“, 7, 9
End Sub

Sub WertÜbertragen(Quellzelle As String, Zielspalte As Integer, BeginnZeile As Integer)
Dim leereZeile As Long
With Sheets(„Tabelle 2“)
leereZeile = .Cells(.Rows.Count, Zielspalte).End(xlUp).Row + 1
If leereZeile

Hallo Xen55,

hoffe ich hab dich richtig verstandne. Der Code muss dann etwa so aussehen.

Gru
Franz

Private Sub KaufButton\_Click()
 TextEintragen "MeinWunschText", 1, 9
 WertÜbertragen "F10", 2, 9
 WertÜbertragen "F11", 3, 9
 WertÜbertragen "B5", 4, 9
 WertÜbertragen "B4", 5, 9
 WertÜbertragen "C20", 6, 9
 WertÜbertragen "F9", 7, 9
End Sub

Sub TextEintragen(Text As String, Zielspalte As Integer, BeginnZeile As Integer)
 Dim leereZeile As Long
 With Sheets("Tabelle 2")
 leereZeile = .Cells(.Rows.Count, Zielspalte).End(xlUp).Row + 1
 If leereZeile 

Ja das hast du. Vielen vielen Dank, Franz.

Wie ist es eigentlich, wenn ich einer der kopierten Zellen (zB. C18) mit Zahleninhalt, ein MINUS verpassen will?

Hoffe es ist ok wenn ich nochmal Nachfrage.

Danke
Gruß
Xen55

Wie ist es eigentlich, wenn ich einer der kopierten Zellen
(zB. C18) mit Zahleninhalt, ein MINUS verpassen will?

Hallo,

habe die Prozedur WertÜbertragen entsprechend umgebaut.
Wenn man ein negatives Vorzeichen möchte, so muss beim Aufruf ein weiterer Parameter ,TRUE übergeben werden. Das Vorzeichen wird nur davor gesetzt, wenn es sich wirklich um einen Zahlenwert handelt (Fehlerprüfung). Wird der o.g. Parameter weggelassen bleibt alles beim alten.

Die Prozedur WertÜbertragen habe ich so umgestaltet, dass man damit auch einen beliebigen Textwert ohne zusätzliche Prozedur übertragen kann. Es wird geprüft, ob es sich bei der Angabe um eine Zellangabe oder einen Textwert handelt. (Zelle bekannt–> Zellinhalt, Zelle unbekannt–>Wert des übergebenen Parameters).

So, nun den Code und ich hoffe geholfen zu haben:

Private Sub KaufButton\_Click()
WertÜbertragen "MeinWunschText", 1, 9
WertÜbertragen "F10", 2, 9, True
WertÜbertragen "F11", 3, 9
WertÜbertragen "B5", 4, 9, True
WertÜbertragen "B4", 5, 9
WertÜbertragen "C20", 6, 9 - 1, True
WertÜbertragen "F9", 7, 9
End Sub



Sub WertÜbertragen(Txt\_o\_Zelle As String, Zielspalte As Integer, \_
 BeginnZeile As Integer, Optional negieren As Boolean = False)
Dim leereZeile As Long
Dim Wert As Variant
On Error GoTo keineZelle
Wert = ActiveSheet.Range(Txt\_o\_Zelle).Value
On Error GoTo 0
If negieren Then
 On Error Resume Next
 Wert = CDbl(Wert)
 Wert = Wert \* -1
 On Error GoTo 0
End If
With Sheets("Tabelle2")
 leereZeile = .Cells(.Rows.Count, Zielspalte).End(xlUp).Row + 1
 If leereZeile 

Viele Grüße tester

Eine Frage zu dem Code
Hallo,
erst einmal vielen Dank, ist echt super der Code. Der stammt ja auch ursprünglich von dir.
Danke danke Tester.

Nur eine Frage zum Code.

WertÜbertragen „C20“, 6, 9 - 1, True
Wieso ist bei diesem ausdruck ein -1 nötig und bei den anderen nicht?

MFG
Xen55

Ein weiteres kleines Problem
Hallo,
mir ist eben beim Testen aufgefallen das diese Zeile
WertÜbertragen „C20“, 6, 9, True
in der Liste ab der Zeile 33 manchmal einfach nicht richtig kopiert. C20 sind 2 Stellen hinter dem Komma und Währungszeichen Euro. Das wird manchmal einfach nicht kopiert???
Ist das weil ich die -1 weggelassen habe oder wieso ist das so.
Sehr komisch.

Danke für jede Hilfe.

Gruß
Xen55

Hallo,

die -1 hat keine Bewandnis. Hatte die Aufrufe aus dem Code von Franz übernommen, da stand die mit drin. Würde dann ab Zeile 8 (9-1) die Werte übertragen.

Die Prozedur WertÜbertragen kopiert nur den Zellwert und nicht das Format der Quellzelle. Wahrscheinlich ist nicht der vollständige Ausgabebereich mit Währung und zwei Kommastellen formatiert.
Hab daher noch eine kleine Änderung eingefügt, wobei die Formatierung (Zahlenformat) der Quellzelle übernommen wird.

Sub WertÜbertragen(Txt\_o\_Zelle As String, Zielspalte As Integer, \_
 BeginnZeile As Integer, Optional negieren As Boolean = False)
Dim leereZeile As Long
Dim Wert As Variant
Dim AktFormat As String
On Error GoTo keineZelle
Wert = ActiveSheet.Range(Txt\_o\_Zelle).Value
AktFormat = ActiveSheet.Range(Txt\_o\_Zelle).NumberFormat
On Error GoTo 0
If negieren Then
 On Error Resume Next
 Wert = CDbl(Wert)
 Wert = Wert \* -1
 On Error GoTo 0
End If
With Sheets("Tabelle2")
 leereZeile = .Cells(.Rows.Count, Zielspalte).End(xlUp).Row + 1
 If leereZeile "" Then .Cells(leereZeile, Zielspalte).NumberFormat = AktFormat
End With
Exit Sub
keineZelle:
 Wert = Txt\_o\_Zelle
 AktFormat = ""
 Resume Next
End Sub

Gruß tester

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ein weiteres kleines Problem 2
Danke Tester,

es funktioniert, aber wenn ich jetzt auf den Button drücke um zu kopieren, dauert es viel länger. Der Mauszeiger verwandelt sich in die Sanduhr. Ist das normal?
Die besagte Zelle wird zwar formatiert, aber das Minus ist ganz links an der Zellewand anstatt direkt an der Zahl?

Ich hoffe du kannst mir da weiter helfen.

Vielen Dank für deine Antworten.
MFG
Xen55

Nur eine weitere kleine Frage bleibt
Hallo Tester,
das mit zu langsam nehme ich zurück, jetzt funktioniert es ganz schnell.
Nur noch die Frage von mir. Ist es möglich anstatt der /- 100€/ wieder die / -100€/ Formatierung zu bekommen??

Danke Tester
MFG
Xen55

Hallo Tester,

hallo ebenfalls

das mit zu langsam nehme ich zurück, jetzt funktioniert es
ganz schnell.

Hätte mich auch gewundert…

Nur noch die Frage von mir. Ist es möglich anstatt der /-
100€/ wieder die / -100€/ Formatierung zu bekommen??

das an den linken Zellrand angrenzende Minussymbol und die unter Umständen weit entfernte Ziffer ist typisch für die Formatierung einer Zelle im Zahlenformat „Buchhaltung“. Diese richtet die Vorzeichen jeweils untereinander aus.
Da das Makro das Zahlenformat der Quellzelle direkt auf die Ausgabezelle überträgt, dürfte das Format „Buchhaltung“ auch für die Quellzellen festgelegt sein. Vielleicht ist die Quellspalte etwas schmaler als die Ausgabespalte, so dass der beschriebene Effekt hierin nicht sichtbar ist.

Formatiere die Quellspalte und ggf. auch die Ausgabespalte über Format/Zelle mit dem Format „Währung“. Wichtig ist, nicht das Symbol „Währung“ in der Symbolleiste „Format“ zu benutzen, da diese komischerweise die Zelle mit dem Format „Buchhaltung“ formatiert (ist wohl nen Programm- oder Übersetzungsfehler).

MfG tester

Hallo tester,

ja stimmt hatte die Formatierung in der Quellzelle nicht auf Währung. Hatte die Symbolleiste benutzt.
Es rentiert sich doch nur dir Quellzelle zu verändern, weil bei einem kopieren auch die formatierung mitkopiert wird, oder ??

Es hat mal wieder geklappt, danke danke tester, super!!!

MFG
Xen55

Hallo tester,

wiedermal Hallo

Es rentiert sich doch nur dir Quellzelle zu verändern, weil
bei einem kopieren auch die formatierung mitkopiert wird, oder
??

Ja, jedenfalls in Bezug auf die Zahlenformatierung, d.h. z.B. auf die Anzahl der Nachkommastellen, Vorzeichen, Währungssymbol und den Tausendertrennpunkt.
Alle anderen Formatierungen der Zelle, wie z.B. Schriftstil, Zellausrichtung, Rahmen, Muster werden nicht übertragen. Diese können in Quellzelle als auch im Zielbereich unabhängig voneinander festgelegt werden.

tester

Danke Tester
Danke Tester