Regel blokkeren indien kolom E een bedrag staat

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Bekijk bijlage Regel blokkeren.xlsx
Beste Helpmij'ers,

Ik ben op zoek naar een code die - per regel - de cellen A t/m D op blokkeren zet wanneer in de betreffende regel in kolom E een bedrag staat. Wanneer er geen bedrag (meer) staat, dient de blokkade er af gehaald te worden.

Graag ook een actief bereik aan geven van Cel A43 t/m E162 (omdat het hier om een voorbeeldbestand gaat mag het ook A1 t/m E162 zijn.

Een voorbeeldbestandje doe ik als bijlage.

Alvast heel erg bedankt.

Robert
 
En wat moet er nu gebeuren? In kolom E staat een verwijzing naar een extern bestand en op 1 cel na staat er altijd een bedrag in. 0 is toch ook een een bedrag? Wat je met een actief bereik bedoelt is ook niet erg helder.

Mogelijk zoiets?
Code:
Sub VenA()
  Range("A3:E" & Cells(Rows.Count, 2).End(xlUp).Row).Select
End Sub
 
Bedankt voor jouw reactie.

mijn verontschuldiging dat ik niet duidelijk genoeg mijn vraag heb gesteld.

In het voorbeeldbestand staan alle cellen niet op geblokkeerd ( zie celeigenschappen). Mijn bedoeling is wanneer ergens in kolom E een bedrag (zeg maar ongelijk aan 0) staat, dan moet de code in die regel de kolommen A, B, C en D op geblokkeerd zetten zodat deze niet bijv. niet verwijderd of gewijzigd kunnen worden.

Ik hoop jou hiermee iets meer duidelijkheid te hebben kunnen geven.
 
Zoiets?

Code:
Sub VenA()
For Each cl In Range("A3:A" & Cells(Rows.Count, 2).End(xlUp).Row).Offset(, 4)
  If cl.Value <> 0 Then cl.Offset(, -4).Resize(, 4).Locked = True
Next cl
End Sub
 
Het blad nog beveiligen anders heeft het weinig nut.
 
De code werkt prima, ik moest alleen een paar aanpassingen doen.

Code:
For Each cl In Range("a41:a" & Cells(Rows.Count, 2).End(xlUp).Row).Offset(, 4)
ActiveSheet.Unprotect
  If cl.Value <> 0 Then cl.Offset(, -4).Resize(, 4).Locked = True
ActiveSheet.Protect
Next cl

Aangezien dit een onderdeel is van een groter geheel (zie onder) zal de code geactiveerd moeten worden wanneer er in kolom E een getal bevindt. Nu is deze voortdurend actief en kan ik geen handeling verrichten of de code wordt weer geactiveerd en is een aantal seconden een proces aan het uitvoeren. Is hier een oplossing voor?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 
Ik heb de oplossing voor de vertraging....ik kwam erachter dat de beveiliging er nog tussen stond. Ik heb deze verwijderd en nu gaat het goed.
 
Bij een change event steeds een bereik doorrekenen lijkt mij nogal onzinnig. Wat je allemaal aan het maken bent kan veel doordachter. Je gaat uit van een opgemaakte sheet en probeert dan alles met, nogal 'krakkemikkige', code in combinatie met formules te ondervangen.
Waarom deze formule
Code:
=IFERROR(IF(I38="";"";VLOOKUP(I38;CHOOSE({1\2};'Persoonlijke instelling'!$C$19:$C$128;'Persoonlijke instelling'!$B$19:$B$128);2;0));"Druk op vullen en sorteren")
ipv
Code:
=INDEX($B$19:$B$138;MATCH(I38;$C$19:$C$138;0))

Het maken van grootboeknummers obv een omschrijving lijkt mij niet logisch.

Waarom maak je geen gebruik van een userform en schrijf je niet alle data in 1 tabel?

Edit. Ik had het andere bestandje uit een andere/gelijksoortige vraag van je open staan. De opmerkingen/vragen blijven natuurlijk hetzelfde.
 
Laatst bewerkt:
Allereerst heel bedankt voor jullie bijdrage.

Ondanks het krakkemikkige programmeren (mijn beperkte vba-kennis) werkt het wonderbaarlijk wel. Ik realiseer mij terdege dat dit absoluut niet professioneel over komt. Bovendien had ik ook graag iets middels een userform willen doen, helaas ontbreekt mij de kennis om dit te maken en ben ik daarom des te blijer met jullie bijdragen, dat het jullie altijd weer lukt om een passende oplossing te bieden...diepe buiging :thumb:

ps
Dat ik ook met formules werk heeft ook een reden. Omdat Excel niet te beveiligen is, heb ik een list bedacht dat na een bepaalde tijd alle formules omgezet worden naar waarden en zo ver ik weet kan dat niet via een vba. Mochten daar mogelijkheden zijn, dan hoor ik dat heel graag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan