プロが教えるわが家の防犯対策術!

MS-Excel2000のマクロにおいて、
UserForm1.Showでコントロールツールボックスを表示させた状態で
セルの選択位置をマウスで移動させたいと思っておりますが、
コントロールツールボックスがあるとセルを選択位置移動ができません。
(もちろん、コントロールツールボックスを消せば
セルの選択位置移動はできます。)
どのような指示にすればできますでしょうか?
よろしくご教授願います。

やりたい事は、
はんこ(スタンプ)みたいにコントロールツールボックスの
コマンドボタンを押したら文字がアクティブセルに表示するようにしたい。
ただし、コントロールツールボックスを表示したままで
アクティブセルはマウスで任意の位置を選択できるようにする。
ってことです。

A 回答 (1件)

>UserForm1.Showでコントロールツールボックスを表示させた状態で


>セルの選択位置をマウスで移動させたいと思っておりますが、・・・

>やりたい事は、はんこ(スタンプ)みたいにコントロールツールボックスの
>コマンドボタンを押したら文字がアクティブセルに表示するようにしたい。
>ただし、コントロールツールボックスを表示したままで
>アクティブセルはマウスで任意の位置を選択できるようにする。 ってことです。

やりたい事については、なんとなく分かるような気がしますが、コントロールツールボックスのコマンドボタンを押すことで(キッカケで)アクティブセルに文字を表示することはできないでしょう。(こういう意味?)

コントロールツールボックスはユーザーフォームを作成する時に使うもので、質問のようなことはもっと簡単にできます。普通の使い方のように思いますが・・・
ユーザーフォームを表示した状態でのセル選択はExcel2000なので簡単にできます。(モーダレスでのユーザーフォームの表示)
InputBoxメソッド、他のコントロールなどがありますが、モーダレスでユーザーフォームを表示するのがいちばん簡単でしょう。(モーダル:そのフォームにのみ応答可能な状態。モーダレスだと、そのフォームに束縛されていない状態で、セルの選択ができるわけです)


例として、ユーザーフォーム(UserForm1)上に
テキストボックス(TextBox1)とコマンドボタン(CommandButton1)を配置します。
文字が決まっているならTextBox1のプロパティTextにその文字をセットしておきます。

ユーザーフォーム上に配置したコマンドボタンをダブルクリックして、コードウインドウでコードを編集して
Private Sub CommandButton1_Click()
  Dim rg As Range 'セル

  For Each rg In Selection
    rg = TextBox1.Text
  Next
End Sub

とします。For Eachで複数セル範囲を選択した時も動くようにしてあります。

Sheet1でコントロールツールボックスからコマンドボタン(CommandButton1)を1つシートに貼り付けます。
このコマンドボタンをダブルクリックして、Sheet1のコードウインドウで、コードを編集して
Private Sub CommandButton1_Click()
  UserForm1.Show vbModeless
End Sub

とします。

Sheet1に戻り、
1.デザインモードを解除
2.シート上のコマンドボタンをクリックでユーザーフォームが表示される。
3.この状態は、セルの選択、複数セルの選択、Shiftキー・Ctrlキーをつかってのセル選択、シートの切り替えができます。


質問を自己流に解釈してしまっているかもしれません。
要旨は、ユーザーフォームをモーダレスで表示して、ユーザーフォーム上のコマンドボタンで選択したセルに表示するようにしています。ご参考に。
    • good
    • 0
この回答へのお礼

nishi6さん、わかりにくい私の質問の意図を把握していただき、
ありがとうございます。今回の回答で満点です。
vbModelessってたった一言だったんですね。
本当にありがとうございます。

お礼日時:2002/05/28 06:50

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