• 締切済み

UsedRangeの範囲の設定

入力したデータの一番下にの行に"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 ものすごく基本的な質問かもしれませんが、よろしくお願いしますっっっ。

みんなの回答

回答No.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ではエラーになると思います。 だめなら、また何か考えますので補足してください。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

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

maicching_hiromi
質問者

補足

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

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Range("A65536").End(xlUp).Select とすると、一番下に入力された行が選択されますから、 Range("A65536").End(xlUp).Offset(1, 0) = "data_end" で、目的が遂げられませんか?

maicching_hiromi
質問者

補足

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

関連するQ&A