| 
    
     |  | テストしてみると、確かにエラーになりますね・・。 で、複数の範囲なのだから Areasプロパティを使ってループしたらどうか、
 と考えてやってみたのですが、それでもエラーになりました。
 結局、やぼったい感じになりますが、参照する数式を一つずつ分解していく
 ↓こんなコードだと、なんとかできましたが・・。
 
 Sub Test_NameVal()
 Dim WB As Workbook
 Dim NM As String
 Dim i As Integer
 Dim Ary As Variant, Ary2 As Variant
 
 Set WB = Workbooks("Book2.xls")
 NM = WB.Names("TEST").RefersTo
 NM = Right(NM, Len(NM) - 1)
 If InStr(1, NM, ",") > 0 Then
 Ary = Split(NM, ",")
 For i = LBound(Ary) To UBound(Ary)
 Ary2 = Split(Ary(i), "!")
 WB.Sheets(Ary2(0)).Range(Ary2(1)).Value = "ABC"
 Next i
 Erase Ary, Ary2
 Else
 Ary = Split(NM, "!")
 WB.Sheets(Ary(0)).Range(Ary(1)).Value = "ABC"
 Erase Ary
 End If
 WB.Activate: Set WB = Nothing
 End Sub
 
 |  |