Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


46743 / 76735 ←次へ | 前へ→

【34959】Re:ユーザフォームを使い、指定した範囲に数字を入れる
回答  Kein  - 06/2/16(木) 22:42 -

引用なし
パスワード
   コードの意味は、このようになります。

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メソッドで検索した後に、その条件の検索を継続するためのメソッド
なのです。
で、今回の処理では継続する必要がありませんから、そのようなメソッドは使って
いないのです。

1 hits

【34883】ユーザフォームを使い、指定した範囲に数字を入れる Ny 06/2/15(水) 20:16 質問
【34906】Re:ユーザフォームを使い、指定した範囲に... Kein 06/2/16(木) 0:23 回答
【34944】Re:ユーザフォームを使い、指定した範囲に... Kein 06/2/16(木) 16:33 発言
【34957】Re:ユーザフォームを使い、指定した範囲に... Ny 06/2/16(木) 21:00 お礼
【34959】Re:ユーザフォームを使い、指定した範囲に... Kein 06/2/16(木) 22:42 回答
【34972】Re:ユーザフォームを使い、指定した範囲に... Ny 06/2/17(金) 11:08 お礼

46743 / 76735 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free