Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1520to1524
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

On Error GoTo Problem & Code Verschlankung

On Error GoTo Problem & Code Verschlankung
24.10.2016 17:35:57
Pseudo
Hallo zusammen.
Ich als absoluter VBA Anfänger bin gerade auf der Suche nach einer Lösung zu folgendem Problem (habe leider nicht das passende in bestehenden Threads gefunden):
Ich habe folgenden Code, der auch funktioniert, solange die Werte auch gefunden werden können:
Range("B:AZ").Find("Pos").EntireColumn.Hidden = True
Range("B:AZ").Find("PPG").EntireColumn.Hidden = True
Range("B:AZ").Find("Modul").EntireColumn.Hidden = True
Range("B:AZ").Find("EKogr").EntireColumn.Hidden = True
Range("B:AZ").Find("ZF").EntireColumn.Hidden = True
Range("B:AZ").Find("SD").EntireColumn.Hidden = True
Range("B:AZ").Find("ZI").EntireColumn.Hidden = True
Range("B:AZ").Find("BTCh").EntireColumn.Hidden = True
Range("B:AZ").Find("VC-rel").EntireColumn.Hidden = True
Range("B:AZ").Find("DMU-Modell").EntireColumn.Hidden = True
Range("B:AZ").Find("Reife").EntireColumn.Hidden = True
Range("B:AZ").Find("JITKZ").EntireColumn.Hidden = True
Range("B:AZ").Find("Nachkommentar").EntireColumn.Hidden = True
Range("B:AZ").Find("Zusatz-Info").EntireColumn.Hidden = True
Range("B:AZ").Find("+-").EntireColumn.Hidden = True
Range("B:AZ").Find("SA/LA/PA").EntireColumn.Hidden = True
Range("B:AZ").Find("BE").EntireColumn.Hidden = True
Range("B:AZ").Find("Userid").EntireColumn.Hidden = True
Range("B:AZ").Find("letztes Aend.-Datum").EntireColumn.Hidden = True
Range("B:AZ").Find("KMNR-AI").EntireColumn.Hidden = True
Range("B:AZ").Find("Datum-AI").EntireColumn.Hidden = True
Range("B:AZ").Find("FixPos").EntireColumn.Hidden = True
Range("B:AZ").Find("Gewicht").EntireColumn.Hidden = True
Range("B:AZ").Find("Gewichtsart").EntireColumn.Hidden = True
Range("B:AZ").Find("SD-TEXT").EntireColumn.Hidden = True
Range("B:AZ").Find("SD-ID").EntireColumn.Hidden = True
Range("B:AZ").Find("Zertifikat").EntireColumn.Hidden = True
Range("B:AZ").Find("Mehere-Zertifikate").EntireColumn.Hidden = True

Meine Frage an Euch ist, wie ich diesen offensichtlich aufgeblähten Code vereinfachen kann. Zudem soll die Suche auch weiterlaufen, wenn einer der Suchbegriffe nicht in dem Arbeitsblatt vorkommt. Ich habe leider zu wenig Ahnung, als dass ich eine gute Schleife mit "On Error GoTo" o.Ä. schreiben kann.
Danke für Eure Hilfe!
Gruß,
Pseudo

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: On Error GoTo Problem & Code Verschlankung
24.10.2016 19:08:16
Daniel
Hi
solange du die Spaltennamen nirgend woanders hinterlegt hast (bspw als Liste in eine Exceltabelle) lässt sich da mit Schleife nicht viel machen, da du ja sowieso jeden Spaltennamen einzeln angeben musst
Du könntest zwar die Spaltennamen in ein Array packen, das wird zwar kürzer ist aber unübersichtlich bei vielen Spalten:
dim SP
For each SP in Array("POS", "PPG", ..., "Zertifikat", "Mehere-Zertifikate")
Range("B:AZ").Find(SP).EntireColumn.Hidden = True
Next
das mit dem On Error geht hier ganz einfach, weil du ja im Prinzip einfach nur mit der nächsten Spalte weitermachen kannst, wenn ein Spaltenname nicht gefunden werden kann:
On Error Resume Next
Range("B:AZ").Find("Pos").EntireColumn.Hidden = True
Range("B:AZ").Find("Mehere-Zertifikate").EntireColumn.Hidden = True
On Error Goto 0
das On Error Resume Next sagt: bei Fehler mit dem nächsten Programmschritt weitermachen.
das On Error Goto 0 hebt das wieder auf.
bzw, musst du wirklich alle Zellen durchsuchen? Überschriften stehen normalerweise alle in der selben Zeile, daher würde ich her nicht die Spalten für die Suche einschränken, sondern auf jeden Fall die Zeilen.
gruß Daniel
Anzeige
AW: On Error GoTo Problem & Code Verschlankung
25.10.2016 17:45:47
Pseudo
Hallo Daniel,
Danke für deine Antwort. Es ist tatsächlich so, dass die Überschriften in der gleichen Zeile stehen. Diese Zeile variiert zwar, je nachdem welche Daten in das Excelblatt eingespielt werden, kann aber durch
' Zeilen werden als Vertriebsteil gekennzeichnet (Grün) oder als nicht Vertriebsteil (gelb) und  _
Kommentarfeld wird eingefügt
Dim c As Range
Dim V As Long
With ActiveSheet
On Error GoTo ende
Kogr = .Columns(1).Find("Kogr", LookIn:=xlValues, LookAt:=xlWhole).Row
V = .Rows(Kogr).Find("V", LookIn:=xlValues, LookAt:=xlWhole).Column
lastcell = .Cells(Rows.Count, 1).End(xlUp).Row
For Each c In .Range(.Cells(Kogr + 1, V), .Cells(lastcell, V))
If c = "*" Then
.Rows(c.Row).Interior.ColorIndex = 4
Else
.Rows(c.Row).Interior.ColorIndex = 3
End If
Next
.Columns(V + 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.Cells(Kogr, V + 1) = "Kommentar "
End With
ende:
jedesmal ermittelt werden. Ich weiß aber leider nicht wie ich das ganze mit

'Spalten ausblenden
Range("B:AZ").Find("Pos").EntireColumn.Hidden = True
Range("B:AZ").Find("PPG").EntireColumn.Hidden = True
Range("B:AZ").Find("Modul").EntireColumn.Hidden = True
Range("B:AZ").Find("EKogr").EntireColumn.Hidden = True
Range("B:AZ").Find("ZF").EntireColumn.Hidden = True
Range("B:AZ").Find("SD").EntireColumn.Hidden = True
Range("B:AZ").Find("ZI").EntireColumn.Hidden = True
Range("B:AZ").Find("BTCh").EntireColumn.Hidden = True
Range("B:AZ").Find("VC-rel").EntireColumn.Hidden = True
Range("B:AZ").Find("DMU-Modell").EntireColumn.Hidden = True
Range("B:AZ").Find("Reife").EntireColumn.Hidden = True
Range("B:AZ").Find("JITKZ").EntireColumn.Hidden = True
Range("B:AZ").Find("Nachkommentar").EntireColumn.Hidden = True
Range("B:AZ").Find("Zusatz-Info").EntireColumn.Hidden = True
Range("B:AZ").Find("+-").EntireColumn.Hidden = True
Range("B:AZ").Find("SA/LA/PA").EntireColumn.Hidden = True
Range("B:AZ").Find("BE").EntireColumn.Hidden = True
Range("B:AZ").Find("Userid").EntireColumn.Hidden = True
Range("B:AZ").Find("letztes Aend.-Datum").EntireColumn.Hidden = True
Range("B:AZ").Find("KMNR-AI").EntireColumn.Hidden = True
Range("B:AZ").Find("Datum-AI").EntireColumn.Hidden = True
Range("B:AZ").Find("FixPos").EntireColumn.Hidden = True
Range("B:AZ").Find("Gewicht").EntireColumn.Hidden = True
Range("B:AZ").Find("Gewichtsart").EntireColumn.Hidden = True
Range("B:AZ").Find("SD-TEXT").EntireColumn.Hidden = True
Range("B:AZ").Find("SD-ID").EntireColumn.Hidden = True
Range("B:AZ").Find("Zertifikat").EntireColumn.Hidden = True
Range("B:AZ").Find("Mehere-Zertifikate").EntireColumn.Hidden = True 
verknüpfen soll. Ich habe aber das Gefühl, dass Du es sehr leicht lösen kannt ;)
Danke und beste Grüße,
Pseudo
Anzeige

174 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige