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

Code intelligenter schreiben ?!

Code intelligenter schreiben ?!
21.02.2018 12:54:46
David
Hallo liebe Herber-Gemeinde
ich habe eine Schleife geschrieben um viele Spalten zu durchsuchen und im Falle eines Variablenfund sollen Werte kopiert werden und in entsprechende Zellen der angesprochenen Spalte hinzuaddiert werden.
Dies klappt auch mit diesem Code.....zum einen leider dauert die Berechnung relativ lange und zum anderen würde ich gerne wissen, ob es möglich ist den Code so zu schreiben dass dieser ständig auf Veränderungen in den Spalten reagiert. Sozusagen in Echtzeit die Spalten ausließt.
Vielleicht habt ihr ja ein Tipp für mich...
Hier der Code
Sub schleife()
Dim i As Long
Dim J As Long
For i = 11 To 45
For J = 3 To 451
If Cells(i, J) = "MAR IS2" Then
Range("E94:E97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "T6 PA" Then
Range("E94:E97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "T6 PA VFF" Then
Range("E94:E97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "T6 PA PVS" Then
Range("E94:E97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "T6 PA MAR IS3" Then
Range("E94:E97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "T6 PA MAR PVS" Then
Range("E94:E97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "1.VT" Then
Range("E94:E97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "2.VT" Then
Range("F94:F97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "3.VT" Then
Range("G94:G97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "M100" Then
Range("H94:H97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "1.AT" Then
Range("I94:I97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "2.AT" Then
Range("J94:J97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "3.AT" Then
Range("K94:K97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "4.AT" Then
Range("L94:L97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "5.AT" Then
Range("M94:M97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "6.AT" Then
Range("N94:N97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "NB" Then
Range("O94:O97").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "M100 T6 Serie" Then
Range("E103:E106").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "Tisch" Then
Range("E113:E116").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
Next
Next
End Sub
gruß David

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code intelligenter schreiben ?!
21.02.2018 13:04:04
Michael
Hallo!
Magst Du mal kurz und klar beschreiben, WAS denn die Aufgaben des Codes sein soll, ohne auf Deinen bisherigen Code Bezug zu nehmen?
LG
Michael
AW: Code intelligenter schreiben ?!
21.02.2018 13:23:18
David
In x-Anzahl von Spalten tauchen unterschiedliche Werte auf. Hinter jedem Wert stehen vier Zellen mit jeweils Ziffern. Die Schleife durchläuft eine Spalte erkennt den Wert und fügt am Ende dieser Spalte die Vier Ziffern ein. Nun geht die Schleife weiter in die nächste Zelle der Spalte und schaut was da für ein Wert steht. Wenn da einer ist, addiert sie die dahinter stehenden Ziffern zu den bereits stehenden in den Zellen am Ende der Spalte. Dies macht die Schleife mit allen Spalten in dem Bereich.
Ziel sollte es nun sein die Werte, die in dem Code hinterlegt sind, hin und her schieben zu können wodurch sich sofort die Endsumme der jeweiligen Spaltenende sofort verändert.
Erklären ist immer nicht einfach sorry
Anzeige
Beispielmappe erforderlich. owT
21.02.2018 13:25:51
Rudi
AW: Code intelligenter schreiben ?!
21.02.2018 13:24:31
Rudi
Hallo,
da ich nicht weiß, was du bezweckst, erst mal eingedampft:
Sub schleife()
Dim i As Long
Dim J As Long
Dim C As Long
For i = 11 To 45
For J = 3 To 451
C = 0
Select Case Cells(i, J)
Case "MAR IS2", "T6 PA", "T6 PA VFF", "T6 PA PVS", "T6 PA MAR IS3", "T6 PA MAR PVS", "1. _
VT"
C = 5
Case "2.VT": C = 6
Case "3.VT": C = 7
Case "M100": C = 8
Case "1.AT": C = 9
Case "2.AT": C = 10
Case "3.AT": C = 11
Case "4.AT": C = 12
Case "5.AT": C = 13
Case "6.AT": C = 14
Case "NB": C = 15
End Select
Select Case C
Case 5 To 15
Cells(94, C).Resize(4).Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End Select
If Cells(i, J) = "M100 T6 Serie" Then
Range("E103:E106").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
If Cells(i, J) = "Tisch" Then
Range("E113:E116").Copy
Cells(46, J).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
End If
Next J
Next i
End Sub

Gruß
Rudi
Anzeige
AW: Code intelligenter schreiben ?!
21.02.2018 14:11:06
David
Hier ist mal eine abgespeckte Beispiel Datei.
https://www.herber.de/bbs/user/119973.xlsx
Die Idee dahinter ist diese, das ich gerne die Zellen(1.VT;2.VT;3.VT usw...) schieben möchte um andere "Fälle" darzustellen, da ja der Code die verschiedenen Kombinationen in einer Spalte erkennt und so die Zahlen die hinter den Werten stehen addiert und dies am besten in Echtzeit.....
unverständlich. owT
21.02.2018 14:20:43
Rudi
AW: Code intelligenter schreiben ?!
24.02.2018 23:43:46
fcs
Hallo David,
hier eine Lösung.
https://www.herber.de/bbs/user/120039.xlsm
Unter dem Code für Blatt "Tabelle1" ist das Ereignis-Makro das bei Änderungen das Makro "schleife" automatisch startet.
Allerdings solltest du eine Beispiel-Datei wenigstens so aufbauen, das sie dem Original im Aufbau so ähnlich ist das alle prinzipiellen Funktionen erhalten sind. In deiner Datei stimmen die Zeilen/Spalten mit den Zellbereichen im Makro überhaupt nicht überein. So sind vernünftige Test nicht möglich.
Gruß
Franz
Anzeige

168 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige