マクロの下で実行するボタンを使用して、ExcelのセルA3からB3に数式をコピーする必要があります。
Sub Copy()
Range("A3").Select
ActiveCell.Offset(0, 1).Formula = ActiveCell.Formula
End Sub
その後、ボタンをクリックするたびに、範囲全体が入力されるまで、数式を範囲(B3:J3)の次のセルにコピーする必要があります。ボタンを1回クリックするだけで範囲を一度に埋めるのではなく、クリックごとに1つのセルを入力するだけです。これは数週間にわたって行われるため、毎週1つのセルにデータが入力されます。
あなたの問題は、あなたが持っているコードはセルA3でしか機能しないが、行3の最後の数式で機能させたいということです。
B3が空白の場合、コードは機能しますが、そうでない場合は、A3を再度コピーします。
B3が空白でない場合は、行3の最後のセルをその右側のセルにコピーする必要があります。
Sub CopyToRight()
Dim WB As Workbook
Dim WS As Worksheet
Set WB = ThisWorkbook
Set WS = Sheets("Sheet1")
With WS
If IsEmpty(.Range("A3").Offset(0, 1)) Then
.Range("A3").Copy .Range("A3").Offset(0, 1)
Else
.Range("A3").End(xlToRight).Copy .Range("A3").End(xlToRight).Offset(0, 1)
End If
End With
End Sub
変更する必要があるのは、次のいずれかです。
どちらの方法でもコーディングできます。1の場合はA3'CopyCell 'という名前を付け、コピーした後、' CopyCell 'という名前をB3に変更します。 2の場合、Offset(0,1)を(0、cols)に変更する必要があります。ここでcols =現在のcols + 1
Sub Button_Click()
'
' Button_Click Macro
'
Range("CopyMe").Select
ActiveCell.Offset(0, 1).Formula = ActiveCell.Formula
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 1)).Select
With ActiveWorkbook.Names("CopyMe")
.Name = "CopyMe"
.RefersTo = ActiveCell
.Comment = ""
End With
'
End Sub
堅牢性の観点からは、現在コピーするセルの名前が「CopyMe」であると想定しているため、あまり良くありません。そうでない場合は機能しません。
したがって、誰かがマクロを実行してから列を削除して再度実行しようとすると、機能しません。