Wk1、Wk2 Wk3などの名前のワークシートがあります。このExcel VBAコードは機能しません。数式で名前付き範囲を更新する必要があります
すべての名前付き範囲には、シートの名前で始まる名前があります。たとえばWk1シート上にはWk1TotalWeightという名前の範囲があります。
私は更新することシート上式で、私は名前付き範囲をしたいWkので始まる名前で新しいワークシートを追加するたびに、私は、各sheet.eg = Wk1TotalWeight * 2
にこれらの名前付き範囲を参照する数式を持っています親シートの名前から始めます。例:formaulaがWk2のWk1TotalWeight * 2である場合式をWk2TotalWeightに更新したい* 2
私はこのコードを試しましたが動作しません。
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
これは私のために働く。文字列 "Wk1"がC166:J170で見つかることは確かですか? – noumenal
"新しいワークシートを追加するたびに"。これはばかげた提案かもしれませんが、エディタからコードを実行しましたか? – noumenal
私が間違っていたことをHeres。私はシートWk1、Wk2とWk3を持っていたし、Wk4シートを加えた。私はWk3シートからWk4に数式をコピーしましたが、私はWk1からWk4に数式をコピーしました。私はWk3からWk4にコピーしたので、式にはWk3で始まるnmaed範囲が含まれていました。それがMAcroが機能しなかった理由です。私に考えさせてくれてありがとうnoumenal – frustrationmultiplied