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

sheet naam geven cel vanaf x aantal tabs

Status
Niet open voor verdere reacties.

arjoderoon

Gebruiker
Lid geworden
2 mei 2007
Berichten
476
Ik heb een bestand waarin ik vanaf het 6e worksheet (van links naar rechts gezien dan) een macro de sheetnaam wil laten aanpassen.
Ik heb op een ander de volgende code gevonden:
Code:
Sub Lunein()
 Dim cl As Range
   For Each cl In Sheets(1).Cells(1).CurrentRegion
  Sheets.Add after:=Sheets(Sheets.Count)
 Sheets(Sheets.Count).Name = cl.Value
Next cl
End Sub

Hier staat de code in om de naam van de sheet aan te laten passen, maar ik zit nu te zoeken naar een manier om dit pas vanaf de 6e sheet in te laten gaan, en waarbij dan cel C1 de cel is die de sheetnaam zal bepalen.
Heb ik hier dan de juiste code voor te pakken en hoe kan ik deze aanpassen zodat dit pas werkt vanaf de 6e sheet?

Bedankt.
 
Het zijn al bestaande bladen?
Dus je hebt 6 bladen in je werkboek, en in blad6 cel C1 staat iets?
 
Op het moment dat ik de macro uit zou voeren zijn het allemaal bestaande worksheets. En ik zou het graag zelf schrijven maar ik heb geen kaas gegeten van vba. Daarom moet ik het hebben van scripts die ik op internet vind. Ik zag wel ergens iets met 'for i =1to3 etc, maar weet niet hoe ik dat toe moet passen
 
ajderoon,

probeer dit eens....

Code:
sub geefnaam()
  tb = activeworkbook.sheets.count
    if tb <6 then exit sub
  for t = 6 to tb
    sheets(t).name = sheets(t).range("C1").value
  next t
end sub
 
thanks! dat werkt.... ieder invulschema dat erna komt wordt ook aangepast!

ik wil het zelfde mechanisme eigenlijk ook toepassen op onderstaande code. hoe kan ik dat integreren? onderstaande code doet nu namelijk alle worksheets beveiligen (dus pas vanaf het 6e werkblad toepassen):
Code:
Sub copyrange()
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim cpy As Boolean
Set ws1 = ActiveSheet
last = ws1.Range("T" & Rows.Count).End(xlUp).Row

'hulpmiddel om de bron in de sheets te vinden
cpy = False
For Each ws In Worksheets
    
    ScreenUpdating = False
    
        ws.Unprotect ("arjo1810")
    If cpy Then
        ws1.Range("T1", "T" & CStr(last)).Copy _
        Destination:=ws.Range("T1")
    End If
    If ws.Name = ws1.Name Then
        cpy = True
    End If
        ws.Protect ("arjo1810")
Next ws

End Sub

wat moet dit script doen? in het blad 'max score' kolom t selecteren en kopieren, en vervolgens voor ieder blad dat erna komt (ook hier is dat het 6e werkblad in het bestand) in kolom T plakken. Alleen de sheets zijn met een wachtwoord beveiligd. Dat wordt nu dus ook opgeheven. en vervolgens weer ingesteld. Maar dat wachtwoord instellen wordt over alle worksheets gedaan en niet alleen over het 6e en verdere worksheet.


Alvast bedankt in ieder geval, super dat het naam geven nu werkt.

Ik heb nog een ander macro dingetje maar daar open ik wel een ander topic voor als ik daar de oplossing niet voor kan vinden.
 
arjo,

je vraagt het sheetnummer op met:

Code:
bladnr = ActiveSheet.Index

Kun je hier verder mee?
 
ik zit een online vba tutorial te lezen, maar ik ben bang dat dit voor nu niet toereikend is voor mij om zelf dat op de juiste plaats te zetten in het script.

ik had er nu dit van gemaakt:
Code:
Sub copyrange()
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim cpy As Boolean
Set ws1 = ActiveSheet
last = ws1.Range("T" & Rows.Count).End(xlUp).Row

'hulpmiddel om de bron in de sheets te vinden
cpy = False
  tb = ActiveWorkbook.Sheets.Count
    If tb < 6 Then Exit Sub
  For t = 6 To tb
      
    ScreenUpdating = False
    
        ws.Unprotect ("arjo1810")
    If cpy Then
        ws1.Range("T1", "T" & CStr(last)).Copy _
        Destination:=ws.Range("T1")
    End If
    If ws.Name = ws1.Name Then
        cpy = True
    End If
        ws.Protect ("arjo1810")

  Next t
End Sub

zonder precies te weten wat ik nu doe, maar dit werkt niet. Ik heb hier het 'For Each ws In Worksheets' uit gehaald.
 
arjo,

Code:
Sub copyrange()
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim cpy As Boolean
Set ws1 = ActiveSheet
last = ws1.Range("T" & Rows.Count).End(xlUp).Row

'hulpmiddel om de bron in de sheets te vinden
cpy = False
For Each ws In Worksheets
    
    ScreenUpdating = False
    
        ws.Unprotect ("arjo1810")
    [COLOR="#FF0000"]If ws.Index >=6 then ws.name  = ws.range("C1").value[/COLOR]    
    If cpy Then ws1.Range("T1", "T" & CStr(last)).Copy Destination:=ws.Range("T1")
    If ws.Name = ws1.Name Then cpy = True
        ws.Protect ("arjo1810")
Next ws

End Sub

In rood een poging om per tabblad te controleren of het het vlgnr >= 6 is, zo ja dan wordt de naam gewijzigd
 
thanks. En zou dit dan ook het toepassen/opheffen van de beveiliging invloed hebben? Dus dat dit daar ook alleen voor de sheets vanaf het 6e sheet geldt?
 
arjo,

het enige dat dit extra doet, is controleren of de geselecteerde sheet de zesde, zevende, etc is; zo ja dan wordt de naam van de sheet gewijzigd in wat er in cel C1 staat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan