|
コードの意味は、このようになります。
Private Sub CommandButton1_Click()
Dim Txt As String
Dim FR As Range
Txt = TextBox1.Text
If Txt = "" Then Exit Sub
'テキストボックスの値を変数に入れる。
'ついでにテキストボックスが未入力かどうか、チェックする。
With Sheets("Sheet1")
'Sheet1 内の処理について以下に記述する。
If IsEmpty(.Range("B5").Value) Then
'もし B5 セルが未入力なら・・
.Range("B5").Value = Txt: GoTo ELine
'B5 へテキストボックスの値を代入し、ラベル(ELine)へ飛ぶ。
'B5 は入力範囲の先頭なので、そこが未入力なら以下の Findメソッド
'の戻り値(FR)は必ず Nothing になってしまうため。
End If
Set FR = .Range("B5:E65536") _
.Find("*", , xlValues, , , xlPrevious)
'B5〜E列最終行までを入力範囲とし、そこで「右下から何かの値が入力
'されているセル」を探す。つまりそこが最終入力セルになる。
End With
'Sheet1 の処理についてはここまで。
If FR.Column = 5 Then
'もし見つかったセルの列番号が 5 なら(つまりE列なら)・・
FR.Offset(1, -3).Value = Txt
'その位置から1行下 & 3列左のセルに変数の値を代入する。
Else
'E列以外なら・・
FR.Offset(, 1).Value = Txt
'その位置の右隣りのセルに代入する。
End If
Set FR = Nothing
'オブジェクト変数と格納した値の関係を切断する。
ELine:
'ラベル
With TextBox1
'テキストボックスの処理について記す。
.Text = ""
'入力れている値を消す。
.SetFocus
'フォーカスを与える
End With
'テキストボックスについての記述は終わり。
End Sub
なお・・
>FindNext(after:=fc)やFindPrevious(after:=fc)の使用例が掲載
そのヘルプをよく読むと分かりますが、FindNext や FindPrevious は、
一度 Findメソッドで検索した後に、その条件の検索を継続するためのメソッド
なのです。
で、今回の処理では継続する必要がありませんから、そのようなメソッドは使って
いないのです。
|
|