プロが教えるわが家の防犯対策術!

Excel VBAに於いて
同BOOKのSheet1から、Sheet2の文字列を変数に入れよとするとエラーになります。
何故でしょうか。
また、その対処法を、御教示ください。

Dim objWBK As Workbook
Dim objSH As Worksheet
Set objWBK = ThisWorkbook
Set objSH = objWBK.Sheet2

Dim cnsFILENAME As String

cnsFILENAME = objSH.Range("a4")     ← ここで、「オブジェクトは、このプロジェクトでサポートされていません。」と、エラーメッセージが出る。


Sheet2.Range(”A4”)には、文字列を入れてある。


以上、よろしくお願いします。

「VBA 別シートのセルから、文字列を参照」の質問画像

A 回答 (3件)

こんにちは。



Rangeオブジェクトは値を参照するときにはシートがActiveになっていないと
エラーになった記憶があります。

エラーの前に
objSH.Activate

を入れるとどうですか?
はずしてたらすみません。

#もし「ビンゴ」でしたら、Cellsオブジェクトの方が色々勝手が良いです。
objSH.cells(4,2)
    • good
    • 0
この回答へのお礼

連絡が遅れて済みません。

「ビンゴ」でした。
シートを切り替える度に、Activateと指定しないと行けなかったようです。
(面倒ですが・・・)

お礼日時:2010/12/10 23:49

多分 問題なく変数に値を渡せるはずです。



きっと、それ以外のところで記述が間違ってると思いますよ。

まさかと思いますが、Range("")内のセル名(アドレス)に全角使ってませんよね?

Range("A4")

とか・・・

あと、基本的には

cnsFILENAME = objSH.Range("a4").Value と記述し

通貨型や日付型を数値型として扱うっていうなら

cnsFILENAME = objSH.Range("a4").Value2

にしておいた方が、明示的になるので私も推奨します。
    • good
    • 0

いや、エラー出てるのは


>Set objSH = objWBK.Sheet2
こっちでしょ。
Set objSH = objWBK.Sheets("Sheet2")とかならわかるんですけど。

#Setって書いてないから確かに文字列入るんだけど、個人的にはあまりデフォルトプロパティとか暗黙の型変換って好きじゃないので、

cnsFILENAME = ObjSH.Range("a4").value2
あたりまで書きたがると思う
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています