Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
ユーザーフォームで、直前に入力したデータを複製
投稿日時: 21/05/31 19:06:11
投稿者: yurappy

お世話になります。
ユーザーフォームの事で教えてください。
 
現在、ユーザーフォームで18列分(A列〜R列)の値を入力して、A列の最終行に登録をするようにしています。
 
毎日、約50〜70件ほどの入力をするのですが、約半数ほどの件数でB列〜I列の値が前の行(直前に入力したデータ)と同じ値なのです。
 
例えば、ボタンをクリックすると前の行のB列〜I列の値(直前に入力したデータ)を複製するなどして現在のフォームに入力され、A列とJ列〜R列の値をその都度入力する様にできるものでしょうか?
もし、できるのでしたらサンプルのコードをご教授いただければ嬉しいです。
 
 * 時々、空白のセルを含んでいる場合もあります。
 * 列の値は、住所や電話番号で、書式が文字の列と数値の列の場合があります。
 
具体的に、どの様に質問内容を書けば良いのか難しく、稚拙な質問文ですみません。
 
よろしくお願いいたします。
 
 

回答
投稿日時: 21/06/01 06:25:56
投稿者: simple

どんなコントロールを使っているのか記載がないですが、
仮にテキストボックスだとすると、

   Me.Textbox1.Value = Cells(1,1).Value 
のような書き方です。
対象とする行の行番号を変数に持って、これを使えばよいでしょう。
 
ただし、この書き方だと複数のものの繰り返し処理が書きにくいので、
   Me.Controls("TextBox" & n ).Value = Cells(1,1).Value
のような書き方を利用するとよいでしょう。(n は 整数)
あとは繰り返しの構文を使うだけです。ご自分で工夫してみて下さい。
 
# なお、以下は個人の感想ですので、一般性はありません。
# 個人的な慣れの問題かもしれませんが、ワークシートに直接入力したほうが
# 楽じゃないかと思います。
# 質問のケースも、単にセル範囲のコピーペイストで済みます。マクロ化も簡単です。
# カーソル移動は便利ですし、入力結果全体の目視チェック能力、修正のしやすさ、
# いずれもワークシートに軍配があがりそうな気がします。
# 入力時のチェックも入力規則で間に合いそうです。
# しかし、どちらを選ぶかは個人の選択の問題です。

投稿日時: 21/06/01 08:49:13
投稿者: yurappy

simpleさま
 
ご親切にありがとうございます。
 
VBAと言うのが、まったくの初心者で、質問内容もちゃんと説明できずにすみません。
ユーザーフォームも、前任の方が作ってあったので、恥ずかしながらよくわかっていません。
 
 

引用:

どんなコントロールを使っているのか記載がないですが

 
入力するのは、テキストボックスです。
 
 
引用:

 Me.Textbox1.Value = Cells(1,1).Value
 
Me.Controls("TextBox" & n ).Value = Cells(1,1).Value
 

 
なんとか、ボタンを作ってそこに書いてみましたら、セルA1の値を表示してくれました。
ありがとうございます。
 
 
 
引用:

対象とする行の行番号を変数に持って、これを使えばよいでしょう。
のような書き方を利用するとよいでしょう。(n は 整数)

 
変数という言葉を調べてみましたが、よくわからず一つ前(1行上)なので −1 とか、やってみたのですが、そうすると、エラーばかりになってしまいました。
 
 
Cells(1,1). のところで、列の変え方はわかりましたが、一つ前(1行上)の変数というのはどの様にしたら良いのか、教えていただけますでしょうか。
列の数字を変えたのを試したら、動きました。
 
書いて試したコードの例
  Me.Textbox1.Value = Cells(1,1).Value
  Me.Textbox2.Value = Cells(1,2).Value
 
甘えて、お手数をおかけして申し訳ございません。
 
よろしくお願い申し上げます。

投稿日時: 21/06/01 09:07:34
投稿者: yurappy

申し訳ございません。
考え方が、甘かったのかもしれません。
  
一つ前(1行上)と考えるのではなくて、値が収まる列の最終の値と考えないと、いけないのでしょうか。
  
まだ登録の前なので、
 
 1 「 A列の最終行の値を取得したい 」
 
 2 「 値が収まる列の最終行の値を取得したい 」
 
と考えるのが、もしかすると正しいのでしょうか。
  
この辺りから、正しい考え方がわからずに、本当にごめんなさい。
 
いずれにしても、その様な難しいことがわからないのです。
  
ご教授、お願いいたします。

回答
投稿日時: 21/06/01 09:44:54
投稿者: Suzu

データアイテム 18個のうち、 8個が同じと言うことであれば、
当方も、シートで入力した方が簡単と思いますが、その辺りは yurappy がお決めになる話ですので。
 
さて、直接の回答ですが、
登録後に、B〜I に対応する テキストボックスの値を クリアしなければ良いと思いますよ。

投稿日時: 21/06/01 10:24:52
投稿者: yurappy

simpleさま
Suzuさま
 
ご親切にありがとうございます。
 
ネットを調べていたら「 最終行を変数に代入 」と言うのを見つけて、simpleさま から教わったコードに応用してみたら、思うような動きをいたしました。
感動しちゃいました!
 
ありがとうございました。
 
 
また、Suzuさま もアドバイスありがとうございます。
同じく、「 セルをクリアする 」で検索したら、いろいろとありましたので、試してやってみます。
 
いろいろとできて素敵ですが、難しそうで勉強をしてみます。
 
 
本当にありがとうございました。
 
また困った時には助けてください。
 
ありがとうございました。