人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAに関する質問です。VBA(マクロ)実行中に一時的にユーザの操作を許可してセルやセル範囲の選択を行い、その情報をまたマクロ側に渡して処理を続行するというのができるのでしょうか?

●質問者: isogaya
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:VBA エクセル セル マクロ ユーザ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SALINGER
●27ポイント

DoEventsを使ってExcelに処理を許可するコードを書いてみました。

最初空白セルを選択して実行すると、違うセルを選択するとそのセルに"ok"を挿入するマクロです。

改良次第でいろいろなことができると思います。

Sub Macro()
 Dim r As Range
 Set r = Selection
 
 While Selection.Value = ""
 DoEvents
 If Selection.Address <> r.Address Then
 Selection.Value = "ok"
 End If
 Wend
End Sub

http://q.hatena.ne.jp/


2 ● maakunh
●27ポイント

マクロ実行中に別のイベントが走ると、マクロが停止するようです。

(Do?LoopにはDoEventsを入れておく)

したがって、ユーザから見た際に処理が継続できているようにするには、

処理中は常にシート上に処理に必要な値を保持しておきつつ、

一時的なユーザ操作の後、処理を再スタートするボタンをクリックしてもらう、

という流れにする必要があると思います。

http://q.hatena.ne.jp/1196573903


3 ● Mook
●26ポイント

セルを選択するのが目的なら、InputBox を使用してはどうでしょうか。

Type:=8 が、セル選択です。

Sub Sample()
 Dim buf As Range
 Set buf = Application.InputBox(Prompt:="セルを選択してください。", Type:=8)
 MsgBox buf.Address(0, 0) & "の文字色は" & buf.Font.ColorIndex & "です"
End Sub

出典:実は奥が深いInputBox

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ