• 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 verbergen wanneer er geen waarde in cellen zijn

Status
Niet open voor verdere reacties.

mause01

Gebruiker
Lid geworden
19 okt 2012
Berichten
75
ik heb de volgende code geschreven waarbij ik de kolommen verberg wanneer er geen waarde in de cellen staat.
enkel wanneer ik de eerste cel leeg laat in een kolom dan verbergd deze ook.
dan is niet de bedoeling.
het moet zijn als er maar iets staat vanaf rij 7 naar beneden dan moet hij het kolom niet verbergen.

Code:
Sub Macro_Hide()
Dim c As Range
    For Each c In Range("B7:AI" & Range("B" & Rows.Count).End(xlUp).Row).Cells 'Range("B7:AI7").Cells
        If c.Value = "" Then
            c.EntireColumn.Hidden = True
        End If
    Next c
            
     Dim celltxt As String
    celltxt = ActiveSheet.Range("AA5").Text
    If InStr(1, celltxt, "OFF") Then
         Range("AA7:AA5000").EntireColumn.Hidden = False
    Else
         Range("AA7:AA5000").EntireColumn.Hidden = True
    End If

'Wait for 1 second
Application.Wait Now + TimeSerial(0, 0, 1)
End Sub
 
Laatst bewerkt:
Dan lijkt mij de code nogal onzinnig. Doe er eens een bestandje bij en leg even uit wat de bedoeling is.

Waarom staat deze regel erin?
Code:
Application.Wait Now + TimeSerial(0, 0, 1)
 
Beste VenA,

Het eerste deel van de code is een andere actie.

Het gaat om het rode gedeelte van de code.

Code:
[COLOR="#FF0000"]Sub Macro_Hide()
Dim c As Range
    For Each c In Range("B7:AI" & Range("B" & Rows.Count).End(xlUp).Row).Cells 'Range("B7:AI7").Cells
        If c.Value = "" Then
            c.EntireColumn.Hidden = True
        End If
    Next c[/COLOR]
            
     Dim celltxt As String
    celltxt = ActiveSheet.Range("AA5").Text
    If InStr(1, celltxt, "OFF") Then
         Range("AA7:AA5000").EntireColumn.Hidden = False
    Else
         Range("AA7:AA5000").EntireColumn.Hidden = True
    End If

'Wait for 1 second
Application.Wait Now + TimeSerial(0, 0, 1)
End Sub

deze afbeelding geeft een voorbeeld aan:
hide.PNG
in dit voorbeeld heb ik een aantal cellen gevuld met een waarde.
wanneer ik bijvoorbeeld de bovenste cel D7 leeg laat verberg de marco het hele kolom.
ik wil graag hebben dat wanneer er een cel gevuld is in een kolom vanaf rij 7, dat het verbergen van het kolom niet gebeurd.

het probleem is wanneer er geen waarde in rij 7 staat verbergt het kolom, hoe kan ik dat oplossen.
Bekijk bijlage Sync_Salto_V2.1.4 MvO.rar

ik hoop dat dit meer duidelijk is.
alvast bedankt.
 
Plaats even het excel-bestand ipv een .rar Als het bestand te groot is om hier te plaatsen dan is het het geen voorbeeldbestand en anders kan je het eventueel ook opslaan als .xlsb en dan hier plaatsen.
 
Graag een representatief bestand en geen onzinnige kleurplaat zonder enige code.
 
Code:
Sub hide_columns()
Dim j As Long
Application.ScreenUpdating = False
  With Sheets("blad1")
    For j = .UsedRange.Columns.Count To 2 Step -1
      .Columns(j).Hidden = Application.CountA(.Range(.Cells(7, j), .Cells(Application.Max(7, .Cells(Rows.Count, j).End(xlUp).Row), j))) = 0
    Next j
  End With
End Sub
 
Code:
Sub Macro_Unhide()
    Blad1.Columns.Hidden = False
End Sub


Sub Macro_Hide()
Dim sh As Worksheet
Set sh = Blad1
    With sh
        .Columns.Hidden = False
        For i = 2 To .UsedRange.Columns.Count
            If .Cells(7, i) = "" Then .Columns(i).Hidden = True
        Next
    End With
End Sub
 
Hallo,

Mankeert er iets aan de code in mijn vorig schrijven?
Of je moet nodig eens aan de bril. :d
 
Bedankt voor de code.

Enkel heb ik een vraag ik gebruik deze macro voor alle sheets in de excel.
het betreft een button op elke sheet.

gaat dat wel werken omdat ik de sheet moet defineren.

ik heb beide codes geprobeerd maar ik krijg het zelfde resultaat.
het kolom verbergt nog steets als ik in rij 7 een cell leeg laat.
 
Ik blijf het een onzinnige kleurplaat vinden die ook niets met
Code:
If InStr(1, celltxt, "OFF") Then
te maken heeft.
 
Het is een op internet gevonden code vermoed ik.
Code:
celltxt =[COLOR="#FF0000"] ActiveSheet.[/COLOR]Range("AA5").Text


Enkel heb ik een vraag ik gebruik deze macro voor alle sheets in de excel.
gaat dat wel werken omdat ik de sheet moet defineren.
 
Bedankt HSV,

De laatste code is inderdaad helemaal super.
Werkt als een perfect.

De code had in inderdaad op internet gevonden.
deze gebruik ik voor een ander doel in deze sheet.

maar ik ga deze aanpassen.
 
Laatst bewerkt:
Mooi zo.

Een tip.
Stel niet teveel vragen in een keer over Vba als je er niet helemaal in thuis bent, maar handel ze een voor een af.
Je ziet door de ....... het bekende spreekwoord.

Ps. vergeet niet de vraag als opgelost te markeren.
Bvd.

Overigens graag gedaan.
 
Mooi zo.

Een tip.
Stel niet teveel vragen in een keer over Vba als je er niet helemaal in thuis bent, maar handel ze een voor een af.
Je ziet door de ....... het bekende spreekwoord.

Ps. vergeet niet de vraag als opgelost te markeren.
Bvd.

Overigens graag gedaan.

Ja je hebt helemaal gelijk.

Ik zal er rekening mee houden bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan