非常に基本的なことで問題が発生しています。私のvbaの経験は本質的に何もありません。私が作成したスクリプトを使用していくつかの csv ファイルからインポートされたデータを含むスプレッドシートがあります。スクリプトはデータを読み取り、マスター スプレッドシートを作成するか、以前のマスター スプレッドシートを上書きします。同じスクリプトで、このデータを 1 列上に移動したいと思います。データが追加されると、スプレッドシートが更新されるたびに、移動する必要があるデータの範囲が変わります。これを行うためにコードの最後に次を含めましたが、動作させることができません。
Set myRange = Range(Cells(1, 1).Address(), Cells(lastRow, lastColumn).Address())
Range("myRange").Offset(,1)
私は何を間違っていますか?
編集:これが私が今持っているものです。14 行目で「実行時エラー 1004」が発生し続けます。
Dim myRange As Range
Dim DefPath As String
Dim lastRow As Long
Dim lastColumn As Long
Dim lRow As Long
Dim lCol As Long
DefPath = Application.DefaultFilePath
Workbooks.Open Filename:=DefPath & "\SEM Master File"
lRow = Cells(Rows.Count, 1).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
Set myRange = Range(Cells(1, 1), Cells(lastRow, lastColumn))
myRange.Offset(, lastColumn).Value = myRange.Value
2番目の編集:これが私がこれまでに持っているものです。コンパイルして実行しますが、期待どおりにすべてを 1 つの列に移動する代わりに、列のコピーを作成し、スプレッドシートに既にあるデータの隣の列に配置します。
Sub Offset_Data()
Dim myRange As Range
Dim DefPath As String
Dim lastRow As Long
Dim lastColumn As Long
DefPath = Application.DefaultFilePath
Workbooks.Open ("SEM Master File.xlsx")
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
Set myRange = Range(Cells(1, 1), Cells(lastRow, lastColumn))
myRange.Offset(, lastColumn).Value = myRange.Value
End Sub