セルの値からシート名取得する場合、.Value省略不可
備忘録です。
CellsやRangeの場合、Valueを省略してコードを書く機会が多く、
そうすると、うまく動かなくて困ってしまうケースがあります。
————–
①マクロ実行対象とするシート名は可変にしたい。
②マクロ実行対象とするシート名はユーザーに決めさせたい=ワークシート内に入力させる。
————–
上記のような処理があったのですが、どうしてもうまくいかない。
調べた結果、いつもValueを省略している事が問題だったと思い出します。
Public Sub sample() ’■セルA1に「xxx」と記載がある、且つ シート名「xxx」が存在する場合 Set ws = Worksheets(Range("A1")) '型が一致しません Set ws = Worksheets(Cells(1,1)) '型が一致しません ’■セルA1に「xxx」と記載がある、且つ シート名「xxx」が存在する場合 Set ws = Worksheets(Range("A1").Value) '正常に選択される Set ws = Worksheets(Cells(1,1).Value) '正常に選択される End Sub
注意点
- セルの値が数値の場合は、インデックス番号とみなされるため、
想定した結果とは異なる可能性があります。 - エラーの細かい内容はこちらの記事参照。
関連記事
- Workbooks.Openと同時に変数wsに格納する
- Worksheet変数にSetする際「エラー13型が一致しません」の対処方法
- ワークシート名を変数にSetし、短い名前で利用する【マクロ初級者必読】
コメント