開始する場所が見つからない場合は、Worksheet_Change Sheet1のイベントマクロを試すことができます。
Option Explicit
Private dALL As Double
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Sum(Target.Parent.UsedRange.Cells) <> dALL Then
dALL = Application.Sum(Target.Parent.UsedRange.Cells)
On Error GoTo bm_Safe_Exit
'suspend events so nothing on Sheet2 gets triggered
Application.EnableEvents = False
Dim a As Long, i As Long, j As Long, aVALs As Variant
aVALs = Target.Parent.UsedRange.Cells.Value2
For i = LBound(aVALs, 1) To UBound(aVALs, 1)
For j = LBound(aVALs, 2) To UBound(aVALs, 2) - 1
If Not CBool(Len(aVALs(i, j))) Then
For a = j + 1 To UBound(aVALs, 2)
If CBool(Len(aVALs(i, a))) Then
aVALs(i, j) = aVALs(i, a)
aVALs(i, a) = vbNullString
Exit For
End If
Next a
End If
Next j
Next i
With ThisWorkbook.Worksheets("Sheet2")
.UsedRange.Clear
.Cells(1, 1).Resize(UBound(aVALs, 1), UBound(aVALs, 2)) = aVALs
End With
End If
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
あなたの「VBAまたはマクロ知識」は「非常に基本的」であるとは思われません。実際、それは存在しないように見える。 – Jeeped
まあ、そうです。どんな提案や指示も高く評価されます。とにかく私は私の質問を改善することができますか? – vungvang
私はあなたがコードを要求していて、何も供給していないのであなたの質問に投票しました。これは、あまりにも怠け者であるか、書くことができないというフリーコードを入手する場所ではありません。あなたの質問を改善するには:**あなたの質問にエラーや問題の説明と共にコードを書き込んでください**([ask])。 – Jeeped