• ベストアンサー

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を呼び出すことが できるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

標準モジュールを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)
回答No.3

こんにちは。こんな方法でも。 CommandButton の名前が「表示」だとすれば、Value プロパティーに True を渡せば、Click したことになりますよ。   Call WorkSheets("Sheet1").表示_Click() ・・・☆      ↓   WorkSheets("Sheet1").表示.Value = True

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

自分がもっぱら使うのはAccessで、Excel VBAはほとんど触らないのですが・・・(汗) Sheet1とUserForm1は、Excel上で別のオブジェクトになると思いますので、 その中で「Private」で宣言したものは、他のオブジェクトからは参照できない、 ということではないでしょうか。 だとしたら、Sheet1のCommandButton1のコードを以下のようにすれば、 参照可能になるのではないかと思います: <現状> Private Sub 表示_Click() <修正> Public Sub 表示_Click()