2016-04-18 3 views
1

Ich habe Arbeitsblatt benannt als Wk1, Wk2 Wk3 usw.Dieser Excel-VBA-Code funktioniert nicht. Ich brauche die benannten Bereiche in Formeln

Alle genannten Bereiche auf jedem Blatt haben Namen zu aktualisieren, die mit dem Namen des Blattes beginnen. ZB auf Wk1-Blatt habe ich einen benannten Bereich namens Wk1TotalWeight.

ich habe Formeln, die diese benannte Bereiche auf jeder sheet.eg Referenz = Wk1TotalWeight * 2

Jedes Mal, wenn ich ein neues Arbeitsblatt hinzufügen, mit einem Namen mit Wk beginnen möchte ich die benannten Bereiche in den Formeln auf diesem Blatt zu aktualisieren so dass sie mit dem Namen ihres Elternblatts beginnen. zB wenn eine Formula = Wk1TotalWeight * 2 auf dem Blatt Wk2 ist Ich möchte, dass die Formel auf = Wk2TotalWeight aktualisiert wird * 2

Ich habe diesen Code ausprobiert, aber es funktioniert nicht.

Sub ChangeWkNamesInFormulasOnNewWksheet() 

    Dim ws As Worksheet 
    Dim r As Range 

    For Each ws In Worksheets 
     If InStr(1, ws.Name, "Wk", 1) > 0 Then 
      For Each r In ws.Range("C118:I119") 
       r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) 
      Next r 

      For Each r In ws.Range("C166:J170") 
       r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name) 
      Next r 


     End If 
    Next ws 

    MsgBox "Done" 
    End Sub 
+0

Das funktioniert für mich. Sind Sie sicher, dass die Zeichenfolge "Wk1" in C166: J170 gefunden wird? – noumenal

+0

"Immer wenn ich ein neues Arbeitsblatt hinzufüge". Dies könnte ein alberner Vorschlag sein, aber haben Sie den Code vom Editor ausgeführt? – noumenal

+1

Heres, was ich falsch gemacht habe. Ich hatte Blätter Wk1, Wk2 und Wk3 und fügte dann ein Wk4-Blatt hinzu. Ich habe die Formeln vom Wk3-Blatt nach Wk4 kopiert, aber ich habe die Formeln von Wk1 nach Wk4 kopiert. Da ich von Wk3 nach Wk4 kopiert habe, enthielten die Formeln Nmaed-Bereiche beginnend mit Wk3. Deshalb hat der MAcro nicht funktioniert. Danke Noumenal für mich zu denken – frustrationmultiplied

Antwort

2

Heres, was ich falsch mache.

Ich hatte Blätter Wk1, Wk2 und Wk3 und fügte dann ein Wk4 Blatt hinzu.

Ich habe die Formeln aus dem Wk3-Blatt nach Wk4 kopiert, aber ich hätte die Formeln von Wk1 nach Wk4 kopieren sollen.

Da ich von Wk3 nach Wk4 kopiert die Formeln enthalten benannte Bereiche beginnend mit Wk3. Mit anderen Worten, die Zeichenfolge "Wk1" war in den Bereichen nicht vorhanden. Diese benannten Bereiche müssen mit Wk1 beginnen, damit der Code funktioniert.

Aus diesem Grund hat der Code nicht funktioniert. Danke an noumenal in den Kommentaren im obigen Post

0

warum Sie nicht verwenden Sie einfach r.Formula = Replace(r.Formula, "Wk1", ws.Name)

+0

Ill versuchen Sie es später und sehen, funktioniert es. Siehe die Kommentare in dem obigen Post für das, was ich falsch gemacht habe – frustrationmultiplied

Verwandte Themen