次のコードで2.は動くのですが、1.が動きません。「オブジェクトが必要です。」エラーになります。
何が違うんでしょうか? 教えてください。よろしくお願いします。
Function hoge(aa As Range)
aa.Value = "Hello!!"
End Function
Sub Worksheet_Activate()
Dim a As Range
Set a = ThisWorkbook.Worksheets("Sheet1").Range("G10")
hoge (a) ' ←1.これだとエラーになる
' hoge (ThisWorkbook.Worksheets("Sheet1").Range("G10")) ' 2.こちらはOK
End Sub
No.5ベストアンサー
- 回答日時:
Helpより
Call ステートメント
プロシージャを呼び出すとき、キーワード Call は省略できます。キーワード Call を使って、引数が必要なプロシージャを呼び出す場合は、引数リスト (引数 argumentlist) をかっこで囲む必要があります。キーワード Call を省略するときは、引数リストを囲むかっこも省略しなければなりません。Call 構文で組み込み関数またはユーザー定義型関数を呼び出す場合、その関数の戻り値を取得することはできません。
つまり、
hoge a ○
Call hoge (a) ○
hoge (a) ×
Helpより
Call ステートメントの使用例
次の例は、Call ステートメントが Private Sub プロシージャ、組み込み関数、ダイナミックリンク ライブラリ (DLL) プロシージャ、および Macintosh のコード リソース プロシージャに対して、どのように制御を渡すかを説明します。DLL は、Macintosh では使用できません。
' Private Sub プロシージャを呼び出します。
Call PrintToDebugWindow("Hello World")
' 上記のステートメントは、次の Private Sub プロシージャに制御を渡します。
Sub PrintToDebugWindow(AnyString)
Debug.Print AnyString ' イミディエイト ウィンドウに表示します。
End Sub
' 組み込み関数を呼び出します。関数の戻り値は、破棄されます。
Call Shell(AppName, 1) ' AppName には、実行可能ファイルのパスが格納されています。
' Microsoft Windows の DLL プロシージャを呼び出します。Declare ステートメントは、クラス モジュールではプライベートにする必要がありますが、標準 モジュールではプライベートにする必要はありません。
Private Declare Sub MessageBeep Lib "User" (ByVal N As Integer)
Sub CallMyDll()
Call MessageBeep(0) ' Windows DLL プロシージャの呼び出し。
MessageBeep 0 ' キーワード Call を省略した呼び出し。
End Sub
No.4
- 回答日時:
Call hoge(a) 'これはOK
hoge (ThisWorkbook.Worksheets("Sheet1").Range("G10"))
ですが、VBAのエディタ上見てもらえれば、「hoge」と次の括弧の間にスペースがあるのが分かると思います。
hoge ThisWorkbook.Worksheets("Sheet1").Range("G10")
のように括弧を除いてもエラーになりません。
なかなか微妙な仕様かもしれません。
No.3
- 回答日時:
『エクセルvba (ByVal Target As Range)について』
過去の質問も参考になるかと思います。
No.2
- 回答日時:
参考で・・・。
エラーでは「・・・が必要」とありますから、
普通に考えて何かが不足しているというのはどうか。
ヘルプでも『オブジェクト修飾子を明示的に・・・』とある。
それと、
SUBと違ってFUNCTIONを使うので戻り値があるのは基本形。
aだけに着目しているが、
r=hoge (a)
にすると状況が変わったので参考。
「a」と「ThisWorkbook.Worksheets("Sheet1").Range("G10")」、
http://members.jcom.home.ne.jp/rex-uchida/vba060 …
使い方が違うのかもしれない。
No.1
- 回答日時:
Function hoge(aa As Range)
aa.Value = "Hello!!"
End Function
Sub test03()
Dim aa As Range
Set aa = Worksheets("Sheet1").Range("b1")
hoge aa
End Sub
で動きましたよ。
Worksheets("Sheet1").が無いと、どのシートのRangeかきめられないのでは。Activesheetというような限定でも良いと思う。
私はこれで苦労しているので、限定が無いため、とそう思ったが、
その後やってみるとWorksheets("Sheet1"). が無くても動いた。
()をつけるとエラーになった。
余り意識したことがなかったが
http://www.gizcollabo.jp/vbtomo/boards/vbchoshoq …
でも言及していることかな。
Call hoge(cc)
とするとOKです。
回答、ありがとうございます。
1,2,3がダメで、3,4,5,6,7がOKというのが理由が分かりませんが、プログラムはなんとか
動くようになりました。
1. hoge (a)
2. call hoge a
3. hoge (Range("G10"))
4. hoge a
5. hoge Range("G10")
6. call hoge (a)
7. hoge (ThisWorkbook.Worksheets("Sheet1").Range("G10"))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
高校三年生の合唱祭で何を歌いましたか?
大人になると大人数で合唱する機会ってないですよね。 思い出すと、高校三年生の合唱祭が最後でした。 そこで、みんなの思い出の合唱曲を知りたい!
-
(初心者です)VBAについて。「実行時エラー424、オブジェクトが必要です」について
Visual Basic(VBA)
-
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
-
4
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
5
セルのコピーで「オブジェクトが必要です。」
Visual Basic(VBA)
-
6
UserForm1.Showでエラーになります。
工学
-
7
VBAのエラーについて、”実行時エラー424オブジェクトが必要です”
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFCのキャプション変更
-
ボタンをクリックすると数が増...
-
同じ型【ハイフンと数字】だけ...
-
Linux バイナリ実行できない "...
-
Excel VBA の ChangeFileAccess
-
Vb.netのグローバル変数の宣言...
-
【Jquery】changeイベント毎にa...
-
関数でy=g(x)のgとは何の略です...
-
GASでundefinedエラーが出ます
-
C言語の質問です HTMLでこのよ...
-
gas スプレッドシートがアクテ...
-
任意の座標をクリックさせるには
-
Latexに関する質問です。
-
onClickイベントの変更方法
-
javascriptでCSVを呼出しvlookup
-
同じIDで定義した要素の配列を...
-
ActiveXobjectが作成できない
-
HTML:Tableタグに対し、JavaScr...
-
jspからjavascriptの変数引継ぎ
-
html javascript リンク先アド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux バイナリ実行できない "...
-
【正規表現】【javascript】CR...
-
ASP+アクセスでのSQLコメントに...
-
Boolean型配列中のTrueの有無を...
-
Excel VBA の ChangeFileAccess
-
ボタンをクリックすると数が増...
-
static constメンバ変数(配列)...
-
HTTPSのとき":"が"%3A"ではなく...
-
Vb.netのグローバル変数の宣言...
-
【Jquery】changeイベント毎にa...
-
C# .NET DataGridView の行を追...
-
javascriptで文字挿入でtoggle...
-
「オブジェクトが必要です。」...
-
引数付きコンストラクタでコン...
-
onclick指定関数の引数へローカ...
-
-(ハイフン)_(アンダーバー)の...
-
Inherits EventArgsの初期化
-
こんなこともJavaScriptで可能...
-
ifreamをリロードしたい
-
複数ファイルで使うグローバル...
おすすめ情報