Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Zusammenfassen

Forumthread: VBA Zusammenfassen

VBA Zusammenfassen
10.01.2025 08:45:01
Gui1166
Hallo Zusammen ,
Kann mir jemand Helfen ?
Ich habe da eine VBA Programmierung erstellt die auch so Funktioniert .
Aus dem Arbeitsblatt Liste sollen bestimmte Zellen in das Arbeitsblatt Daten Übertragen werden bei Betätigung eines Button.
Der Sinn ist es 50 Aufzeichnungen ( Tastendrücke ) In das Arbeitsblatt DATEN Ab Zelle C3 Zu Übertragen danach wieder Bei C3 anzufangen.
Meine Lösung sieht so aus .
Sub Schaltfläche3_Klicken()

ActiveWorkbook.RefreshAll
'Wert pro Stück
Sheets("Liste").Select
Range("U3:U18").Select
Selection.Copy
Sheets("Data").Select
If Sheets("Data").Cells(36, 3) = "C" Then
Range("C3").PasteSpecial Paste:=xlPasteValues

'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("C18").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("C34").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "D" Then
'Wert pro Stück
Range("D3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("D34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("D18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "E" Then
'Wert pro Stück
Range("E3").PasteSpecial Paste:=xlPasteValues
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("E34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("E18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "F" Then
'Wert pro Stück
Range("F3").PasteSpecial Paste:=xlPasteValues
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("F34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("F18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "G" Then
'Wert pro Stück
Range("G3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("G34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("G18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "H" Then
'Wert pro Stück
Range("H3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("H34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("H18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "I" Then
'Wert pro Stück
Range("I3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("I34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("I18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "J" Then
'Wert pro Stück
Range("J3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("J34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("J18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "K" Then
Range("K3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("K34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("K18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "L" Then
Range("L3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("L34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("L18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If

If Sheets("Data").Cells(36, 3) = "M" Then
Range("M3").PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Select
Range("R3").Select
Selection.Copy
Sheets("Data").Select
Range("M34").PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Select
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range("M18").PasteSpecial Paste:=xlPasteValues
Exit Sub
End If
End Sub

Wie Ihr seht ist das sehr Aufwendig.
Nun Meine Frage
Gibt es eine Möglichkeit dieses zu vereinfachen und vom Programmieren zu verkürze ?
Danke für eure Hilfe
Gruß
Guido
Anzeige

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:16:02
Onur
Sollte so funktionieren - testen kann ich nicht, da du ja keine Datei gepostet hast.

Sub Schaltfläche3_Klicken()

Dim sp
ActiveWorkbook.RefreshAll
'Wert pro Stück
Sheets("Liste").Activate
Range("U3:U18").Copy
Sheets("Data").Activate
sp = Cells(36, 3)
Select Case sp
Case "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M"
Range(sp & 3).PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Activate
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Range(sp & 18).PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Activate
Range("R3").Select
Selection.Copy
Sheets("Data").Activate
Range(sp & 34).PasteSpecial Paste:=xlPasteValues
Exit Sub
End Select
End Sub
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:23:37
Gui1166
Hey Super,
Danke Dir das passt Bestens.
Einfach einmalig .
Gruß
Guido
Gerne !
10.01.2025 09:24:29
Onur
AW: VBA Zusammenfassen
10.01.2025 09:17:03
Crazy Tom
moin,

mein Vorschlag

Sub Schaltfläche3_Klicken()

ActiveWorkbook.RefreshAll
Dim strLetter As String
ActiveWorkbook.RefreshAll
'Wert pro Stück
Sheets("Liste").Range("U3:U18").Copy
With Sheets("Data")
strLetter = .Cells(36, 3).Value
.Cells(3, strLetter).PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Range("I3:I18").Copy
.Cells(18, strLetter).PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Range("R3").Copy
.Cells(34, strLetter).PasteSpecial Paste:=xlPasteValues
End With
End Sub


mfg Tom
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:27:02
Onur
Wenn in Cells(36, 3) ein "Z" steht, wird auch kopiert ?
Das ist im Originalcode nicht der Fall.
AW: VBA Zusammenfassen
10.01.2025 09:32:40
Crazy Tom
moin onur,

stimmt, mein Code würde bis zur letzten Spalte kopieren
er schrieb aber auch von 50 Aufzeichnungen
also könnten es noch mehr Spalten werden als angegeben
vielleicht können aber auch nur die Buchstaben C bis M vorkommen *schulterzuck*

mfg Tom
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:34:52
Onur
Moin auch,

Und bei Text "hallo" in Cells(36, 3) gibt es eine Fehlermeldung. :)

Gruß
Onur
AW: VBA Zusammenfassen
10.01.2025 09:38:45
Gui1166
Das war mein Fehler , Die Original Datei wollte ich nicht Kopieren das sensible daten drin Stehen .
Ja es soll weiter gehen ich bin noch nicht Sicher wie weit aber ca 50 mal denke ich .
Dieses kann ich aber dank eurer Hilfe jetzt so erweitern.
Ich hatte nur einen Auszug bis M veröffentlicht da ich noch nicht weiter war.
Danke nochmal !
Gruß
Guido
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:41:29
Onur
Zumindest könntest du die Spaltennummer angeben statt den Buchstaben, dann brauchst du nicht alle 50 aufzuzählen, sondern nur von und bis anzugeben.
AW: VBA Zusammenfassen
10.01.2025 09:42:49
Gui1166
Wie meinst Du das ? Du siehst mich etwas Ratlos ( Brett vor dem Kopf)
AW: VBA Zusammenfassen
10.01.2025 09:52:49
Onur
SO:
Sub Schaltfläche3_Klicken()

Dim sp, str
ActiveWorkbook.RefreshAll
'Wert pro Stück
Sheets("Liste").Activate
Range("U3:U18").Copy
Sheets("Data").Activate
sp = Cells(36, 3) 'Hier Zahl statt Buchstabe
If sp >= 3 And sp = 13 Then 'von Spalte 3(C) bis Spalte 13(M)
Cells(3, sp).PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Activate
Range("I3:I18").Select
Selection.Copy
Sheets("Data").Select
Cells(18, sp).PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Activate
Range("R3").Select
Selection.Copy
Sheets("Data").Activate
Cells(34, s).PasteSpecial Paste:=xlPasteValues
End Select
End Sub
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:55:32
Gui1166
Super danke Verstanden . Das geht besser.
Jetzt klappt es Super einfach
AW: VBA Zusammenfassen
10.01.2025 09:41:35
Crazy Tom
hi Guido,

da können wir ja froh sein, dass du noch nicht weiter warst
da wäre dein Beitrag ja nooooooch länger geworden ;-)

mfg Tom
AW: VBA Zusammenfassen
10.01.2025 09:33:23
Gui1166
Hallo Onur ,
Ja soll auch , das werde ich dann so Erweitern.
Am ende nach ca. 50 Kopien werden die Daten Inhalte Gelöscht und wieder bei C angefangen.
Sorry das ich keine Datei Hochgeladen habe .
Danke Nochmal .
Gruß
Guido
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:37:09
Onur
Aber das mit C,D,E usw ind Cells(36, 3) musst nicht sein. Ist wohl eher eine Notlösung von dir, dass du die Spalte angeben musst, weil du keine bessere Lösung hattest.
AW: VBA Zusammenfassen
10.01.2025 09:40:24
Gui1166
Aber ich muss doch Irgend wie festlegen wann ich wieder bei C anfange ?
AW: VBA Zusammenfassen
10.01.2025 09:42:55
Onur
Wird denn immer nur eine Spalte bearbeitet oder alle nacheinander?
Anzeige
AW: VBA Zusammenfassen
10.01.2025 09:45:42
Gui1166
Ich habe eine Schaltfläche Aktualisieren wenn ich diese Betätige sollen die Angegebenen Bereiche Kopiert werden.
Dieses bis zu 50 Aktualisierungen und dann von vorne beginnen.
AW: VBA Zusammenfassen
10.01.2025 09:57:14
Onur
Heisst das, dass du ein "C" einträgst, Button drückst, "D" einträgst, Button drückst usw usw ???
AW: VBA Zusammenfassen
10.01.2025 09:59:38
Gui1166
Nein das Geht in Excel mit wenn dann und wird so eingetragen.
=WENN(C3="";C; usw.
Anzeige
AW: VBA Zusammenfassen
10.01.2025 10:01:50
Onur
Bitte noch unten
End Select

ersetzen durch
End If
AW: VBA Zusammenfassen
10.01.2025 11:03:23
Crazy Tom
hi,

heißt das du hast da 50 Wenn-Abfragen welcher Buchstabe drin steht?

teste doch mal das hier
da wird kein Buchstabe in C36 gebrauch

Sub Schaltfläche3_Klicken()

ActiveWorkbook.RefreshAll
Dim ZielCol As Long
ActiveWorkbook.RefreshAll
'Wert pro Stück
Sheets("Liste").Range("U3:U18").Copy
With Sheets("Data")
ZielCol = .Cells(3, Columns.Count).End(xlToLeft).Column + 1
If ZielCol 3 Then ZielCol = 3
.Cells(3, ZielCol).PasteSpecial Paste:=xlPasteValues
'Wertigkeit
Sheets("Liste").Range("I3:I18").Copy
.Cells(18, ZielCol).PasteSpecial Paste:=xlPasteValues
'Datum Uhrzeit
Sheets("Liste").Range("R3").Copy
.Cells(34, ZielCol).PasteSpecial Paste:=xlPasteValues
If ZielCol >= 50 Then
If MsgBox("Liste löschen?", vbYesNo) = vbYes Then
.Cells(3, 3).Resize(32, ZielCol).ClearContents
ZielCol = 3
End If
End If
End With
End Sub


mfg Tom
Anzeige
AW: VBA Zusammenfassen
10.01.2025 11:18:24
Gui1166
Hallo Tom ,
Das ist Sehr gut . Danke Dir ! So kann ich es lassen ,funktioniert Perfekt.
AW: VBA Zusammenfassen: Chat GPT Vorschlag
10.01.2025 09:18:24
MCO
Moin!

Ich hab dein Anliegen mit der Bitte um Schleife in CHATGPT eingegeben, probier es mal aus:

Sub Schaltfläche3_Klicken()


Dim columns As Variant
Dim col As Variant
Dim checkCell As Range

' Liste der Spalten, die überprüft werden sollen
columns = Array("C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M")

' Arbeitsmappen aktualisieren
ActiveWorkbook.RefreshAll

' Schleife durch die Spalten
For Each col In columns
' Zelle mit der Prüfung
Set checkCell = Sheets("Data").Cells(36, 3)

' Überprüfen, ob die aktuelle Spalte übereinstimmt
If checkCell.Value = col Then
' Wert pro Stück kopieren
Sheets("Liste").Range("U3:U18").Copy
Sheets("Data").Range(col & "3").PasteSpecial Paste:=xlPasteValues

' Wertigkeit kopieren
Sheets("Liste").Range("I3:I18").Copy
Sheets("Data").Range(col & "18").PasteSpecial Paste:=xlPasteValues

' Datum/Uhrzeit kopieren
Sheets("Liste").Range("R3").Copy
Sheets("Data").Range(col & "34").PasteSpecial Paste:=xlPasteValues

Exit Sub
End If
Next col

End Sub


Gruß, MCO
Anzeige
AW: VBA Zusammenfassen: Chat GPT Vorschlag
10.01.2025 11:15:40
Yal
Hallo MCO,

ChatGPT nimmt keine Rücksicht auf Werte, die im Lauf des Codes sich nicht ändern. Im dem Fall ist eine For-Schleife weit entfernt von notwendig zu sein.

ChatGTP nachgebessert(ohne Rücksicht auf die originale Frage, wohl bemerkt :-) :


Sub Schaltfläche3_Klicken()

Dim col As Variant

ActiveWorkbook.RefreshAll
With Sheets("Data")
col = UCase(.Cells(36, 3).Value)
Select Case col
Case "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M"
.Cells(3, col).Resize(16, 1) = Sheets("Liste").Range("U3:U18").Value ' Wert pro Stück kopieren
.Cells(18, col).Resize(16, 1) = Sheets("Liste").Range("I3:I18").Value ' Wertigkeit kopieren
.Cells(34, col) = Sheets("Liste").Range("R3").Value ' Datum/Uhrzeit kopieren
End Select
End With
End Sub
(da ist man aber sehr nah an Onurs Lösung)

VG
Yal
Anzeige
AW: VBA Zusammenfassen: Chat GPT Vorschlag
13.01.2025 11:49:28
MCO
Danke Yal!

Ich sehe die KI auch bestenfalls als Basis für einen Lösungsansatz. Zugegebenermaßen hatte ich nicht große Lust den ganzen Text zu lesen.

Gruß, MCO

Forumthreads zu verwandten Themen

Anzeige
Anzeige