- ベストアンサー
新規ボタンの作成と氏名未入力セルへのジャンプについての質問
- Excel、VBAのユーザーフォームで顧客情報を入力するものを作成しています。新規ボタンを押すと、氏名が登録されていないレコードまでジャンプし、一見成功したように見えますが、最後のレコード(氏名が入っている)で、新規ボタンを押すとエラーが出てしまいます。
- 凡ミスかもしれませんが、新規ボタンの作成と氏名未入力セルへのジャンプについてエラーが発生しています。初心者ですので、どこが間違っているのか教えていただけると助かります。
- ExcelのVBAを使って、ユーザーフォームで顧客情報を入力するものを作成しています。新規ボタンを押すと、氏名が登録されていないセル(行)にジャンプする機能を実装したいのですが、最後のレコードでエラーが発生してしまいます。初心者のため、どこを修正すれば良いのか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あ~、わかったような気がします。 r = Cells(i, 3).End(xlDown).Row i = r + 1 は r = Cells(1, 3).End(xlDown).Row i = r + 1 試してみてください。 検索を始める行が i なので、常に変わってしまいますが、 最初の行(1行目、あるいは2行目)から下方向へ移動するべきでしょう。
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
表示されている部分のコードの間違いはないと思います。 >最後のレコード(氏名が入っている)で、新規ボタンを押すとエラーが出てしまいます。 なんというエラーが出ているのでしょうか。 どこのコードでエラーが出ているのでしょうか。 ひょっとして、ほかの部分でシートが変更されているとかないでしょうか。 試しに r = Cells(i, 3).End(xlDown).Row i = r + 1 msgbox i Call Display と入れてみて、エラーが出る操作をしてみて、最終行がきちんと表示されるか確認してみてください。 それとどういった動作にしたいのか ??? です。 Private Sub cmd新規_Click() If Me.txt氏名 <> "" Then ・・・ Call Display ・・・ テキストボックスに氏名が入っていれば Call Display が実行 結果、テキストボックスが空白になりませんか。 実際に、エクセルのシートに テキストボックスに入力した内容を登録する部分のコードは どうなっているのでしょうか。
補足
ご回答ありがとうございます。 説明能力が乏しくご迷惑をおかけします_(._.)_ 例えば、4件登録したとします。 1件目~3件目を表示した状態で、新規ボタンを押すと正常に5件目を表示します。 4件目を表示した状態では、エラーが表示されます。 エラーは、以下のように表示されます。 「実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラーです。」 >エラーが出る操作をしてみて、最終行がきちんと表示されるか確認してみてください。 教えていただいた「MsgBox i」を追加してみました。 4件目を表示した状態で新規ボタンを押すと、「65537」と表示され、同エラーが表示されました。 1~3件目では、「6」と表示され、動作は正常でした。 >実際に、エクセルのシートに テキストボックスに入力した内容を登録する部分のコードは どうなっているのでしょうか。 コードは以下となっております。 ---------------------- Public Sub touroku() If Me.txt氏名 = "" Then MsgBox "氏名が入力されていないため登録できません。", vbOKOnly + vbExclamation, "Input Error!" Exit Sub End If With Worksheets("顧客データ") .Cells(i, 2).Value = Me.cmb部屋番号.Value .Cells(i, 3).Value = Me.txt氏名.Value .Cells(i, 4).Value = Me.txt生年月日.Value .Cells(i, 5).Value = Me.txtTEL.Value MsgBox "データを登録しました。" End With End Sub Private Sub cmd登録_Click() Call touroku End Sub ---------------------- 以上で、よろしいでしょうか? お時間がある時で結構ですので教えていただけると幸いです。
- imogasi
- ベストアンサー率27% (4737/17069)
質問に長々と我流のコードを書いているが、ピンとハズレではないか? ーー 「ユーーザーフォームから入力データを採たっとき、エクセルシートの最終(下)データ行の次の行をとらえたい」と表現したら姉妹でh内科。たった文章で1行ででしょう。 もし間違っていたら無視して。 それはVBAをやるものには常識のこと。 氏名が入る列をA列とすると Sub test01() Worksheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0).Select End Sub をやってみて。 質問ではSheet1のシート名はは顧客データらしいが。 ーー 質問にはエクセルのバージョンを書くこと。 標題にはエクセルVBAの言葉を入れること(読めば判るではいけない) 標題が利きたいポイントを表してない。文章・思考力の問題。
お礼
ご指摘ありがとうございます。 仰るとおりタイトルが不親切な内容でした。 今後、気をつけたいと思います。 エクセルのバージョンは2003です。
お礼
おー!出来ました!! 感謝、感謝です。 本当にありがとうございました。