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

wie fasse ich diesen code am besten zusammen

wie fasse ich diesen code am besten zusammen
11.01.2019 10:59:15
Zna
Hallo liebe Herber User
ich habe mal eine frage, wie kann ich denn diesen code etwas zsuammenfassen, kann ich die for each schleifen zusammenfassen oder die if bedingungen ?
Vielen dank
Set OVV_Range = Sheets(1).Range(Cells(2, 3), Cells(ActiveSheet.UsedRange.Rows.Count, 3))
Dim MustDNF As Integer
Dim CheckDNF As Integer
CheckDNF = 0
For MustDNF = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(MustDNF, 1) = "" Then
Exit For
Else
End If
Next
MustDNF = MustDNF - 2
'Lauf NULL - Identität
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case POS.Offset(0, 13)
Case OVV.Offset(0, 2)
POS.Offset(0, 26) = "DNF"
OVV.Offset(0, 8) = "OK"
CheckDNF = CheckDNF + 1
Case Else
End Select
Case Else
End Select
Next
Next
'Lauf eins - Leistungsschalter
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case OVV.Offset(0, 8)
Case Is "OK"
Select Case InStr(1, POS.Offset(0, 13), OVV.Offset(0, 2), vbTextCompare)
Case Is 0
POS.Offset(0, 26) = "DNF"
OVV.Offset(0, 8) = "OK"
CheckDNF = CheckDNF + 1
Case Else
End Select
Case Else
End Select
Case Else
End Select
Next
Next
' Zweiter Lauf, wenn nicht alle gefunden wurden
If MustDNF CheckDNF Then
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case OVV.Offset(0, 8)
Case Is "OK"
Select Case InStr(1, Left(POS.Offset(0, 13), 10), Left(OVV.Offset(0, 2), 10), vbTextCompare)
Case Is 0
POS.Offset(0, 26) = "DNF"
OVV.Offset(0, 8) = "OK"
CheckDNF = CheckDNF + 1
Case Else
End Select
Case Else
End Select
Case Else
End Select
Next
Next
Else
End If
'
' Case Else
' End Select
Case Else
End Select
Case Else
End Select
Workbooks(SlaveOVV).Activate
ActiveWorkbook.Saved = True
Application.DisplayAlerts = False
Workbooks(SlaveOVV).Close
Application.DisplayAlerts = True
Next
Workbooks("Datenbank.xlsb").Activate
If CheckDNF MustDNF Then
MsgBox "Es wurden nur " & CheckDNF & " von " & MustDNF & " Devices not found zugeordnet. Bitte händisch prüfen"
Else
MsgBox "Es wurden alle " & CheckDNF & " von " & MustDNF & " Devices not found zugeordnet."
End If
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Doppelt owT
11.01.2019 11:01:21
SF
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:01:50
RPP63
Moin!
Stelle den Code mittels Code-Tags und vernünftigen Einrückungen erneut ein!
So kann das doch niemand schmerzfrei lesen.
Gruß Ralf
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:05:44
Zna

Set OVV_Range = Sheets(1).Range(Cells(2, 3), Cells(ActiveSheet.UsedRange.Rows.Count, 3))
Dim MustDNF As Integer
Dim CheckDNF As Integer
CheckDNF = 0
For MustDNF = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(MustDNF, 1) = "" Then
Exit For
Else
End If
Next
MustDNF = MustDNF - 2
'Lauf NULL - Identität
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case POS.Offset(0, 13)
Case OVV.Offset(0, 2)
POS.Offset(0, 26) = "DNF"
OVV.Offset(0, 8) = "OK"
CheckDNF = CheckDNF + 1
Case Else
End Select
Case Else
End Select
Next
Next
'Lauf eins - Leistungsschalter
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case OVV.Offset(0, 8)
Case Is  "OK"
Select Case InStr(1,  _
POS.Offset(0, 13), OVV.Offset(0, 2), vbTextCompare)
Case Is  0
POS.Offset(0,  _
26) = "DNF"
OVV.Offset(0, 8) _
= "OK"
CheckDNF =  _
CheckDNF + 1
Case Else
End Select
Case Else
End Select
Case Else
End Select
Next
Next
' Zweiter Lauf, wenn nicht alle gefunden wurden
If MustDNF  CheckDNF Then
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case OVV.Offset(0, 8)
Case Is  "OK"
Select Case InStr(1,  _
Left(POS.Offset(0, 13), 10), Left(OVV.Offset(0, 2), 10), vbTextCompare)
Case Is  0
POS.Offset(0,  _
26) = "DNF"
OVV.Offset(0, 8) _
= "OK"
CheckDNF =  _
CheckDNF + 1
Case Else
End Select
Case Else
End Select
Case Else
End Select
Next
Next
Else
End If
'                 Case Else
'                 End Select
Case Else
End Select
Case Else
End Select
Workbooks(SlaveOVV).Activate
ActiveWorkbook.Saved = True
Application.DisplayAlerts = False
Workbooks(SlaveOVV).Close
Application.DisplayAlerts = True
Next
Workbooks("Datenbank.xlsb").Activate
If CheckDNF  MustDNF Then
MsgBox "Es wurden nur " & CheckDNF & " von " & MustDNF & " Devices not found zugeordnet. _
Bitte händisch prüfen"
Else
MsgBox "Es wurden alle " & CheckDNF & " von " & MustDNF & " Devices not found  _
zugeordnet."
End If
End Sub

Anzeige
Tip am Rande....
11.01.2019 11:13:44
Werner
Hallo,
...bevor du den Beitrag abschickst würde ich ihn mir an deiner Stelle noch mal anschauen. Das hier ist genauso grottig wie der am Anfang.
Und noch was:
Wer sollte dir deiner Meinung nach Hilfe anbieten wenn du noch nicht mal in der Lage bist auf deine Beiträge ein Feedback zu geben?
Von Steve wurdest du schon mal darauf hingewiesen - Reaktion - keine - Eindruck - Ignoranz.
Gruß Werner
AW: Tip am Rande....
11.01.2019 11:16:35
Zna
entschuldigt bitte
die einrückungen entstehen aber teiweise durch das format hier,..dafür kann ich nichts
und ich wollte keinesfalls ignorant oder ähnliches sein, ich bin es gerade nur am versuchen...feedback folgt
Anzeige
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:12:36
onur
Du soltest den Code mal strukturieren und dann posten, dann melden sich bestimmt mehr Leute.
Man kriegt schon fast Kopfschmerzen, wenn man deinen Code analysieren will.
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:20:44
Zna

Set OVV_Range = Sheets(1).Range(Cells(2, 3), Cells(ActiveSheet.UsedRange.Rows.Count, 3))
Dim MustDNF As Integer
Dim CheckDNF As Integer
CheckDNF = 0
For MustDNF = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(MustDNF, 1) = "" Then
Exit For
Else
End If
Next
MustDNF = MustDNF - 2
'Lauf NULL - Identität
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case POS.Offset(0, 13)
Case OVV.Offset(0, 2)
POS.Offset(0, 26) = "DNF"
OVV.Offset(0, 8) = "OK"
CheckDNF = CheckDNF + 1
Case Else
End Select
Case Else
End Select
Next
Next
'Lauf eins - Leistungsschalter
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case OVV.Offset(0, 8)
Case Is  "OK"
Select Case InStr(1,  _
POS.Offset(0, 13), OVV.Offset(0, 2), vbTextCompare)
Case Is  0
POS.Offset(0,  _
26) = "DNF"
OVV.Offset(0, 8) _
= "OK"
CheckDNF =  _
CheckDNF + 1
Case Else
End Select
Case Else
End Select
Case Else
End Select
Next
Next
' Zweiter Lauf, wenn nicht alle gefunden wurden
If MustDNF  CheckDNF Then
For Each OVV In OVV_Range
For Each POS In POS_Range
Select Case POS.Offset(0, 8)
Case Is = OVV
Select Case OVV.Offset(0, 8)
Case Is  "OK"
Select Case InStr(1,  _
Left(POS.Offset(0, 13), 10), Left(OVV.Offset(0, 2), 10), vbTextCompare)
Case Is  0
POS.Offset(0,  _
26) = "DNF"
OVV.Offset(0, 8) _
= "OK"
CheckDNF =  _
CheckDNF + 1
Case Else
End Select
Case Else
End Select
Case Else
End Select
Next
Next
Else
End If
'                 Case Else
'                 End Select
Case Else
End Select
Case Else
End Select
Workbooks(SlaveOVV).Activate
ActiveWorkbook.Saved = True
Application.DisplayAlerts = False
Workbooks(SlaveOVV).Close
Application.DisplayAlerts = True
Next
Workbooks("Datenbank.xlsb").Activate
If CheckDNF  MustDNF Then
MsgBox "Es wurden nur " & CheckDNF & " von " & MustDNF & " Devices not found zugeordnet. _
Bitte händisch prüfen"
Else
MsgBox "Es wurden alle " & CheckDNF & " von " & MustDNF & " Devices not found  _
zugeordnet."
End If
End Sub

Anzeige
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:36:35
onur
Wenn du statt den vielen Cases eine If-Schleife mit mehreren UND-verknüpften Bedingungen genommen hättest, könntest du 80% des Codes einsparen.
If Cells(MustDNF, 1) = "" Then
Exit For
Else
End If

ist Quatsch, warum nicht einfach:
If Cells(MustDNF, 1) = "" Then Exit For

Else If und Case Else benutzt man NUR, wenn auch noch etwas passiert, wenn der Fall eintritt.
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:40:02
Zna
Vielen Dank, Onur :)
also kann ich einfach für jede schelife
das case weglassen? und dann nur noch
If Cells(MustDNF, 1) = "" Then Exit For
hinschreiben? oder wie meinst du ?
Anzeige
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:42:14
onur
Wenn du mir mal erklären könntest, was der Code GENAU machen soll, wäres es einfacher.
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:48:18
Zna
also folgendes, der code uberprüft ob der Inhalt in einer Spalte in einer Maximalliste auftritt. Die Schwierigkeit ist hierbei, dass der zu überprüfende Inhalt teilweise aus zwei verschiedenen Spalten zusammengesetzt ist. Zudem handelt es sich um den zu überprüfenden Inhalt nicht nur um einen gewöhnlichen String, sondern sehen die Werte teilweise so aus TAU:911M131306EB.
Da gibt es dann für jedes Format praktisch einen fall...
Ich hoffe, du verstehst was ich meine
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:48:33
Zna
also folgendes, der code uberprüft ob der Inhalt in einer Spalte in einer Maximalliste auftritt. Die Schwierigkeit ist hierbei, dass der zu überprüfende Inhalt teilweise aus zwei verschiedenen Spalten zusammengesetzt ist. Zudem handelt es sich um den zu überprüfenden Inhalt nicht nur um einen gewöhnlichen String, sondern sehen die Werte teilweise so aus TAU:911M131306EB.
Da gibt es dann für jedes Format praktisch einen fall...
Ich hoffe, du verstehst was ich meine
Anzeige
AW: wie fasse ich diesen code am besten zusammen
11.01.2019 11:55:46
onur
Wie gesagt, eine GENAUE erklärung wäre hilfreich, denn einen so aufgeblähten Code (selbst wenn strukturiert) - der auch noch von jemand anders geschrieben wurde - zu analysieren ist sehr anstrengend.
Also in der Form:
Wenn das und das - Soll das und das passieren, weil das und das.
Wenn jedoch das und das - Soll das und das passieren, weil das und das.
Die Originaldatei(en) zu haben wäre natürlich auch hilfreich.

241 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige