- ベストアンサー
VBAで1度実行すると選択したセルに値を入力する方
VBAで1度マクロを実行すると、止めるまで選択したセルに文字を入れる方法を知りたいです。 今は、selection.value="あ" でやってるのですがこれだとセル選択後に毎回ボタン押さないと入力できないのですが 1度ボタンを押すと毎回押さなくても選択したところに値が入るようにしたいです(伝わって!)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Worksheet_SelectionChange を使用するというのはいかがでしょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 選択されたセルに文字を入力する Target.Value = "あ" End Sub https://excel-ubara.com/excelvba4/EXCEL206.html
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
>1度ボタンを押すと 其の後どれくらい時間が経っての話ですか。 ・VBAを使わなくても、操作のコピー貼り付けで済むのでは。 ・再度そのシートを使うとして、そのシートを使う頻度(イベントはシート単位の設定が多いが) 自分でさえ設定したことを忘れるし、 他人も使うようなものの場合は、意思疎通がむつかしく、かえって混乱の元になりそう。 今回のイライラ経験で質問のことを言ってないか? === Application.EnableEventsプロパティを使用することになる。でも無効にするとシートのEvents全体が無効になる。 ・無効化 有効のセル範囲を限定する方法がある。Intersectを使う。 ・無効化・有効化 セルのデータ情報などで左右する方法がある。 その他有効な方法がない。ボタンなどを設けて、発動する・発動を停止する方法は あるが大げさ。 ーーー 他に、クリップボードに張り付けて、その後、貼り付けに使う方法がある。 でも珍しい方法だし、手操作と変わらない。 Public Sub SetCB() strCb = InputBox("張り付ける語句を入力") 'クリップボードに,strCbをの語句を貼り付ける '文字化け対策のためTextBoxを使用 With CreateObject("Forms.TextBox.1") .MultiLine = True '複数行入力可 .Text = strCb '張り付ける文字語句 .selstart = 0 .sellength = .textlength .Copy End With End Sub を実行して、 セル選択をしてーCTRL+V 。 張り付けは何箇所でも可能。他シートでも可能。 ワードやメモ帳にも可能。 strCbをSelectionで一般化が可能。
- kon555
- ベストアンサー率51% (1844/3562)
個人的にはあまりオススメしませんが、Worksheet_SelectionChangeイベントを使用すれば可能です。 https://vba-create.jp/vba-event-selectionchange/?amp=1 ただシンプルに実装すると、延々とクリックしたセルに入力し続けてしまいます。 回避するにはどこかに判定用セルを作り、そこが特定の値なら入力、というようにIFで判定をさせる必要があります。 あとはそのセルを操作するためのマクロを別途作成すれば、開始・終了をコントロールできます。