2

SpecialCells(xlCellTypeLastCell)Excel VBAから正確な値を取得するのに苦労しています。次のコードは、「TrackedItems」ワークシートの最初の空の行の行番号を出力する必要があります。ワークシートには 8 行ありますが、コードは 25 を出力します (9 を出力する必要があります)。

emptyRow = 1 + wb.Worksheets("TrackedItems").Cells.SpecialCells(xlCellTypeLastCell).Row
MsgBox emptyRow

この特定の例では、スプレッドシートがまばらに入力されていないため(空白以外のセルと空白のセルが混在していないため)、この回答で問題が解決します。ただし、データまばらに入力xlCellTypeLastCellされている状況を含め、何度も使用しましたが、この問題は発生しませんでした。このように振る舞う原因は何ですか?適切に動作させる方法はありますか、それともカスタム コーディングされた関数に依存する必要がありますか? そのような関数を使用して古い作業を置き換える必要がありますか、または現在動作しているという事実は、後で壊れないことを意味しますか (少なくとも、それらのワークブックのコードを変更しない場合)?xlCellTypeLastCellxlCellTypeLastCell

4

2 に答える 2

1

あなたはこれを試すことができます:

emptyRow = range("A" & activesheet.rows.count).end(xlup).row

おそらくデータを含む最後の行を返すには?

于 2013-06-13T15:59:13.543 に答える