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

formule vervangen in 200 tabbladen

Status
Niet open voor verdere reacties.

bascas

Gebruiker
Lid geworden
18 mei 2006
Berichten
446
Hallo,

Ik wil graag eenmalig deze formule
Code:
=HYPERLINK("Main!F3";"Main")
vervangen door
Code:
=HYPERLINK("Main!C3";"Main")
De formule staat op 200 tabbladen op G4.

Is hier een scriptje voor? Waarschijnlijk heb ik de verkeerde zoekwoorden gebruikt, want ik kan niets op het forum vinden.

groeten Bas
 
Selecteer alle tabbladen en zet in 1 tabblad de juiste formule en alle tabbladen worden aangepast.
 
Code:
Sub vervang()
Dim Sh As Worksheet
For Each Sh In Sheets
    f = Sh.Range("G4").Formula
    f = Replace(f, "Main!F3", "Main!C3")
    Sh.Range("G4").Formula = f
Next
End Sub
 
Popipipo, bedankt voor je antwoord. Het aanpassen lukt, maar hij blijft toch naar F3 gaan, ondanks dar er C3 staat. Als ik de cel ernaast selecteer, en de cursor op de link zet, geeft excel het pad aan waar de link heen gaat, daar staat ook nog steeds F3. Rara hoe kan dit?

groet Bas
 
@Sylvester-ponte: Ik heb jou code geprobeerd, maar krijg een foutmelding: Fout 1004.
Heb je code onderaan gezet, en op F5 gedrukt
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Exit Sub
If Target.Count = 1 Then
If Not Intersect(Target, Range("E3")) Is Nothing And Len(Target) >= 8 Then
    For Each ws In Worksheets
        If Not IsError(ws.[C6]) Then
            If Right(ws.[C6], 8) = Right(Target, 8) Then ws.Select
        End If
    Next
End If
    If Target.Column = 1 And Target <> "" Then
        Sheets("999").Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = Target
        Sheets(Sheets.Count).Unprotect "bascas"

        Sheets(Sheets.Count).Range("C3").Value = ActiveSheet.Name
        Sheets("Main").Range(Target.Address).Offset(0, 5) = "=" & Target & "!$D$46"
        Sheets("Main").Range(Target.Address).Offset(0, 6) = "=" & Target & "!$I$46"
        Sheets("Main").Range(Target.Address).Offset(0, 7) = "=" & Target & "!$N$46"
        Sheets("Main").Range(Target.Address).Offset(0, 8) = "=" & Target & "!$S$46"
        Sheets("Main").Range(Target.Address).Offset(0, 9) = "=" & Target & "!$T$46"
        Sheets("Main").Range("D" & Target.Row).Formula = "=HYPERLINK(""" & Target & "!A1" & """,""" & Target & """)"
    ElseIf Not Intersect(Target, Range("F3")) Is Nothing And Target <> "" Then
        Set knr = Range("E8:E" & Rows.Count).Find(Target, , xlValues, xlWhole)
        If Not knr Is Nothing Then Worksheets(knr.Offset(0, -1).Text).Activate
    ElseIf Not Intersect(Target, Range("E4")) Is Nothing And Target <> "" Then
        Application.Goto Sheets(CStr(Target.Value)).Range("A1")
    ElseIf Not Intersect(Target, Range("E5")) Is Nothing And Target <> "" Then
        Set knr = Range("B9:B" & Rows.Count).Find(Target, , xlValues, xlWhole)
        If Not knr Is Nothing Then Worksheets(knr.Offset(0, -1).Text).Activate
    End If
    
End If
Sheets(Sheets.Count).Protect "bascas"

End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c
   For Each c In Sheets("Main").Range("D8:D250")
    If c > 0 Then
      c.Hyperlinks.Add Anchor:=c, Address:="", SubAddress:="'" & c.Value & "'!A1", TextToDisplay:=" " & c.Value
    End If
  Next
End Sub


Sub vervang()
Dim Sh As Worksheet
For Each Sh In Sheets
    f = Sh.Range("G4").Formula
    f = Replace(f, "Main!F3", "Main!C3")
    Sh.Range("G4").Formula = f
Next
End Sub
 
Laatst bewerkt door een moderator:
Sorry, maar begrijp niet wat je bedoelt. Ik ben geen kei in VBA.
 
Sylvester,

Ik denk dat de foutmelding komt doordat 'f ' niet is gedefiniëerd.

En: bedoel je niet F8 ?

Of:
Code:
Sub vervang()
Dim sh As Worksheet
 For Each sh In Sheets
  sh.Range("G4").Formula = Replace(sh.Range("G4").Formula, "Main!F3", "Main!C3")
 Next
End Sub
 
@ Harry
Als je VB-Editor geopend is en je plaatst je cursor in een willekeurige lijn v/d macro wordt door het drukken op F5 de macro uitgevoerd vanaf de 1ste lijn.
 
He, da’s vreemd, bij mij gebeurd er niets.
F5 doet helemaal niets in de VB-Editor, behalve als de cursor achter 'Option Explicit' staat, dan komt het schermpje tevoorschijn met de macro-namen, om die te kunnen uitvoeren.
De macro wordt pas uitgevoerd op de eerste lijn door het drukken op F8 om zo de code te kunnen doorlopen.

Of zijn er nog geheimen bij?
 
Harry, je cursor moet wel in de macro staan, ergens tussen Sub en End Sub.
Het is eigenlijk niet meer dan een shortcut voor het groene pijltje (macro starten) in de balk van je VBA-scherm.
Ik gebruik deze regelmatig om een loop te checken, je plaatst dan een onderbrekingspunt bij Next en drukt op F5. De macro loopt dan tot de eerste loop en je kan dan op je werkblad de evolutie bekijken, druk je nogmaals op F5 doorloopt hij de 2de loop enz...
Of voor het controleren van de waarde van variabelen in het venster Lokale variabelen, ook weer door met onderbrekingspunten te werken.
 
Harry, je cursor moet wel in de macro staan, ergens tussen Sub en End Sub.

Dat had ik Rudi,

Maar ik wist niet dat de code werd uitgevoerd, opdat ik niets merkbaars zag in de editor.
Pas in het bestand zag ik (door even de editor te minimaliseren) dat de code werd uitgevoerd.

Bedankt voor je hulp.
 
Heren, het stukje VBA werkt nog niet helemaal. Ik heb het geplakt onder mijn code, zet de cursor erin, start de macro (F5), zie dat de formule is aangepast op elk tabblad, maar als ik daadwerkelijk op de link klik, gaat hij toch naar F3. Als de cursor in de buurt komt van de hyperlink verschijnt er een gele balk met het pad waarnaar de link verschijnt, daar blijft aan het einde staan: file://localhost/Users/achternaam/voornaam/Personeelskorting help.xls - 'Main'!F3.

Heb nog verder gezocht. Als je de hyperlink wil bewerken komt er een scherm en daar blijft die F3 in staan. Voor de schermafbeelding klik hier

Wellicht dat er nu een lichtje bij jullie opgaat:)

Groeten Bas
 
Laatst bewerkt:
Of:
Code:
Sub hsv()
Dim sh As Worksheet
 For Each sh In Sheets
   'If sh.Name <> "Main" Then
  sh.Range("G4").Hyperlinks.Add Anchor:=sh.Range("G4"), Address:="localhost/Users/achternaam/voornaam/Personeelskorting help.xls", SubAddress:="Main!C3", TextToDisplay:="Main!C3"
    'End If
 Next sh
End Sub
 
Deze misschien ?
Code:
Sub HyperlinksOmzetten()
Dim HL As Hyperlink
    For Each sh In Sheets
        sh.Range("G4").Hyperlinks(1).SubAddress = Left(sh.Range("G4").Hyperlinks(1).SubAddress, _
            Len(sh.Range("G4").Hyperlinks(1).SubAddress) - 2) & "C3"
   Next
End Sub
 
Heren, het is gelukt, mede door jullie hulp.
Hartelijk bedankt.

Gr Bas
 
Misschien voor het archief de oplossing melden die je gebruikt hebt, zodat eventuele andere zoekenden er ook iets van kunnen oppikken. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan