Avatar billede jath08ac Forsker
19. januar 2018 - 11:46 Der er 4 kommentarer og
1 løsning

Ændre tekst i flere faner med specifik navn + VBA

Hej,

Jeg har lavet følgende koder, som går ind og ændre den tekst der fremgår i en textbox i min userform i den angivet fane.

ReplaceCarriernb "Noter1", Me.cmbNavn.Value, Me.txtÆndre.Value

Mit problem er, at jeg har 6 faner der starter med Noter, altså Noter1, Noter2, Noter 3 osv., Antallet kan variere for gang til gang.

Er det muligt at lave en for next løkker, som kan køre alle de faner i gennem som starter med Noter, og ændre teksten - hvis ja, har I så en idé om hvordan koden skal se ud?

pft.
Avatar billede finb Ekspert
19. januar 2018 - 11:52 #1
til inspiration:
for each worksheet in worksheets
if worksheet.name = "Noter*" then et-eller-andet
next
Avatar billede jath08ac Forsker
19. januar 2018 - 14:19 #2
Jeg kan ikke få det helt til at fungerer.

Jeg har lavet følgende koder:

For Each Worksheet In Worksheets
       
            If Worksheet.Name = "Noter*" Then
                ReplaceCarriernb "Noter*", Me.cmbNavn.Value, Me.txtÆndre.Value
            End If
           
        Next

Mit problem er, at sheet navnet efter ReplaceCarriernb skal være præcist, f.eks. Noter1, Noter2 osv. Tænker at den skal tælle hvor mange faner der starter med Noter, og derefter tage værdien og bruge i stedet for *?
Avatar billede bak Forsker
20. januar 2018 - 14:03 #3
Du skal bare bruge order Like i stedet for =
For Each Worksheet In Worksheets
       
            If Worksheet.Name Like  "Noter*" Then
                ReplaceCarriernb "Noter*", Me.cmbNavn.Value, Me.txtÆndre.Value
            End If
           
Next
Avatar billede jath08ac Forsker
21. januar 2018 - 09:22 #4
Når jeg retter den til med Like, så får jeg fejl her;

Private Sub ReplaceCarriernb(SheetName As String, oldCarriernb As String, newCarriernb As String)


        Sheets(SheetName).Activate´==> Fejler her
       
        Cells.Replace What:=oldCarriernb, Replacement:=newCarriernb, LookAt _
        :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False


End Sub
Avatar billede Tegler Mester
21. januar 2018 - 22:38 #5
Jeg tror det fejler, fordi din funktion skal bruge det præcise arknavn:

Dim Sht as worksheet
For Each Sht In ThisWorkbook.Worksheets     
            If Sht.Name Like  "Noter*" Then
                ReplaceCarriernb Sht.Name, Me.cmbNavn.Value, Me.txtÆndre.Value
            End If         
Next
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester