プロが教えるわが家の防犯対策術!

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

A 回答 (3件)

CurrentRegionとは「アクティブセル領域」を取得するプロパティです。



「アクティブセル領域」とは空白の行と列に囲まれた領域です。

つまり、指定したセルから上下左右で空白セルになるまでセル範囲を拡張します。

これで分かるでしょうか。
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/07/31 08:48

こんばんは。



まず最初に列と行の表記が逆です。

ユーザーフォームのInitializeイベントで行います。

Private Sub UserForm_Initialize()
TextBox1.Value = Range("A1").CurrentRegion. _
SpecialCells(xlCellTypeLastCell).Value
End Sub

どうでしょうか。
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。
行と列が逆さまでした。失礼しました。
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さんのものをそっくり使ってもうまく行かなかったので、私の作ったフォームと、何が不具合となっているのか確かめたいので、ご教授いただければと思います。
宜しくお願い申し上げます。

お礼日時:2006/07/30 21:40

ユーザーフォームを表示(Show)する前にTEXTBOXの値をセットするということでしょうか?



Sheet1のA列の最下行の値をセットするならこんな感じですかね

Sub MacroA()
UserForm1.TextBox1.Value = Worksheets("Sheet1").Range("A65536").End(xlUp)
UserForm1.Show
End Sub

この回答への補足

早速ご回答有り難うございます。
>ユーザーフォームを表示(Show)する前にTEXTBOXの値をセットするということでしょうか?

はい、そうです。
ただ、表示したいセルは、列の最下位ではなく、入力されているデータの最後のtextです。
  1     2     3
A Text1 Text2 Text3
B Text4 Text5 Text6
C Text7 Text8 Text9
D(次回の入力行)

の場合、Text9を次回入力フォームのTextBox1に初期値で表示させたいのです。
どうしたらText9を抽出し表示できるかが分かりません。
如何でしょうか?

補足日時:2006/07/29 21:51
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A