Blad 1 naam geven van cel A1 waar een formule in staat

Status
Niet open voor verdere reacties.

oliif

Gebruiker
Lid geworden
14 jun 2016
Berichten
10
Beste vba-specialisten,

Ik heb een document gemaakt met daarin een werkplanning. In cel A1 staat de iso weeknummer formule, deze wordt weergegeven als : "Week: 12".
Graag zou ik dit als Blad naam willen. Ik kan wel het blad naam aanpassen als er geen formule in staat in vba, maar met formule krijg ik niet voor elkaar.

Is er iemand die een tip heeft?

Met vriendelijke groet,

Denise
 
Laat eens zien hoe je het zonder formule doet.
 
Een bladnaam mag geen : bevatten. Haal die dus achter Week weg en zet dan deze code achter het werkblad:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$2" Then
        ActiveSheet.Name = Range("A1").Value
    End If
End Sub
De naam van het blad wordt dan aangepast aan de inhoud van A1 als je B2 wijzigt.
 
@edmoor, Ik zou er nog wel de foutafhandeling tussen plaatsen mocht het blad al bestaan.
 
Inderdaad:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$2" Then
        If Not Evaluate("ISREF('" & Range("A1") & "'!A1)") Then
            ActiveSheet.Name = Range("A1").Value
        Else
            MsgBox "Blad " & Range("A1") & " Bestaat al.", vbCritical
        End If
    End If
End Sub
 
Jullie zijn geweldig! Hij doet het.

Nu heb ik nog een gekke vraag, als ik meerdere werkbladen heb, kan het dan als ik het eerste werkblad wijzig dat de rest automatisch meegaan?
 
Dat moet je even beter uitleggen denk ik.
 
Het tweede tabblad wat er bij zit is het zelfde schema alleen een week later, deze zou ik graag willen laten mee veranderen zodra ik het eerste tabblad verander.

heb een bestandje bijgevoegd als voorbeeld.
Bekijk bijlage voorbeeld.xlsm
 
Dat kan wel maar dat zou ik dan niet via het Change event doen. Doe dan iets als dit achter een knopje:
Code:
Sub NameSheets()
    Dim sht As Worksheet
    For Each sht In ThisWorkbook.Sheets
        If Not Evaluate("ISREF('" & sht.Range("A1") & "'!A1)") Then
            sht.Name = sht.Range("A1").Value
        End If
    Next sht
End Sub
 
Met een iets ander code dan edmore waarbij je de : wel in A1 mag laten staan.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c00 As String
If Target.Address = "$B$2" Then
    c00 = Replace([A1], ":", "")
    If IsError(Evaluate("'" & c00 & "'!A1")) Then Sh.Name = c00 Else MsgBox "Bladnaam " & c00 & " bestaat al"
End If
End Sub

Als het een eenmalige actie is om de tabnamen te hernoemen kan je zoiets gebruiken

Code:
Sub VenA()
Dim sh, c00
For Each sh In Sheets
    c00 = Replace(sh.[A1], ":", "")
    If IsError(Evaluate("'" & c00 & "'!A1")) Then sh.Name = c00
Next sh
End Sub
 
Edmoor, Wat bedoelt u met achter het knopje: ?

Als ik die laatste code in vba achter de werkbladen zet pakt hij ze niet
 
Als het een eenmalige actie is dan kan je een knopje op het eerste werkblad maken met de code die ik liet zien erachter. Die wordt door een andere gebeurtenis geactiveerd dus kan je niet zomaar achter een blad zetten en verwachten dat deze dan werkt. Verdiep je eens in Events. Een korte uitleg:
http://www.excel-easy.com/vba/events.html

Bij deze mag je ook de dubbele punt achter Week laten staan:
Code:
Sub NameSheets()
    Dim sht As Worksheet
    Dim nwn As String
    For Each sht In ThisWorkbook.Sheets
        nwn = Replace(sht.Range("A1").Value, ":", "")
        If Not Evaluate("ISREF('" & nwn & "'!A1)") Then
            sht.Name = nwn
        End If
    Next sht
End Sub

Maar die van VenA werken ook prima. Ieder heeft zo z'n eigen schrijfwijze :)
En zeg maar jij hoor :)
 
Laatst bewerkt:
Edmoor en VenA heel erg bedankt voor jullie uitleg, ik ga hier nog even mee stoeien. Ben er nog niet zo lang mee bezig dus sommige dingen zijn nog een beetje chinees voor mij :o
 
Maar nummer 21 is in VBA toch heel wat anders dan bij de Chinees.
En dan is er Helpmij... :D
 
Haha, ja daar heb je gelijk in, het is maar goed dat er Helpmij is :D vele male beter dan de chinees:P
Het ging sneller dan verwacht maar het is gelukt!

Mijn dank is groot :-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan