次の方法で共有

エクセルのVBAで作成したフォームから、シートの選択をしたいのですが

Anonymous
2012-11-08T04:01:08+00:00

エクセルのVBAで作成したフォームにコマンドボタンを配置しました。このボタンをクリックすると、シートを選択するプログラムは、どのように書けば良いのでしょうか。例えば、コマンドボタンをクリックして、sheets1を選択して、アクチブシートにすることです。

フォームに、以下の記術をしても、選択できません。そして、プログラムが終了しません。

Private Sub CommandButton1_Click()

Worksheets("sheets1").Visible = True

Worksheets("sheets1").Select

Range("D4").Select

End Sub

なを、このプログラムを記述したファームは、モーダルをfalseに設定しています。

また、sheets2に、コマンドボタンを配置して、このプログラムを記述すると、

sheet1は、選択されます。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません
質問作成者が受け入れた回答
  1. Anonymous
    2012-11-08T04:36:38+00:00

    コマンドボタンはどこに配置されたんでしょうか?(ユーザーフォームに配置と思いますが念のため)

    提示のコードでもちゃんとアクティブになります。

    また、終わらないと書かれていますが、どういう意味でしょうか?

    モードレスになっていますので、コマンドボタンを押してもユーザーフォームが消えないのは正常な動きです。

    提示されたコードでちょっと気になるところを指摘させていただくと、

    1.シート名がSheets1 になってますが、Sheet1ではないのか?

    2.Range("D4").Select はActiveSheetが対象になっていますので、この場合は問題ないのですが、きちんとワークシートから指定すべきです。

    3.シートが非表示に変えていなければ、Visibleにする必要はありません。

    4.ワークシートはSelectではなく Activateの方が感覚的に馴染むと思います。

    次のように試してみてください。

    1.新規ブックでユーザーフォームを一つ入れ、そこにコマンドボタンを一つ配置

    2.ユーザーフォームのコードに

    Private Sub CommandButton1_Click()

    With Worksheets("sheet1")

      .Visible = True

      .Activate

      .Range("D4").Select

    End With

    End Sub

    3.標準モジュールに

    Sub main()

    UserForm1.Show (False)

    End Sub

    として、mainを実行

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-11-16T01:58:54+00:00

    y sakuda さん、いつもアドバイスありがとうございます。

    小田 昭 さん、こんにちは。

    マイクロソフト コミュニティをご利用いただきありがとうございます。

    同様の質問でこちらのスレッドを見られた方にも参考となるよう [ 回答としてマーク ] をさせていただきました。

    また何かありましたらマイクロソフト コミュニティをご利用ください。

    0 件のコメント コメントはありません