重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

入力したデータの一番下にの行に"data_end"と入力するようにしたいと思っております。
今、UsedRangeを使用してその下の行に"data_end"と入力しようとすると以前に使用した行まで選ばれてしまい、空白の行ができてしまう状態になっています。また、CurrentRegionを使用すると空白行があると空白行以降を選んでもらえません。(データがトビトビにあるので空白行と認識されてしまう可能性があります。)
しかも、データの入力されているセルは別のシートで計算式に参照されているのでいらない行を削除することはできません。
今入力されている状態の一番下の行を認識するにはどうしたらよいでしょうか?

プログラムは以下のように入力してあります。

Sub test()


Dim row_end As Integer

Sheets("sheet1").Select

ActiveSheet.UsedRange.Select
row_end = Selection.Rows.Count

Sheets("sheet1").Cells(row_end + 1, 1).Value = "data_end"

End Sub

ものすごく基本的な質問かもしれませんが、よろしくお願いしますっっっ。

A 回答 (3件)

2つ考えてみました。


1.以前に使用した行には、書式か何か設定してありませんか?
  それをクリアする事は出来るのですか?
  一旦、全セルの書式をクリアし、data_endを書いてから
  書式を再設定すればどうですか?

2.Findメソッドにより最終の文字列を検索して行番号を取得する。
Sub test()
  Dim Row_End as Long
  Row_End = Worksheets("Sheet1").Cells.Find(what:="*", SearchDirection:=xlPrevious).Row

  Worksheets("Sheet1").Cells(Row_End + 1, 1).Value = "data_end"
End Sub
と言うのはどうですか?

注)行は65536行までありますから、Integerではエラーになると思います。

だめなら、また何か考えますので補足してください。
    • good
    • 0

UsedRange.もCurrentRegionもEnd(xlUp).も話題に出てますが


Selection.SpecialCells(xlCellTypeLastCell).Select
が出てません。これはいかがですか。
ただこれを使って、A列だけの最終行を捉えるのはむつかしいよう。Cells(Index)で表される,空白でないセルの
Indexが,最大のセルを示す?

この回答への補足

わかりにくい文章で申し訳ございません。
A列にdeta_endを入れるのですがデータが入力されている列はA列とは限らず入力されています。
A列では3行目まで入力されているとしてもB列では5行目まで入力されている場合があります。
ですからA列だけの最終行ではなくシート全体の最終行と捉えていただいて結構です。
ただ、教えていただいた方法を試してみましたがUsedRange最終行とした行は同じものでした。

入力範囲のリセットみたいなことはできないのでしょうか?

補足日時:2004/05/25 09:59
    • good
    • 0

Range("A65536").End(xlUp).Select



とすると、一番下に入力された行が選択されますから、

Range("A65536").End(xlUp).Offset(1, 0) = "data_end"

で、目的が遂げられませんか?

この回答への補足

説明不足で申し訳ございません。

データが入力されている列が特定の1列だけではありませんのでRangeの幅をRange("A65536:Z65536")としましたが見ているのはA列だけのようでした。
Endを使用するときRangeオブジェクトで指定できるのは1Cellだけなのでしょうか?

補足日時:2004/05/25 09:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!