- ベストアンサー
Excel VBAで空白セルの自動入力方法
- Excel VBAを使用して、空白セルに自動で文字を入力する方法について説明します。
- 「セル範囲が空白の場合に、入力したセルと同じ文字を自動で入力するVBAの作成方法」について解説します。
- また、既にセルに文字が入っている場合には自動で入力しないようにする方法についても説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1)シート名のタブ(左下にある切替用のタブ)を右クリック (2)「コードの表示」を選択して下記のVBAコードを貼付 (3)右上の×または、Alt+F11でVBEを終了 (4)該当のセル範囲に値を入力すると処理が実行されます ・コード内の末尾「★」の場所で対象とするセル範囲を変更できます ・コピペなどによる複数セルの同時変更には対応していません また、以下の二点の確認があります。 >(1)セルL5・L6・L23・L24・L25 >(例えばL24に「1」と入力した場合はL5・L6・L24・L25に「1」と自動で入力) L24ではなく、L23ですよね? >(2)セルM5・M6・M23・M24・M25 >(例えばM24に「1」と入力した場合はM5・M6・M24・M25に「1」と自動で入力) M24ではなく、M23ですよね? ■VBAコード Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub '準備 Dim flag As Boolean, ckCells As Variant, ckCell As Variant, myTar As Range Application.EnableEvents = False Application.ScreenUpdating = False '判定(1) ckCells = Array("L5", "L6", "L23:L25") '★ Set myTar = Nothing For Each ckCell In ckCells If myTar Is Nothing Then Set myTar = Range(ckCell) Else Set myTar = Union(myTar, Range(ckCell)) End If If Not Application.Intersect(Target, Range(ckCell)) Is Nothing Then flag = True Next If flag Then GoTo go '判定(2) ckCells = Array("M5", "M6", "M23:M25") '★ Set myTar = Nothing For Each ckCell In ckCells If myTar Is Nothing Then Set myTar = Range(ckCell) Else Set myTar = Union(myTar, Range(ckCell)) End If If Not Application.Intersect(Target, Range(ckCell)) Is Nothing Then flag = True Next If flag Then GoTo go '判定(3) ckCells = Array("L8:L10") '★ Set myTar = Nothing For Each ckCell In ckCells If myTar Is Nothing Then Set myTar = Range(ckCell) Else Set myTar = Union(myTar, Range(ckCell)) End If If Not Application.Intersect(Target, Range(ckCell)) Is Nothing Then flag = True Next go: '変更適用 If flag Then If WorksheetFunction.CountA(myTar) = 1 Then If Len(Target) > 0 Then myTar = Target End If End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub
お礼
質問内容を少し間違えてスイマセン、ご指摘の通りです。 この度はありがとうございます!!非常に助かりました。