Toon posts:

[VB/Excel] script om cellen in excel te protecten

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste Tweakers,

Ik ben op zoek naar een uitleg, hoe ik aan de hand van VB script in Excel een bepaald script maak.
Het is de bedoeling dat er het volgende gebeurt:

Stel je vult in Cel A1 in: 500 dan moet Cel A2 en Cel A3 protected worden, zodat men hier niet in kan typen. Mijn volgende vraag is het wel mogelijk dat dat script constant loopt en niet alleen als ik de macro start. Heb al gezocht hier op Tweakers maar kon er niet echt iets van vinden wat er betrekking op heeft.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Excel / VBA hoort in Officesuites en -software, dus ik move dit topic die kant op :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Bedankt _/-\o_

Verwijderd

Topicstarter
Ben nu bezig om eerst als er in A1 500 staat dat cell B1 dan groen word en als A1 50 is paars
Dit heb ik voor elkaar alleen wil ik dat nu voor A1 t/m A50 naar cell B1 t/m B50
Iemand een idee?

A1 B1
500 Groen
50 Paars

code:
1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim intKleurIndex As Integer
 
Range("A1").Select
If Range("B1,B2") = 500 Then
Selection.Interior.ColorIndex = 36
ElseIf Range("B1,B2") <> 500 Then
    Selection.Interior.ColorIndex = 37
    
End If
End Sub

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Goed, dan verplaats ik hem wel echt creepy ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Je wilt niet al te letterlijk de 'macro opnemen' output gebruiken, haal Range("A1").Select even weg :P

Verder ben je al een stuk op weg, alleen nog even Range("B1").Selection.Locked = True toevoegen.

Of beter: kijk welke cel is veranderd met de Change() en gebruik dan Cells(i, j) om de juiste cel te beveiligen. De Target in de Change() functie geeft aan wat er is veranderd:
code:
1
2
3
Private Sub Worksheet_Change(ByVal Target As Range)
   Debug.Print Target.Address
End Sub

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Heb nog een vraagje, heb nu het volgende,

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Worksheets("ROUTING").Select

Dim colno As Integer
Dim rowno As Integer
Worksheets("ROUTING").Range("A9:P30").Locked = True    <<<<< Hier Gaat het Fout
For colno = 1 To 16
    For rowno = 1 To 20
        If Worksheets("ROUTING").Cells(rowno, colno).Interior.ColorIndex = 36 Then
        Cells(rowno, colno).Locked = False
        Cells(rowno, colno).FormulaHidden = False
        End If
    Next rowno
Next colno
Worksheets("ROUTING").Protect
End Sub


Het script klopt in principe wel, alleen als ik in een veld iets invul waar dat mag en druk op enter krijg ik de volgende melding:

Run-time error: 1004

Unable to set Locked Property of the range class.

Iemand enig idee wat er fout is in mijn script?

[ Voor 21% gewijzigd door Verwijderd op 31-03-2006 20:11 ]


Verwijderd

Topicstarter
Niemand die het weet toevallig? :D

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Zitten er toevallig samengevoegde cellen in dat bereik? Zo ja: doe die apart.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Door locked op true te zetten zet je ook de eigenschap protect van het worksheet op true. Ergo, je kunt de celeigenschappen niet meer wijzigen. Voordat je dus iets met het sheet kunt doen moet je eerst worksheet.unprotect aanroepen, of middels vba protect instellen op UI-only. Eea vind je in de help uitgebreider uitgelegd als je protect, methode opzoekt ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1