[[20190615031905]] 『フォームから最終行への入力』(とーへんぼく) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『フォームから最終行への入力』(とーへんぼく)

以下の様なシートにフォームの新規ボタンを押して最終行へ入力したいのですが、フォームでC列の場所だけ入力して新規ボタンを押すと、最終行(5行目)ではなく、4行目に入力されてしまいます。

worksheet名(sheet1)

  A  B  C
1 あ  ア   
2    イ  伊 
3       宇 
4 お       ←4行目に入力されてしまう。  
5

フォームのコードは以下です。

Private Sub btn新規_Click()

    Dim lastRow As Long
    With Worksheets("sheet1")
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lastRow, 1) = Me.txtひらがな.Text
        .Cells(lastRow, 2) = Me.txtかたかな.Text
        .Cells(lastRow, 3) = Me.txt漢字.Text
    End With
  Unload Me
End Sub

ABCのどれかに空欄があっても最下行に入力するにはどうすればよいか教えてください。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


http://www.niji.or.jp/home/toru/notes/8.html

使えそうなのを探してください。
たぶん最後の例がよいです。

提示された例ではだめですが
実際のデータでは、1行目に見出しがあるなら

MsgBox Range("a1").CurrentRegion.Rows.Count

でも大丈夫です。

(マナ) 2019/06/15(土) 07:37


マナさん ありがとうございます。返信遅くなり申し訳ありません。

結論から言いますと一応できました。
1行目の見出しは基本的に入力するのですが、入力者が複数人いるため、ご紹介いただいたリンク先の最後の例を利用しました。

With ActiveSheet.UsedRange

    MaxRow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
End With

このコードをこの掲示板に記載してあるフォームに入力した場合は、うまく動作(最下行に入力)しましたが、実際に作成しているフォームに入力した場合は、うまく動作しませんでした。しかし、

MaxRow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row+1

のように+1を追加するとうまく動作しました。

コードの使用方法が間違っているのでしょうか?
初心者で勉強しながら作成しているので+1がある場合と無い場合の違いがよく分かりませんでした。

目的は達成しましたが、さらに知識を深める必要があると感じました。
ありがとうございました。

(とーへんぼく) 2019/06/19(水) 03:37


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.