• ベストアンサー

確認後、一発入力!!

A1・C2・D4に入力すると、E列・F列・G列に上から順に表示させるみたいな ことは可能ですか? 1回目  ABCD      EFGH 15          567 2   6 3 4   7 2回目  ABCD      EFGH 13          567 2           3 5 3 4   5 みたいな感じで空白は空白で表示したいのですが、可能でしょうか?? という質問に対し、このマクロを教えていただいたんですが、 Private Sub Worksheet_Change(ByVal Target As Range) Dim myC As String Dim x As Range   If Intersect(Target, Range("A1,C2,D4")) Is Nothing Then Exit Sub   Select Case Target.Address(0, 0)     Case "A1": myC = "E"     Case "C2": myC = "F"     Case "D4": myC = "G"   End Select   If Cells(Rows.Count, myC).End(xlUp).Value = "" Then     Set x = Cells(Rows.Count, myC).End(xlUp)   Else     Set x = Cells(Rows.Count, myC).End(xlUp).Offset(1)   End If   x.Value = Target.Value End Sub 入力用セルがもっとたくさんある為、全て入力後に、確認してから EFGの列に反映させたいのですが、可能でしょうか? わかりずらくスミマセン・・・・・。 ヨロシクおねがいします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

前回そのマクロを回答したmerlionXXです。 では自動実行ではなく、確認後に実行を指示できるやりかたです。 前回とは手順がちがいます。 以下の手順をおためしください。 1.Altキー+F11キーで Visual Basic Editor画面を呼び出します。 2.画面上部のメニューバーから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。 '*****ここから下をコピペ***** Sub test01()   Dim myAr   Dim x As Long   myAr = Array(Range("A1"), Range("C2"), Range("D4"))   For n = LBound(myAr) To UBound(myAr)     If IsEmpty(myAr(n)) Then       myAr(n) = " "     End If   Next n   If IsEmpty(Cells(Rows.Count, "E").End(xlUp)) Then     x = Cells(Rows.Count, "E").End(xlUp).Row   Else     x = Cells(Rows.Count, "E").End(xlUp).Offset(1).Row   End If   Cells(x, "E").Resize(, UBound(myAr) + 1).Value = myAr End Sub '*****ここより上までをコピペ***** 3.Alt+F11キーでワークシートへもどります。 4. Alt+F8キーでマクロを呼び出し「test01」を実行します。

otoichihr
質問者

お礼

思うようにできました!! 助かりました。 ありがとうございます!! また何かあればヨロシクお願いします。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

参考に Sub Test()   Dim myRang As Range   Dim i As Long, LastRow As Long   Dim c As Range   Set myRang = ActiveSheet.Columns("A:D").SpecialCells(xlCellTypeConstants)   'E~Gの最終行検出   For i = 5 To 7     LastRow = WorksheetFunction.Max(Cells(65536, i).End(xlUp).Row, LastRow)   Next   For Each c In myRang     Select Case c.Column       Case 1: Cells(LastRow + 1, c.Column + 4).Value = c.Value       Case 3, 4: Cells(LastRow + 1, c.Column + 3).Value = c.Value     End Select   Next End Sub

otoichihr
質問者

お礼

できました、ありがとうございます!!

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

条件が曖昧すぎ >A1・C2・D4に入力すると、E列・F列・G列に上から順に表示させるみたいなことは可能ですか? 可能 >みたいな感じで空白は空白で表示したいのですが、可能でしょうか?? 条件付きで可能 すべての入力が空白の場合があるのか無いのか? ある場合は入力済みの行を捉えるため 例えばH列に入力済を示す番号や日付などの入力が必要 E・F・G列で必ず入力される列があるのか? 無ければ、上と同じで入力済みを示す列を設ける必要がある >入力用セルがもっとたくさんある為、全て入力後に、確認してから EFGの列に反映させたいのですが、可能でしょうか? ボタン等で対応すれば、反映させたいタイミングで ボタンを操作すればよいので可能 '条件A1の入力が毎回必ずされる 'もっと沢山とありましたが具体的なアドレスが無いので無視してます Sub 入力() Dim x As Long x = Cells(Rows.Count, 5).End(xlUp).Row Cells(x, 5).Value = Range("a1").Value Cells(x, 6).Value = Range("c2").Value Cells(x, 7).Value = Range("d4").Value End Sub 参考まで

otoichihr
質問者

お礼

曖昧すぎてスミマセン・・・。 気をつけます。

関連するQ&A