Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11全般 : Microsoft 365)
vbaでオートフィルが実行できません
投稿日時: 22/09/02 18:02:30
投稿者: wgfyhsudji24w

H1〜O1列に値を入力し、以下にてH1〜O1列の値に対しオートフィルを行おうとしてますが、
エラーも出ず、実行がされない状況です。
どこが問題等ご指摘頂けますと幸いです。
 
よろしくお願い致します。
 
sub test()
 
If Trim(Range("A1")) <> "" Then
 
Range("H1").AutoFill Destination:=Range("H1:H" & Range("H65536").End(xlUp).Row)
Range("I1").AutoFill Destination:=Range("I1:I" & Range("I65536").End(xlUp).Row)
Range("J1").AutoFill Destination:=Range("J1:J" & Range("J65536").End(xlUp).Row)
Range("K1").AutoFill Destination:=Range("K1:K" & Range("K65536").End(xlUp).Row)
Range("L1").AutoFill Destination:=Range("L1:L" & Range("L65536").End(xlUp).Row)
Range("M1").AutoFill Destination:=Range("M1:M" & Range("M65536").End(xlUp).Row)
Range("N1").AutoFill Destination:=Range("N1:N" & Range("L65536").End(xlUp).Row)
Range("O1").AutoFill Destination:=Range("O1:H" & Range("O65536").End(xlUp).Row)
 
Else
    End If
 
End Sub

回答
投稿日時: 22/09/02 18:25:13
投稿者: taitani
投稿者のウェブサイトに移動

A1 が空白とか。
F8 のステップ実行していくと、Range("H1")〜から、Range("O1")まで実行されますか?

回答
投稿日時: 22/09/02 18:48:20
投稿者: simple

H列を例にとると、
Range("H65536").End(xlUp).Row
はどうなると予想していますか?
実際に予想どおりになっているんですか?
ご自分で確認してみてください。

回答
投稿日時: 22/09/02 19:01:43
投稿者: WinArrow
投稿者のウェブサイトに移動

>Range("H1").AutoFill Destination:=Range("H1:H" & Range("H65536").End(xlUp).Row)
 
オートフィル廃位は、列Hのデータの最後の行までという指定ですよね?
 
なぜ、列Hのデータの最後の行までなんでしょう。
 
普通は、A列のデータの最終行まで・・とするのではないでしょうか?
例えば、
Range("H1").AutoFill Destination:=Range("H1:H" & Range("A65536").End(xlUp).Row)
 
できれば、
 
Dim LastROw As Long
 
If Trim(Range("A1")) <> "" Then
    LastROw = Range("A" & Rows.Count).End(xlUp).Row
    Range("H1").AutoFill Destination:=Range("H1:H" & LastROw)
 
のようにすると、すっきりすると思います。
 
 

投稿日時: 22/09/05 16:25:54
投稿者: wgfyhsudji24w

指定先が間違っていたのですね、、
以下修正したマクロにて実行ができました。
皆さま、丁寧なご回答を頂き、大変助かりました、誠にありがとうございました!
 
 
 
Sub test()
 
If Trim(wsSheet.Range("A1")) <> "" Then
LastROw = wsSheet.Range("A" & Rows.Count).End(xlUp).Row
wsSheet.Range("H1").AutoFill Destination:=wsSheet.Range("H1:H" & LastROw)
wsSheet.Range("I1").AutoFill Destination:=wsSheet.Range("I1:I" & LastROw)
wsSheet.Range("J1").AutoFill Destination:=wsSheet.Range("J1:J" & LastROw)
wsSheet.Range("K1").AutoFill Destination:=wsSheet.Range("K1:K" & LastROw)
wsSheet.Range("L1").AutoFill Destination:=wsSheet.Range("L1:L" & LastROw)
wsSheet.Range("M1").AutoFill Destination:=wsSheet.Range("M1:M" & LastROw)
wsSheet.Range("N1").AutoFill Destination:=wsSheet.Range("N1:N" & LastROw)
wsSheet.Range("O1").AutoFill Destination:=wsSheet.Range("O1:O" & LastROw)
 
End Sub