|
■No97144 (工場プログラマー さん) に返信 > この処理がうまくいきません。 行や列を表す変数は、i や j といった名前を使うよりも x や y、あるいは col や row といった名前にした方が分かりやすくなりますよ。 本題とは直接関係ありませんけれども…。
> For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row これは、「A列(1列目)の最後の行」までのループとなります。
たとえ、B29 や Z80 にデータがあったとしても、A 列が空っぽなら For i = 1 To 1 の意味になってしまいますが、それは意図した動作でしょうか?
> For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column これは、「1 行目の最後の列」までのループとなります。
たとえ、F91 や G3 にデータがあったとしても、1 行目にデータが無ければ、 For j = 1 To 1 の意味になってしまいますが、それは意図した動作でしょうか?
> 大きい数字を指定すればいいんですが少し見た目が気になるのでお願い致します。 Dim minCol As Long, maxCol As Long Dim minRow As Long, maxRow As Long With ActiveSheet.UsedRange minCol = .Columns(1).Column maxCol = .Columns(.Columns.Count).Column minRow = .Rows(1).Row maxRow = .Rows(.Rows.Count).Row End With Dim c As Long, r As Long For c = minCol To maxCol For r = minRow To maxRow 'If Not IsEmpty(Cells(r, c).Value) Then ' Debug.Print Cells(r, c).Address(False, False); Tab(8); Cells(r, c).Value 'End If Next Next
|