• ベストアンサー

VBAの行変更について

例  (1)sheet1のセルA1,B1を入力専用(シート名:入力)とする  (2)入力する  (3)sheet2のA1,B1に転記される  (4)(1)を繰り返す  (5)sheet2の行が変わる(A2,B2)  (6)(4)と(5)を繰り返す  (7)(5)がA5,B5まで転記されると自動的にC1,D1に転記される  (8)(7)がC5,D5まで転記されると『データがいっぱいです』のメッセージがでる この説明でわかりますでしょうか。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

入力用シートのシートモジュールに Private Sub Worksheet_Change(ByVal Target As Range)    Dim r As Range    With Target         If .Address(0, 0) <> "B1" Then Exit Sub         If .Value = "" Or Range("A1").Value = "" Then Exit Sub         Set r = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp)         If r.Row = 5 Then            Set r = Worksheets("Sheet2").Range("C" & Rows.Count).End(xlUp)            If r.Row = 5 Then MsgBox "データがいっぱいです": Exit Sub         End If         If r.Value <> "" Then Set r = r.Offset(1)         r.Resize(, 2).Value = .Offset(, -1).Resize(, 2).Value    End With End Sub ではどうでしょうか?

8610mama
質問者

お礼

ありがとうございます。

その他の回答 (2)

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

入力用シートのシートタブを右クリックして、シートモジュールを呼び出し、以下のコードを試してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range If Intersect(Target, Range("A1:B1")) Is Nothing Then Exit Sub Set c = Worksheets("Sheet2").Cells(Rows.Count, Target.Column).End(xlUp) If c.Row = 5 Then Set c = Worksheets("Sheet2").Cells(Rows.Count, Target.Column + 2).End(xlUp) If c.Row >= 5 Then MsgBox "データが一杯です!", vbCritical, "Σ( ̄ロ ̄lll)" Exit Sub End If End If If c = "" Then c = Target Else c.Offset(1, 0) = Target End If Set c = Nothing End Sub

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

>この説明でわかりますでしょうか。 だからといって、何をご希望なのでしょうか。 途中まででもできているのであれば、コードを表示してみてください。

関連するQ&A