- ベストアンサー
Excel VBAで最終行の文字列を消したい
- Excel VBAを使用して最終行の文字列を削除する方法についてアドバイスをお願いします。
- Yahoo Financeのダウ工業株30種平均のヒストリカルデータのダウンロードマクロを作成していますが、最終行の文字列を削除する方法が分かりません。
- 作成中のExcel VBAのマクロで、ダウンロードしたデータの最終行の文字列を削除するコードを追加しているのですが、うまく動作しません。どなたか解決策を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ご例示のコードを変更してみました。 Mojiretsu = "* Close price adjusted for dividends and splits." With Worksheets("sheet2") lastrow = .Range("A1").End(xlDown).Row If .Range("A" & lastrow).Value = Mojiretsu Then .Rows(lastrow).Delete End If End With 一般的に最終行は、途中に空白行がある場合を想定でシート最終行から上方向に求めるのが定石です。 Range("A65536").End(xlup).Row、又はCells(Rows.Count,"A").END(Xlup).Row
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
方法1: range("A65536").end(xlup).entirerow.delete #ただし,あなたのマクロが当該のページのどこまでのデータをどんな具合に取り込んでいるのか不明なので,これでもダメかもしれません。 ##今のアナタのマクロで単に「だめでした」じゃなく,アナタのマクロのLastRowが具体的に何行目を取得しているのか事実を確認してみる(こういう作業を「デバッグ」といいます)と,どこで何を失敗しているのか(=具体的にどう直せば良いのか)もっとはっきり調べが付きます。ご自分で試してみてください。 方法2: dim h as range set h = cells.find(what:="Close price adjusted for dividends and splits", lookin:=xlvalues, lookat:=xlpart) if not h is nothing then h.entirerow.delete end if
補足
一応、以下のコードで解決いたしました。 Worksheets("Sheet2").Activate Lastrow = ActiveSheet.Range("$A$1").End(xlDown).Row ActiveSheet.Rows(Lastrow).Delete "* Close price adjusted for dividends and splits."の文字列に関しては、ページをめくるごとに最後の一行に挿入され、Excelに取り込むとA列の一番最後(66~68行目)に必ず挿入されることがわかりました。 ですので、上記コードの様に、A列の最後の行を無条件に消すことにより問題ないことを確認しました。 keithinさん、mu2011さんご回答ありがとうございました。 回答例のコードは、VBA初心者の私には心強いです。 どうもありがとうございました。