• 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.

Rijen verbergen in VBA

Status
Niet open voor verdere reacties.

Revdutchie

Gebruiker
Lid geworden
29 nov 2009
Berichten
645
Hallo,

Hoe kan ik dmv VBA een rij verbergen en dan bedoel ik het zo als in
Kolom A en B worden gevuld vanaf A1 naar beneden, zodra in
A10 en B10 een waarde staat verberg rij 1 en dan naar beneden doortrekken
dus zodra in A11 en B11 een waarde staat rij 2 verbergen, etc etc

Met andere woorden zodra de rij X wordt bereikt steeds 1 rij verbergen ?
 
Laatst bewerkt:
Zou dit de bedoeling zijn:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rij = Range("A65000").End(xlUp).Row
If Rij > 10 Then Rows(Rij - 10).Hidden = True
End Sub

Deze kijkt wel enkel naar kolom A

Cobbe
 
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Rows([A1].CurrentRegion.Rows.Count - 10).EntireRow.Hidden = _
        IIf([A1].CurrentRegion.Rows.Count > 10, True, False)
End Sub
 
Cobbe en Rudi,

Beide krijg ik niet werkend. Even voor de duidelijkheid, de macro wordt achter de sub textbox_enter in een userform gehangen maar dat mag volgens mij niet uitmaken, de sheet waarom het om gaat is dan ook actief.

Eigenlijk is het zo als er op rij 22 ergens een waarde staat, kolom maakt niet uit moet rij 11 verborgen worden, bij rij 23 dus rij 12 verbergen etc etc. dit gaat door tot rij 100.
 
Code:
Private Sub TextBox1_Enter()
If Sheets(1).UsedRange.Rows.Count >= 22 And _
            Sheets(1).UsedRange.Rows.Count < 100 Then
    Rows(Sheets(1).UsedRange.Rows.Count - 11).Hidden = True
End If
End Sub
 
Code:
Private Sub TextBox1_Enter()
If Sheets(1).UsedRange.Rows.Count >= 22 And _
            Sheets(1).UsedRange.Rows.Count < 100 Then
    Rows(Sheets(1).UsedRange.Rows.Count - 11).Hidden = True
End If
End Sub

Ik heb wel 100 x over je code heen gelezen en volgens mij moet het kloppen, maar het werkt niet :o Heb de = voor 22 nog verwijderd maar dat gaf ook geen soelaas. Sheets(1) nog gewijzigd in de echte sheet naam ("single") maar dat werkte ook niet. Ik krijg ook geen foutmelding.

Kan het bestand niet posten want zelfs na zippen is het nog 400kb :confused:
 
Laatst bewerkt:
toch gelukt, alle plaatjes er uit gesloopt. (wel jammer want met is zoveel mooier)

LET OP, volgens mij werkt het niet goed in 2007, ik heb 2003
het gaat dus om blad single en dan staat userform (multi) page 2 open.

Oops vergeten te melden hoe je via het form er komt.
Bij start scherm --> competitie dan start competitie en dan game 1
 

Bijlagen

Laatst bewerkt:
Code:
Private Sub TextBox1_AfterUpdate()
[a65536].End(xlUp).Offset(1) = TextBox1.Value
If Sheets(1).UsedRange.Rows.Count >= 22 And _
           Sheets(1).UsedRange.Rows.Count < 100 Then
    Rows(Sheets(1).UsedRange.Rows.Count - 11).Hidden = True
End If
End Sub
 
Code:
Private Sub TextBox1_AfterUpdate()
[a65536].End(xlUp).Offset(1) = TextBox1.Value
If Sheets(1).UsedRange.Rows.Count >= 22 And _
           Sheets(1).UsedRange.Rows.Count < 100 Then
    Rows(Sheets(1).UsedRange.Rows.Count - 11).Hidden = True
End If
End Sub

Rudi,

Schiet mij maar lek!! Alles wat je hebt aangedragen is logisch maar het werkt niet :(

Heb je me voorbeeldje gezien ?
 
Code:
[Single!j101].End(xlUp).Offset(1) = "*"
If Sheets("single").[j101].End(xlUp).Row >=  22 Then
    Sheets("single").Rows(Sheets("single").[j101].End(xlUp).Row - 11).Hidden = True
End If
Nogal wiedes dat dit niet werkte. Je hebt formules staan tot rij 101 dus je UsedRange.Row was steeds 101 terwijl je in de voorwaarde niet hoger dan 100 mocht.
Zet bovenstaande code onder Next x in je Textbox1_enter macro. Doe hetzelfde maar dan voor de P-kolom in je Textbox2_Enter macro. Zet een waarde in J10 en P10 zodat de eerste lege cel stees J11 en P11 is. Vergeet deze twee bereiken (J11 tot J..., en P11 tot P ....) niet te wissen na het beëindigen v/h spelletje zodat je weer terug kan beginnen invullen bij een nieuw spel.

Edit: dit bewijst nog maar eens het belang van een voorbeeldbestandje :D:D
deze vraag had gisterenochtend al opgelost kunnen zijn :p :p
 
Laatst bewerkt:
Het verbergen/tonen van kolommen/rijen is alleen zinvol als je de werkbladen als invoergebieden voor de gebruiker beschouwt. Zo gauw je gaat werken met een userform is het het verbergen/tonen van rijen/kolommen overbodig en zonde van de moeite. Dan dien je er alleen voor te zorgen dat de gebruiker niets aan een werkblad kan wijzigen/waarnemen zonder het userform.
 
Het verbergen/tonen van kolommen/rijen is alleen zinvol als je de werkbladen als invoergebieden voor de gebruiker beschouwt. Zo gauw je gaat werken met een userform is het het verbergen/tonen van rijen/kolommen overbodig en zonde van de moeite. Dan dien je er alleen voor te zorgen dat de gebruiker niets aan een werkblad kan wijzigen/waarnemen zonder het userform.

De gebruiker kan ook niets aan het werkblad wijzigen, en alleen waarden invoeren via het userform, alleen zodra de onderkant van het werkblad word bereik moet de gebruiker nog wel kunnen zien wat hij invoert.
 
Heb je mijn voorstel eigenlijk al getest ? Post#11
 
Heb je mijn voorstel eigenlijk al getest ? Post#11

Ja, maar ik had niet veel tijd vandaag. Maar het werkte niet. Tenminste niet zoals ik wilde. Het verborg rij 11 T/m 22 en wat ik wil is vanaf rij 23 steeds een enkele rij verbergen. Maar misschien heb ik het fout gedaan. Ik heb morgen (vanmiddag) weer alle tijd om het te testen.
 
Code:
[Single!j101].End(xlUp).Offset(1) = "*"
If Sheets("single").[j101].End(xlUp).Row >=  [COLOR="Red"]23[/COLOR] Then
    Sheets("single").Rows(Sheets("single").[j101].End(xlUp).Row [COLOR="red"]- 1[/COLOR]).Hidden = True
End If
Deze had je toch wel zelf kunnen vinden :o
 
Code:
[Single!j101].End(xlUp).Offset(1) = "*"
If Sheets("single").[j101].End(xlUp).Row >=  [COLOR="Red"]23[/COLOR] Then
    Sheets("single").Rows(Sheets("single").[j101].End(xlUp).Row [COLOR="red"]- 1[/COLOR]).Hidden = True
End If
Deze had je toch wel zelf kunnen vinden :o

Ja, maar we moeten vanavond competitie spelen dus moest ik er voor zorgen dat eerst alle spelsoorten werken en had ik er dus nog niet naar gekeken.

overigens werkt het niet dit verbergt steeds de onderste regel.
 
Rudi,

Ik heb het anders opgelost, had opeens een helder moment :D

in M11 heb ik =aantal F11:F100 staan

en dan in me enter textbox

If [M11] > 10 Then Rows([M11]).EntireRow.Hidden = True

EDIT

Code:
With Sheets("Single")
If [M11] > 10 Then
      .Rows([M11]).EntireRow.Hidden = True
Else: .Range("A11:A100").EntireRow.Hidden = False
End If
End With

Dit staat nu in textbox 1 en 2, werkt perfect, laat na het wissen ook weer alle rijen zien.

Waarbij ik me nu bedenk dat ik dit truukje voor veel meer xlUP's kan gebruiken het lijkt namelijk sneller te werken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan