Spaltenverdopplung abstellen wenn unerwünscht
19.01.2018 12:01:11
Markus
gesundes Neues Jahr noch :)
Folgendes Problem besteht bei mir:
Bisher funktioniert die korrekte Anlegung und Prüfung von Spalten nicht so wie erhofft für die Tabellen 1 und 2:
Was geht:
Wenn in jeder zu prüfenden Spalte das Wort Umrandung vorkommt, dann wird keine Spalte angefügt, was richtig ist.
Wenn in jeder zu prüfenden Spalte Excel das Wort "Umrandung" nicht findet, wird diese Spalte angelegt und das Wort Umrandung in die dritte Zeile der neu angelegten Spalte geschrieben, was auch richtig ist.
Was nicht geht:
Nun aber das Problem: Fehlt eine der prüfenden Spalten wird diese zwar auch mit dem Wort "Umrandung" in der dritten Zeile angelegt, doch leider werden zusätzlich bei allen weiteren zu prüfenden Spalten ebenfalls nochmal neue Spalten angelegt, was aber nicht sein soll, da diese ja laut Prüfung schon vorhanden sind.
Um das Problem also beim Namen zu nennen: Wenn bei einer zu prüfenden Spalte das Wort Umrandung fehlt, wird es zwar korrekt angelegt, aber die Spalten wo es richtig ist bekommen trotzdem nochmal eine Spalte angehangen, was aber falsch ist.
Folgenden Code habe ich damals von Daniel erhalten und mir schon wie folgt angepasst:
Sub Test()
Dim wsh
Dim c
'Z = Columns(13)
'd = Columns(10)
'e = Columns(7)
'f = Columns(4)
For Each wsh In Sheets(Array("Tabelle1", "Tabelle2"))
For Each c In Array(13, 10, 7, 4)
If WorksheetFunction.CountIf(wsh.Columns(13), "Umrandung") = 0 Then
'wenn es nicht vorhanden ist
wsh.Columns((13) + 1).Insert
wsh.Cells(3, (13) + 1).Value = "Umrandung"
Else
If WorksheetFunction.CountIf(wsh.Columns(13), "Umrandung") 0 Then Exit Sub
End If
If WorksheetFunction.CountIf(wsh.Columns(10), "Umrandung") = 0 Then
wsh.Columns((10) + 1).Insert
wsh.Cells(3, (10) + 1).Value = "Umrandung"
Else
If WorksheetFunction.CountIf(wsh.Columns(10), "Umrandung") 0 Then Exit Sub
End If
If WorksheetFunction.CountIf(wsh.Columns(7), "Umrandung") = 0 Then
wsh.Columns(7 + 1).Insert
wsh.Cells(3, 7 + 1).Value = "Umrandung"
Else
If WorksheetFunction.CountIf(wsh.Columns(7), "Umrandung") 0 Then Exit Sub
End If
If WorksheetFunction.CountIf(wsh.Columns(4), "Umrandung") = 0 Then
wsh.Columns(4 + 1).Insert
wsh.Cells(3, 4 + 1).Value = "Umrandung"
Else
If WorksheetFunction.CountIf(wsh.Columns(4), "Umrandung") 0 Then Exit Sub _
End If
If WorksheetFunction.CountIf(wsh.Columns(c), "Umrandung") = 0 Then
wsh.Columns(c + 1).Insert
wsh.Cells(3, c + 1).Value = "Umrandung"
Else
If WorksheetFunction.CountIf(wsh.Columns(c), "Umrandung") 0 Then Exit Sub
End If
Next
Next
End Sub
Hoffe mir kann da jemand helfen, das dieses anlegen der Spaltenverdopplung aufhört, (wenn also eine, zwei oder drei von allen 4 Spalten noch fehlen und die die bereits da sind nicht automatisch noch verdoppelt werden, wenn die zu fehlendne Spalten ergänzt werden bei der Prüfung.
Beste Grüße
Markus