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

celformaat aanpassen via VBA

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
8.418
Collega’s moeten foto’s beoordelen en dit in dit excel bestand noteren.
Via VBA verander ik de celopmaak van enkele cellen naar "0;-0;;"
Hierdoor wordt de inhoud van de cel niet meer zichtbaar voor anderen.
Het bereik van deze opmaak moet aangepast worden als er een 2e en 3e enz reeks foto’s beoordeeld moet worden.

Hoe is dit het eenvoudigst op te lossen.

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '
    Dim Sh
   
    For Each Sh In Sheets
       ' If Sh.Name <> "instellingen" Then
         If Left(Sh.Name, 1) <> "_" Then
            
 [COLOR="#FF0000"]           'HOE kan ik de regels hier onder het eenvoudigst aanpassen bij uitbreiding van het bestand.
            'dus ("F21:J30") wordt ("F21:J30,Q21:U30") en daarna ("F21:J30,Q21:U30,AB21:AF30") enz.
 [/COLOR]           
            
            With Sh.Range("F21:J30")
                .Locked = False
                .SpecialCells(2).NumberFormat = "0;-0;;"
                .SpecialCells(2).Locked = True
                '.Protect Password:="zz"
            End With
        End If
    Next
End Sub
 

Bijlagen

  • competentie_2.xlsm
    26,6 KB · Weergaven: 26
Omdat die bereiken nog verborgen zijn kun je het oplossen met Specialcells(xlvisible)

Code:
With Sh.Range("F21:J30,Q21:U30,AB21:AF30")[COLOR=#ff0000].SpecialCells(12)[/COLOR]
 
Harry,
Bedankt voor de poging, dit was echter niet wat ik bedoelde.
Ik wilde op een eenvoudige manier het bereik uitbreiden.
Voorlopig heb ik het opgelost om dit bereik van te voren voor meerdere reeksen er in te zetten.
 
Moi Willem,

Ik zag dat de bereiken die je nog niet gebruikte verborgen waren, vandaar de specialcells(12).
Prima dat je het zelf hebt opgelost natuurlijk.

Voorlopig is geen tevredenheid verneem ik.

Misschien een hint:
Code:
set tb = range("F21:J30")
 If tweede bereik <> leeg dan Set TB = Union(TB, range("Q21:U30"))
If derde bereik <> leeg dan Set TB = union(TB, range("AA21:AF30")),enz.
 
Misschien ben ik nog niet duidelijk genoeg daarom nog een poging.

Bij de eerste reeks staat er in de VBA
Code:
 With Sh.Range("F21:J30")
Maak ik een 2e reeks aan, dan moet ik de VBA aanpassen naar:
Code:
With Sh.Range("F21:J30,Q21:U30")

Maak ik een 3e reeks aan dan met de VBA opnieuw aangepast worden naar:
Code:
With Sh.Range("F21:J30,Q21:U30,AB21:AF30")

Elke keer de VBA aanpassen is natuurlijk niet handig

Nu heb ik een formule die kijkt of de cel in deze logische reeks past

Code:
=MOD(COLUMN()-6;11)<5
Deze formule geeft een uitslag van TRUE in deze reeks.

dus zoiets zou het moeten worden:

Code:
With Sh.Range(MOD(COLUMN()-6;11)<5)
 
Kun je niet een benoemd bereik maken en gebruiken in VBA. Dan hoef je alleen het benoemde berei aan te passen
 
Of tabellen gebruiken.
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '
    Dim Sh[COLOR=#ff0000], Lobj As ListObject[/COLOR]
   
    For Each Sh In Sheets
       ' If Sh.Name <> "instellingen" Then
         If Left(Sh.Name, 1) <> "_" Then
            
            
            
            'HOE kan ik de regels het eenvoudigst aanpassen bij uitbreiding van het bestand.
            'dus ("F21:J30") wordt ("F21:J30,Q21:U30") en daarna ("F21:J30,Q21:U30,AB21:AF30") enz.
[COLOR=#ff0000]           For Each Lobj In Sh.ListObjects[/COLOR]
            
            
            With [COLOR=#ff0000]Sh.ListObjects(Lobj.Name).DataBodyRange [/COLOR]'HOE kan ik deze regel automatisch aanpassen bij uitbreiding van het bestand.
                .Locked = False
                .SpecialCells(2).NumberFormat = "0;-0;;"
                .SpecialCells(2).Locked = True
                '.Protect Password:="zz"
            End With
[COLOR=#ff0000]         Next Lobj[/COLOR]
        End If
    Next
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan