• ベストアンサー

VBAで1度実行すると選択したセルに値を入力する方

VBAで1度マクロを実行すると、止めるまで選択したセルに文字を入れる方法を知りたいです。 今は、selection.value="あ" でやってるのですがこれだとセル選択後に毎回ボタン押さないと入力できないのですが 1度ボタンを押すと毎回押さなくても選択したところに値が入るようにしたいです(伝わって!)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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/17068)
回答No.3

>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
  • ベストアンサー率52% (1758/3375)
回答No.2

 個人的にはあまりオススメしませんが、Worksheet_SelectionChangeイベントを使用すれば可能です。 https://vba-create.jp/vba-event-selectionchange/?amp=1  ただシンプルに実装すると、延々とクリックしたセルに入力し続けてしまいます。  回避するにはどこかに判定用セルを作り、そこが特定の値なら入力、というようにIFで判定をさせる必要があります。  あとはそのセルを操作するためのマクロを別途作成すれば、開始・終了をコントロールできます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAで、セルの値をつなげて入力したいのですが・・・

    VBAで、セルの値をつなげて入力したいのですが・・・ エクセル2007を使用しています。 Ctrlキーで2つのセルを選択し、最初に選択したセルの値にスラッシュをつけて、 2番目に選択したセルの値をつなげ、再び1番目に選択したセルに代入したいと思っています。 例えば、A1セルに「佐藤」B1セルに「鈴木」と入力されており、 A1を選択し、Ctrlキーを押しながらB1セルを選択し、コマンドボタンを押すと A1セルに「佐藤 / 鈴木」と入力させたいと思っています。 選択するセルは、1番目も2番目も、変化します。 そこで、下記のようなマクロを書いてみたのですが、 「実行時エラー13 型が一致しません」というエラーが出ます。 Private Sub CommandButton7_Click() If Selection.Areas.Count <> 2 Then Exit Sub Dim a As Variant Dim b As Variant a = Selection.Areas(1) b = Selection.Areas(2) Selection.Areas(1) = a & "/" & b End Sub 変数の型が問題なのでしょうか? ちなみに Selection.Areas(1) = b とすると、2番目に選択した「鈴木」がA1に入力されます。 また、 Selection.Areas(1) = a & b としても同じエラーが出ます。 解決法があるなら、ご教授いただけませんでしょうか? よろしくお願いいたします。

  • VBAにて複数選択したセルの値に選択した値の追加

    いつもこちらではお世話になっております。 現在VBAにて機能実現において、つまずいております。 複数選択したセルの値の後ろに、プルダウンから選択した値を追加したいと考えております。 値は追加できるのですが、選択を開始したセルの値が他のセルにも反映されてしまうという状況です。 それぞれのセルの値にプルダウンから選んだ値を追加しようと思えば、どのような方法で行えばよいでしょうか? よろしければご教授お願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim a As Integer If Target.Address = "$B$1" Then Application.EnableEvents = False a = Cells(1, 2).Value Selection.Value = Selection.Value & a Cells(1, 2).Value = "" Application.EnableEvents = True End If End Sub 以下の画像は、実現したい画面のイメージと現在の状態です。

  • Excel VBA のセル内の選択テキストの読み書きは?

    Excel VBAで、選択されたセルではなくセル内の選択された部分のテキストの読み書きはできるのでしょうか? つまり、選択されたセルのテキストは Selection.Value を使って OldText = Selection.Value Selection.Value = "NewText" と読み書きができますが、セル内で選択されたテキストについてのインターフェイスはあるんでしょうか?

  • Excel、VBA、選択されているセルに値の追加

    最近仕事の事務作業を軽減させるためVBAの勉強を始めました。 現在VBAにて機能実現においてつまずいております。 ご教授いただけると幸いです。 実現したい機能といたしましては、Ctrlとクリックで選択された位置の離れている複数のセルに対し、 リストから参照した値を、選択されているセルの内容に追加したいと考えております。 現在最初に選択したセルの内容が、以降選択したセルに反映されてしまう形になってしまっています。 それぞれのセルに最初に選択したセルの内容を反映させず、リストから選んだ内容を追加しようとすればどのような方法があるでしょうか? ご回答の方、どうぞよろしくお願いいたします。 以下は現在のソースと、実現したい画面イメージになります。 Private Sub Worksheet_Change(ByVal Target As Range) Dim k As String '1,3のセルの内容が変更されたら開始 If Target.Address = "$C$1" Then Application.EnableEvents = False 'セル1,3の内容をkに代入 k = Cells(1, 3).Value '選択されているセルにkの内容を追加 Selection.Value = Selection.Value & k Application.EnableEvents = True End If End Sub

  • VBAで特定の文字が入力されたセルを選択

    例えば、Aと入力してあるセルがあり、 マクロを実行した時にそのセルを選択するにはどのような方法があるのでしょうか。 宜しくお願いします。

  • VBAで選択範囲の全てのセルの削除の仕方

    ご教授お願いいたします。 Excel2007のVBAでseetに挿入したボタンのマクロで マウスで選択した全てのセルを削除するようにしたいのですが・・・ ActiveCell.Delete と入力してマクロを実行してもマウスで選択したセルの 一つ目のセルしか削除されません・・・ 選択したすべてのセルに適用するようにするためには どのようなメソッドを使えば良いのでしょうか? 使い始めたばかりなので全くわかりません・・・ よろしくお願いいたします。

  • VBA セルの値を別セルにコピーするには

    VBAでPastespecialでセルの値を別セルにコピーするマクロを組みたいです。 以下は参考にしたソースコードです。 Worksheets("Sheet1").Range("A1:B10").Copy Worksheets("Sheet2").Range("A1").PasteSpecial _                  Paste:=xlPasteValues, _                  Operation:=xlNone, _                  SkipBlanks:=False, _                  Transpose:=False あるExcelマクロの入力フォームSheetに、製品リストと使用している場所のマスタデータをクエリで読み込んで、製品IDと場所のコードを入力したらINDEX関数で抽出し、マクロ実行ボタンを押すと抽出結果を入力フォームの入力欄に貼り付けします。 上記のマクロだと貼り付けする元セルを移動させたら内容がずれた値がそのまま貼り付けされてしまうと思われますが、地道にコードのコピー元のセルを書き直さないといけないのでしょうか。 Excelの関数だと参照範囲を固定したら掴んで移動させてもセル番地が連動して移動してくれますが、マクロの場合どのようにすれば良いでしょうか。 また、複数個所のセルをコピーするので Paste:=xlPasteValues, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False をコピーするセルの箇所に毎回入れていますが、コピー元のセル・コピー先のセル番地を一括して実行する方法はありますでしょうか。 VBAはソースコードを参考に当てはめているだけで、自力でコードを書くスキルは皆無です。 Excelは2016です。 詳しい方いましたらご教授ください。よろしくお願い致します。

  • ExcelのVBAで特定のセルのみ選択

    Excel VBAの初心者です。 数式など入ったセルの選択は Selection.SpecialCells(xlFormulas).Select で、出来ましたが単純にセルの値が「1」などの時に選択するには どうすれば良いでしょうか。

  • VBAで特定のセルに値を入力したい

    VBAについて教えてください. (当方初心者です) VBAでユーザー定義関数で 計算しているセルから相対的な位置に値を入力したいのです. より具体的に言うと、例えば B3のセルでユーザー定義関数を用いて計算します。 その関数で計算した結果である一定の条件を満たした時にだけ その関数で計算しているセルから2行2列隣のセルに 特定の値を入力したい場合にはどうすればよいのでしょうか? 試しに簡単に書いてみたのが以下です。 ------------------------------------------- Sub test1() ActiveCell.Offset(2, 2).Value = 100 End Sub Function test2() test1 End Function ------------------------------------------- これだとtest1を単体で実行した場合は上手く動作するのですが test2でtest1を呼び出した場合はエラーになります。 これをどう直せばtest2内でtest1の動作を実行できるのでしょうか? ご教授のほどよろしくお願いいたします。

  • セルの値が変ると自動でマクロが実行される。

    セルの値が変ると自動でマクロが実行されるVBAを教えて下さいm(_ _ )m 例えば、シート1のA1の値が変ると、マクロAが実行される。 シート1のA2の値が変ると、マクロBが実行される。 と一つのシート内に複数のイベントを設置したのですが、イマイチわかりません。 知恵をお貸し下さい。

専門家に質問してみよう