- ベストアンサー
VBAのCallステートメントについて
ExcelのSheet1にCommandButton1(表示)があります。 -------------------------------------------------- Private Sub 表示_Click() (DBより表示処理) End Sub -------------------------------------------------- UserForm1にCommandButton1(登録)があります。 -------------------------------------------------- Private Sub 登録_Click() (DBへの登録処理) UserForm1.Hide Call WorkSheets("Sheet1").表示_Click() ・・・☆ Exit Sub End Sub -------------------------------------------------- 表記のようなプログラムにしたところ、☆印のところで、 下記エラーが表示されてしまいます。 【エラー】--------------------------------------------------- 実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。 ------------------------------------------------------------- どのようにしたらCallステートメントで表示_Clickを呼び出すことが できるのでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
標準モジュールを1つ作って public sub DB_Syori (DBより表示処理) end sub Private Sub 表示_Click() '''(DBより表示処理) call DB_Syori End Sub Private Sub 登録_Click() (DBへの登録処理) UserForm1.Hide '''Call WorkSheets("Sheet1").表示_Click() ・・・☆ call DB_Syori Exit Sub End Sub こんな感じで (DBより表示処理) を外に移せば動きます。
その他の回答 (2)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。こんな方法でも。 CommandButton の名前が「表示」だとすれば、Value プロパティーに True を渡せば、Click したことになりますよ。 Call WorkSheets("Sheet1").表示_Click() ・・・☆ ↓ WorkSheets("Sheet1").表示.Value = True
- DexMachina
- ベストアンサー率73% (1287/1744)
自分がもっぱら使うのはAccessで、Excel VBAはほとんど触らないのですが・・・(汗) Sheet1とUserForm1は、Excel上で別のオブジェクトになると思いますので、 その中で「Private」で宣言したものは、他のオブジェクトからは参照できない、 ということではないでしょうか。 だとしたら、Sheet1のCommandButton1のコードを以下のようにすれば、 参照可能になるのではないかと思います: <現状> Private Sub 表示_Click() <修正> Public Sub 表示_Click()