これは別の奇妙なものです。
フィルタを使用して1つのシートからデータを取得し、Range.SpecialCells()
コピーして貼り付ける適切な行を見つけるメソッドを使用しているこのコードがあります。ただし、Rows().SpecialCells()
使用した場合、または行数によって返される範囲の行プロパティを使用した場合SpecialCells
は間違っています。これが私が意味することです:
With Worksheets("ret-" & sNumRet)
.EnableAutoFilter = True
.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=sSection
iLast = Range("C1").End(xlDown).Row
numRows = .Range("B2:B" & iLast).SpecialCells(xlCellTypeVisible).Cells.Count
End With
このコードは、意味のある数である約8k行を生成します。
With Worksheets("ret-" & sNumRet)
.EnableAutoFilter = True
.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=sSection
iLast = Range("C1").End(xlDown).Row
numRows = .Rows("2:" & iLast).SpecialCells(xlCellTypeVisible).Rows.Count
End With
結果として4をもたらします。
With Worksheets("ret-" & sNumRet)
.EnableAutoFilter = True
.AutoFilter.Range.AutoFilter Field:=3, Criteria1:=sSection
iLast = Range("C1").End(xlDown).Row
numRows = .Range("B2:B" & iLast).SpecialCells(xlCellTypeVisible).Rows.Count
End With
また、結果として4が得られます。もちろん、どちらも間違っています。45k行のデータがあり、フィルターを使用して少なくとも数千行が表示されていることがわかります。それらのステートメントの間に私が欠けている意味の違いはありますか?ここでの文脈では、それらはほぼ同等であると思います。
ありがとう !