- ベストアンサー
VBAのフォームでレコード番号を表示させる方法
- VBAを使用してエクセルのフォームにレコード番号を表示させる方法を教えてください。
- フォームに入力した個人情報をワークシートに反映させるために、個別のレコード番号を表示したいです。
- 関数を使用して行番号を表示させる方法を試しましたが、全てのレコードが同じ番号になってしまいます。他の方法でレコード番号を表示させることはできるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 関数を使いA2のセルからA101にかけて、=ROW(A2)-1、=ROW(A3)-1...と入れました。 関数を全て「=ROW()-1」としてみてはいかがでしょう。 =ROW() は、その関数が入っているセルの行番号を返します。A2セルの「=ROW()」と「=ROW(A2)」は、同じ値が返ってきます。 ただ、 > ワークシート上で行を削除すると、欠番は発生しないのですが、 > フォーム側で削除すると、セルに登録されている関数が消え、 > 欠番が発生してしまいます。 が気になります。手操作での削除を「マクロ記録」で記録し、現在のフォーム側の削除方法と同じか、見比べてみて下さい。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
A列のコードが数字の1~100であるという前提で。 「データを消去する」というボタンを用意したという前提で。 (消去したい)A列のコードがtextbox1に記入若しくは転記されている前提で。 private sub commandbutton1_click() ’TextBox1に該当する行を削除して上に詰める if me.textbox1 = "" then exit sub worksheets("シート名").cells(me.textbox1+1, "A").entirerow.delete shift:=xlshiftup end sub
お礼
ご回答ありがとうございます。 別の方法で無事解決することが出来ました。 教えて下さった方法でも希望する結果になり、大変勉強になりました。 分かりやすく解説もしてくださり、助かりました。 この度は、本当にありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
初心者には難しいことだ。フォーム入力時の、削除後の連続番号などに拘らず、シートデータ入力後にまとめて、シートの列に連続番号をセットする方法で逃げたらどうか。 フォームが入力用か表示用かも質問にはっきりかけてない。テキストボックスなどを使うと思うが、.laCODEとかで、ラベルコントロールを使っているのか。フォームに番号を直に表示しているのか。説明が十分でない。 シートの行列ーユーザーフォームーコントロールーシートにデータをセットするトリガーシートとフォームのデータ連動関係など質問には説明すべきです。 エクセルのシートで行削除に対処する(上から連番を振る、不利直す)のはROW()関数で簡単に出来る。 コントロールでは、エクセルシートの情況やデータベース(広い意味ではエクセルのシートはこれにあたる)の情況を検索して、それを番号に使うために、求めないと難しい。このデータベースでの登録済み件数や、番号としての最終番号(飛び飛びの場合など)も、なかなか初心者にはコードを作ることは難しいと思う。 ーー 1単位のデータをシートの行に書き出しているなら、エクセルシートで最終行を取ることは簡単に出来るので、その数に+1などをセットしてはどうだろうか。ただしユーザーフォームとシートでの入力を行き来することなど出来てますか。 ーー 但しシートの行削除を、ユーザーフォームに反映させるなども、大変高等なことと思うので、質問者はあきらめては。 シートの行削除を察知するイベントも、易しい方法は無いと思うから。 ーーー 色々やりたいことは初心者でも、直ぐ思いつくが、VBAレベルで実現できることは限られているのだ。 ソンも素もエクセルシートでフォームにセルの内容を表示するなんてのは、学習例題歯科ありえないのではないか。 シートに見えているのだから、そうする必要性が無い。
お礼
ご回答ありがとうございます。 ご指摘の通り、説明が不足しておりました。 結果、自分で設定した命令が邪魔をしていることに気付き解決することが出来ました。 この度はありがとうございました。
お礼
ご回答ありがとうございます。 「=ROW()-1]と入れ、マクロの登録で記録したものを削除ボタンに設定しているプロシージャに記載しましたが、結果同じでした。 しかし、laCODEに表示させた値をセルに反映するといった命令になっている事に気付き、その命令を削除したところ、希望している結果になりました。 今回のご指摘が、ヒントとなり大変助かりました。 本当にありがうございました。