• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kolommen uitsluiten bij verwijderen

Status
Niet open voor verdere reacties.

Boboes

Gebruiker
Lid geworden
5 nov 2016
Berichten
45
In bijgaand voorbeeldbestandje heb ik een VBA-code die ervoor zorgt dat bepaalde kolommen worden geselecteerd. Selectie vindt plaats o.b.v. de kolomtitel: wordt de naam (geheel of gedeeltelijk) gevonden dan wordt het kolomnummer ‘gevangen’ in een variabele. Dit is zo opgezet omdat de kolommen niet altijd op dezelfde plaats staan.

Nu zou ik het zo willen hebben dat alle kolommen (van 1e kolom t/m laatst gebruikte kolom) worden verwijderd, met uitzondering van de kolommen die in een variabele zijn gevangen; die moeten behouden blijven. Hoe kan de huidige code daarop worden aangepast?

Ik heb een aantal oplossingen gezien in die richting maar die kan ik niet concreet toepassen op het voorbeeldbestand (ik ben nog niet zo goed thuis in VBA).

Bij voorbaat dank voor de hulp!

Christ
 

Bijlagen

  • Verwijderen kolommen.xlsm
    13,9 KB · Weergaven: 33
Hebben de kolomkoppen geen vaste naam? Welke kolommen moeten behouden blijven? Wat doen de gegevens in kolom L? De code zal niet zo moeilijk zijn maar je moet wel eerst wat moeite doen van om de wens een vraag te maken.
 
Beste VenA,

De kolomkoppen hebben meestal dezelfde naam, maar niet altijd omdat ze bijv. soms worden aangevuld. Vandaar de Find-functie naar de hele of gedeeltelijke naam.

Behouden moeten blijven de kolommen die met de Find-functie gevonden worden. Als je de huidige macro uitvoert zie je welke kolommen dat zijn.

Kolom L heb ik als voorbeeld toegevoegd omdat die kolom niet aansluit aan de overige kolommen (kolom K is namelijk leeg) maar wel de laatste kolom is en het bereik markeert (in dit geval A:L).

MvG Christ
 
Welke 'idioot' gaat dan soms de kolomkoppen aanpassen en hoe weet je dan dat je met de find methode de juiste kolom te pakken hebt?

Wat je hiermee bedoelt is mij een raadsel.
Kolom L heb ik als voorbeeld toegevoegd omdat die kolom niet aansluit aan de overige kolommen (kolom K is namelijk leeg) maar wel de laatste kolom is en het bereik markeert (in dit geval A:L).
 
Vanuit de praktijk gebeurt het SOMS dat een ‘idioot’ de naam wat gaat veranderen. Zou er te veel veranderd worden, dan herkent procedure de kolom niet meer en wordt de macro ook afgebroken (exit sub). Het is overigens wel steeds dezelfde ‘ídioot’ die dat om bepaalde redenen doet. Dat is verder wel onder controle en zou geen belemmering moeten zijn voor het zoeken naar een oplossing voor de code…

T.a.v. het bereik: daarmee wordt beoogd dat ook kolom L verwijderd zou moeten worden wanneer die kolomkop niet voldoet aan de voorwaarden. Het is een voorbeeld om aan te geven dat niet alleen een aaneengesloten bereik (A:J) maar het bereik t/m de laatst gebruikte kolom (A:L) beoordeeld moet worden.

Ik hoop dat het hiermee iets duidelijker is geworden….:)
 
Bv.

Code:
Sub hsv()
Dim sv, arr, j As Long, c As Range, y As Long, n As Long
sv = ActiveSheet.UsedRange.Rows(1)
 For j = 1 To UBound(sv, 2)
    For Each arr In Array("pers", "ontvanger", "uitvoer", "bdnr", "tekst", "betaald")
      If InStr(1, sv(1, j), arr, 1) = 0 Then n = n + 1
    Next arr
        If n = 6 Then
            If y = 0 Then
              Set c = Cells(1, j)
              y = y + 1
            Else
              Set c = Union(c, Cells(1, j))
            End If
      End If
      n = 0
  Next j
 If Not c Is Nothing Then c.EntireColumn.Delete
End Sub
 
Beste Harry,

Dit is precies wat ik bedoel!! Ik kan de code nog wel niet helemaal volgen, maar het werkt in ieder geval.

Hartelijk dank voor deze knappe oplossing! :D

M.v.g.
Christ
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan