秘密基地、どこに作った?

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

A 回答 (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より表示処理)
を外に移せば動きます。
    • good
    • 0

こんにちは。

こんな方法でも。

CommandButton の名前が「表示」だとすれば、Value プロパティーに
True を渡せば、Click したことになりますよ。

  Call WorkSheets("Sheet1").表示_Click() ・・・☆
     ↓
  WorkSheets("Sheet1").表示.Value = True
    • good
    • 1

自分がもっぱら使うのはAccessで、Excel VBAはほとんど触らないのですが・・・(汗)



Sheet1とUserForm1は、Excel上で別のオブジェクトになると思いますので、
その中で「Private」で宣言したものは、他のオブジェクトからは参照できない、
ということではないでしょうか。

だとしたら、Sheet1のCommandButton1のコードを以下のようにすれば、
参照可能になるのではないかと思います:
<現状>
Private Sub 表示_Click()
<修正>
Public Sub 表示_Click()
    • good
    • 0

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

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


おすすめ情報