• ベストアンサー

最後のデータ行の任意のセルの値をユーザーフォームに表示させたい

VBA初心者で簡単なデータベースを作成しています。 ユーザフォームを使って、データを入力します。その中で管理ナンバーを各データに付けているのですが、毎回データの最後の行を探して、入力済みの最後の管理ナンバーを見付けて、それを元に新規データの入力時にナンバリングしております。 そこで、ユーザーフォームを開いた時に、自動的に管理ナンバー(データ行の最後の任意のセルの値)を、管理ナンバーを入力するべきテキストボックスの初期値として表示することは出来ないでしょうか? 宜しくご教授の程、お願いいたします。

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

  • ベストアンサー
noname#187541
noname#187541
回答No.3

CurrentRegionとは「アクティブセル領域」を取得するプロパティです。 「アクティブセル領域」とは空白の行と列に囲まれた領域です。 つまり、指定したセルから上下左右で空白セルになるまでセル範囲を拡張します。 これで分かるでしょうか。

angels2
質問者

お礼

早速、教えて頂き有り難うございます。 また少し、VBAが納得できるようになりました。 また、質問する事があると思いますが、何卒、宜しくお願い申し上げます。

その他の回答 (2)

noname#187541
noname#187541
回答No.2

こんばんは。 まず最初に列と行の表記が逆です。 ユーザーフォームのInitializeイベントで行います。 Private Sub UserForm_Initialize() TextBox1.Value = Range("A1").CurrentRegion. _ SpecialCells(xlCellTypeLastCell).Value End Sub どうでしょうか。

angels2
質問者

お礼

ご回答有り難うございます。 行と列が逆さまでした。失礼しました。 M-SOFTさんのを参考に、以下のような形を作ってみましたところ、うまく行きました。 Private Sub UserForm_Initialize() Dim dataf As Long With ActiveSheet 'データの最後の行を取得する dataf = .Cells.SpecialCells(xlCellTypeLastCell).Row TextBox8.Text = .Cells(dataf, 11).Value End With End Sub できれば今後の参考までに、教えていただきたいのですが、 Range("A1").CurrentRegion. _ は、セルA1に有るデータの最終行という意味でしょうか? S-SOFTさんのものをそっくり使ってもうまく行かなかったので、私の作ったフォームと、何が不具合となっているのか確かめたいので、ご教授いただければと思います。 宜しくお願い申し上げます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

ユーザーフォームを表示(Show)する前にTEXTBOXの値をセットするということでしょうか? Sheet1のA列の最下行の値をセットするならこんな感じですかね Sub MacroA() UserForm1.TextBox1.Value = Worksheets("Sheet1").Range("A65536").End(xlUp) UserForm1.Show End Sub

angels2
質問者

補足

早速ご回答有り難うございます。 >ユーザーフォームを表示(Show)する前にTEXTBOXの値をセットするということでしょうか? はい、そうです。 ただ、表示したいセルは、列の最下位ではなく、入力されているデータの最後のtextです。   1     2     3 A Text1 Text2 Text3 B Text4 Text5 Text6 C Text7 Text8 Text9 D(次回の入力行) の場合、Text9を次回入力フォームのTextBox1に初期値で表示させたいのです。 どうしたらText9を抽出し表示できるかが分かりません。 如何でしょうか?

関連するQ&A