• ベストアンサー

excelVBA 行の範囲指定についてです。

excel2007のVBAの質問です。 1行目から文字入力がされている行までを範囲指定したいのですが、 For i = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row このように入力すると、数式が入力されている行まで指定されてしまいます。 あくまでも 「文字入力がされているところまで」を指定したい場合 どのようにVBAを作成したらよいのでしょうか? よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 最終行 = Application.Match("", Range("A:A"), -1) 因みに文字列がないと「ERROR」が戻されるのでIsError関数で判定して下さい。

pumotch1028
質問者

お礼

わかりにくい質問をしてしまい申し訳ありません。 この質問文ではみなさんにわかりにくく、失礼だと思いますので 一度締め切りをして これからは、もう少し文章を考えて質問したいと思います。 ご迷惑をおかけしてすみませんでした! ちなみにNO.2の方の回答で試してみたところ うまくいきました。 どうもありがとうございました。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! 横からお邪魔します。 >このように入力すると、数式が入力されている行まで指定されてしまいます。 >あくまでも >「文字入力がされているところまで」を指定したい場合 とありますが、数値と文字列が混在している列があり、 列の最終行ではなk、文字列の最終行までを範囲指定したい!というコトですよね? そういうことだとしての一例です。 データはA列にあるとします。 Sub test() Dim i, k As Long Application.ScreenUpdating = False For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Not IsNumeric(Cells(i, 1)) Then k = Cells(i, 1).Row End If Next i Application.ScreenUpdating = True Range(Cells(1, 1), Cells(k, 1)).Select End Sub こんな感じではどうでしょうか? 的外れならごめんなさいね。m(__)m

pumotch1028
質問者

お礼

わかりにくい質問をしてしまい申し訳ありません。 この質問文ではみなさんにわかりにくく、失礼だと思いますので 一度締め切りをして これからは、もう少し文章を考えて質問したいと思います。 ご迷惑をおかけしてすみませんでした! ちなみにNO.2の方の回答で試してみたところ うまくいきました。 どうもありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

再掲: どこに文字が入力されているのですか。 再掲: たとえば「A列に」生データを「飛び飛びに記入」することにしている,その下端行 for i = 1 to range("A65536").end(xlup).row 具体的に,目に見える姿として,どこ列にどのようにデータを記入していて,具体的にどこ番地のセルを見つけたいのですか?(なぜそこがいい・そこを欲しいのですか?) とお聞きしました。 その投げかけが理解出来なくても,回答のマクロをまず実際に手を動かして試していれば,リクツはあとで勉強するにしても(別にしなくても構いませんが)上手く行く・あるいはいかない事が確認できたはずですね? 回答のマクロを参考に,まずアナタの実際のエクセルに合わせて手直して実際に試してみてから,それで失敗したら「自分ではこうやってみた。実際のエクセルではこういう具合に問題が起きた」と目に見える情報を提供して,追加質問をしてください。

pumotch1028
質問者

お礼

わかりにくい質問をしてしまい申し訳ありません。 この質問文ではみなさんにわかりにくく、失礼だと思いますので 一度締め切りをして これからは、もう少し文章を考えて質問したいと思います。 ご迷惑をおかけしてすみませんでした! ちなみにNO.2の方の回答で試してみたところ うまくいきました。 どうもありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>文字入力がされている行までを範囲指定したい どこに文字が入力されているのですか。 作成例: たとえばA列に生データを上から順に記入することにしている,その下端行 for i = 1 to range("A65536").end(xlup).row #参考 cells(rows.count, 1).end(xlup).rowのような書き方もありますが,大概の場合その必要はありません

pumotch1028
質問者

お礼

わかりにくい質問をしてしまい申し訳ありません。 この質問文ではみなさんにわかりにくく、失礼だと思いますので 一度締め切りをして これからは、もう少し文章を考えて質問したいと思います。 ご迷惑をおかけしてすみませんでした! ちなみにNO.2の方の回答で試してみたところ うまくいきました。 どうもありがとうございました。

pumotch1028
質問者

補足

すばやい回答ありがとうございます。 数式は1~1500行まで入力されていますが、 文字入力がされているのはその途中までですので 例えば1000行まで文字が入力されています。 (しかし、途中で文字が入っていないセルも存在しています。) 僕が範囲指定したいのは 1行目から1000行目までです。 わかりにくい説明で申し訳ありません!

関連するQ&A