プロが教えるわが家の防犯対策術!

現在、受注登録の為の表をエクセルで作成しています。
登録しやすくする為、対象セルをいちいち探して登録しなくていい様にしたいと思っています。

内容
------------------------

A2 からA500まで取引先名称(かぶりあり)
B2 からB500 まで商品名(かぶりあり)
C1からAF1まで日付が入っています(同じ日付はない)

ユーザーフォームの2つのリストボックス上に取引先と商品名が表示されていて、
それぞれ選択すると ユーザーフォームのテキストボックス1に2つの値が表示されます。

ユーザーフォーム上の別のテキストボックス2に日付を入れて、また別のテキストボックス3に
受注数を入れてコマンドボタン(登録)で確定を押すと取引先・商品名(列)と日付(行)の交差するセルにその値を加算したい。

申し訳ございませんがご教授の程、宜しくお願いいたします。

A 回答 (2件)

マクロでイチイチと探して加算していくだけです。



private sub CommandButton1_Click()
 dim r as range
 dim r0 as string
 dim c as range

’以下ダラダラとデータチェック
 if me.textbox1 = "" then
  msgbox "SELECT LISTBOXES"
  exit sub
 end if

 if me.textbox2 = "" then
  msgbox "INPUT DATE"
  exit sub
 end if

 if me.textbox3 = "" then
  msgbox "INPUT NUMBER"
  exit sub
 end if

 set c = worksheets("Sheet1").range("1:1").find(what:=datevalue(me.textbox2), lookin:=xlformulas, lookat:=xlwhole)
 if c is nothing then
  msgbox "NOT MATCH IN DATE"
  exit sub
 end if

 set r = worksheets("Sheet1").range("A:A").find(what:=listbox1.value, lookin:=xlvalues, lookat:=xlwhole)
 if r is nothing then
  msgbox "NOT MATCH IN A"
  exit sub
 end if

’本番
 r0 = r.address
 do
 if r.offset(0, 1) = me.listbox2.value then
  with worksheets("Sheet1").cells(r.row, c.column)
  .value = .value + me.textbox3.value
  end with
  exit sub
 end if
 set r = worksheets("Sheet1").range("A:A").findnext(r)
 loop until r.address = r0

 msgbox "NOT MATCH IN B"
end sub
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
おかげ様で問題解決にいたりました!!

お礼日時:2013/05/03 14:55

まず、発想を変えてください。


データを日付(横方向)に伸ばしていくと必ず限界が来ます。
また、横移動もマウス操作が出来ませんよね。
パソコンは、データは縦へ蓄積すると使いやすくなるように
造られています。
それと、データを加算して保持することです。
一度、ミス入力をしてしまうと、どこでミスが起きたかさえ
わからなくなります。

一般的な方法
1、ユーザーフォームで取引先・商品名を選択、ボタンを押すと
2、データシートへ下方向にデータが記述されていく
3、必要に応じて、決まっているフォーマットの書式に表示されるような
  関数などを考える。

1、の際の日付も毎日、当日の業務ができれば、日付の入力も不要になりますよね。
データも常に最新の状態ということです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
データベースの様に縦に蓄積して関数で抜き出す事も検討&実際に試験してみたのですが・・・
商品点数が多く、関数を入れると大変重たくなってしまいます。
そこで、なるべく関数を使わず作成しようと思い至りました。
ただ、やはり入力間違い等の検証等にはデータシートが必要となりますので、色々と検討してみたいと思います。

お礼日時:2013/05/03 14:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!