Sub AutoFill()
Dim x As Long
Dim y As Long
Dim lastrow As Long
Dim lastcolumn As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
lastcolumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count
lastrow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
For x = 2 To lastrow
If Cells(x, 2).Value = "" Then
Cells(x, 2).Value = Cells(x - 1, 2).Value
Cells(x, 3).Value = Cells(x - 1, 3).Value
Cells(x, 5).Value = Cells(x - 1, 5).Value
End If
Next x
Application.ScreenUpdating = True
End Sub
上記のコードでは、セルがいっぱいになりますが、最後の行がExcelシートの最後までいっぱいになります。 Excelシートの列B
C
& E
にはすでにD
が記入されています。コードの変更点は何ですか?Excelでのセルの自動入力VBAマクロ
なぜ 'ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count' ??のhttp://stackoverflow.com/questions/71180/how-can-i-find-last-row-それに含まれているデータを含むExcelのシート – cyboashu
あなたのコードは私のPC上のあなたの要件に応じて動作しています。 [確認](https://www.dropbox.com/s/kg380esjoyxb0o9/autofill_sample.xlsm?dl=0) – skkakkar
lastRowでは、私はあなたの3つの列を比較し、そこから最後の行を取得したいと思います。 'UsedRange'は、私の経験上、いつも期待していた範囲を使用するとは限りません。 'lastRow = Max(cells(rows.count、5).End(xlUp)).Row、cells(rows.count、3).End(xlUp).Row、cells(rows.count、5).End(xlUp) .Row' *または* LastRow = Cells.Find( "*"、searchorder:= xlByRows、searchdirection:= xlPrevious).Row' – BruceWayne