[[20060720232640]] 『横長の表』(しし丸) ページの最後に飛ぶ

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

 

『横長の表』(しし丸)

一行一データで、横にかなり長い表があります。
表の左端の列は基本データ(A〜C)で、真ん中から右は変更や追加をしていくデータ(D〜Z)です。


  A     B     C     D    E    F    G…Z

1 個人番号  個人名  性別  利用日@ 利用額@ 利用日A

2 001    あああ   男   4月1日  1万円  6月1日

3 002    いいい   女   4月5日   5千円  6月30日


:   

かなり入力に手間取るので入力しやすくするには、
CとDの間で、ウインドウ枠の固定をし、
ツール→オプション→入力方向右で、
ENTERキーを押した時の動きをかえる方法がありますが、
もっと簡単にユーザーフォームを使い、一画面で入力したいと思っています。

そこで入力用のダイアログを作成し、ユーザーフォームに

Private Sub addbutton_Click()

'顧客情報を追加する

'データをセルに入力する

Range("顧客一覧").Cells(InsertRow, 1) = 個人番号(以下、オブジェクト名)

Range("顧客一覧").Cells(InsertRow, 2) = 個人名

Range("顧客一覧").Cells(InsertRow, 3) = 性別

Range("顧客一覧").Cells(InsertRow, 4) = 利用日@

Range("顧客一覧").Cells(InsertRow, 5) = 利用額@

Range("顧客一覧").Cells(InsertRow, 6) = 利用日A

'[顧客の追加]ダイアログを閉じる

Unload AddCustomerDlg

End Sub

Private Sub UserForm_Click()

End Sub

こんな感じて、本を読みながら、見よう見真似で分からずにつくってみました。
元々 表の大きさが限定されており、シートの保護がかかっているもの解除、最下行を挿入して、その部分に入力、その後シートの保護ーーという、一連の流れのもので、
こんな感じにするのかなと思って改造しましたが、
全然ダメでした…。

今考えているのは、選択しているセル(ActiveCell)の行(Row)で、フォームを呼び出し、入力ボタンを押すと、その行に入力データが転記されるものです。

本当に、何も分かっていませんが、なんとかVBAを使って使いやすいものを作りたい
と思っています。


 どの部分がご質問なのでしょうか?
 (やっちん)


 えーと、それまでの過程をダラダラ書いてしまいましたが…(汗)
要するに最後の部分
『選択しているセル(ActiveCell)の行(Row)で、フォームを呼び出し、フォームに
入力すると、その行に入力データが転記されるには、どうすれば良いか?』です。
よろしくお願いします。
 (しし丸)

 それでどの部分がわからないのでしょうか?全部ですか?
 機能で分けて考えると
 1.ユーザーフォームの表示。(何をすると表示する?)
 2.シートからユーザーフォームへのデータの設定。
 3.ユーザーフォームからシートへのデータの設定。
 どれがわかりませんか?
 (やっちん)

 すいません。全部あいまいな知識ですが、しいていうなら
 3.がよくわかっていない所だと思います。
ユーザーフォームからシートに転記する部分です。

例でいうと、
基本データ(A〜C)のみがあらかじめ入力されており、
その後、横に追加していく場合(D〜Z)、1行目の方(あああ)のデータを入力するために、例えばA2セルを選択していた場合(2行目)、フォームを表示すると、(あああ)のデータが入力できるようにしたいのですが…


 サンプルを載せます。ユーザーフォームのコードです。
 Private Sub UserForm_Activate()
    TextBox1.Text = Cells(ActiveCell.Row, 1).Value
    TextBox2.Text = Cells(ActiveCell.Row, 2).Value
    TextBox3.Text = Cells(ActiveCell.Row, 3).Value
 End Sub

 Private Sub CommandButton1_Click()
    Cells(ActiveCell.Row, 1).Value = TextBox1.Text
    Cells(ActiveCell.Row, 2).Value = TextBox2.Text
    Cells(ActiveCell.Row, 3).Value = TextBox3.Text
    Me.Hide
End Sub

 Private Sub CommandButton2_Click()
     Me.Hide
 End Sub

 ユーザーフォームにテキストボックスが3つあって
 それぞれA列からC列までの内容をそのテキストボックスに表示します。
 ボタンは2つありCommandButton1を押すと
 テキストボックスの内容をシートに設定してユーザーフォームを閉じます。
 CommandButton2はキャンセルボタンで何もせずにユーザーフォームを閉じます。

 これを参考に改造してみてください。
 わからないことがあれば、また質問してください。
 (やっちん)


やっちんさん ありがとうございます!!
できました!!感動です。ほんとにありがとうございます!!!

ついでの質問をします。
フォームよって転記されたデータが、ちゃんと入力されているか確認するために
入力した内容をフォームで確認することは可能でしょうか??(2.の質問になるのかな?)

要するに、今回教えて頂いたことが
フォーム→シートへの転記 でしたが、
フォーム→シートに入力されているデータの表示 ということです。

すいません、連続の質問になりますが宜しくお願いします。
(しし丸)


 ユーザーフォームに入力してシートへ転記後 
 もう一度ユーザーフォームを表示するとテキストボックスに表示されませんか?
 更新可能な状態で表示するのは気になりますけどね。

 更新するときに確認メッセージを出すようにするとか入力できないようにするとか
 対処方法は色々あるでしょうね。
 (やっちん)


たしかに、入力済データの行でフォームを表示させると、確認できました!
ごめんなさい。確認せずに質問してしまい…できないものと思い込んでました…
それだけに、とっても嬉しいです!!

更新時の確認メッセージとか、また色々勉強します。
やってみて分からなければ、また助けをお願いするかもしれません。
ありがとうございました!!!
(しし丸)


コメント返信:

[ 一覧(最新更新順) ]


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