dポイントプレゼントキャンペーン実施中!

VBAでデータ登録 データ検索をできるように現在模索しています。
VAB初心者の為、迷走しています^^:
惜しいところまでいってる気はするのですが・・遠い
お力添え頂ければ幸いです。

シート名〔登録〕
シート名〔台帳〕
①注文番号 を〔登録〕シートB1セルに記載するようにしています。
②必要データ入力後に登録コードで〔台帳〕シートへ横一列反映 
③検索用として別に検索コードでB1セルに注文番号入力で〔台帳〕から〔登録〕シートへデータ反映
④〔登録〕シートから〔台帳〕シートにデータ移行する場合は横1行で表示



問題点 
・B1セル注文番号が行参照の為、注文番号が数字に限られる
・〔台帳〕側シートをソートした場合、注文番号検索が行参照の為、別のデータが入ってしまう。
・注文番号を連番で取得しないと、〔台帳〕に空白行ができてしまう。

やりたいこと
・注文番号は数字+文字列にしたい! 例)12W001
・〔台帳〕シートへは空白行は詰めたい!列はきにしません!
・〔台帳〕シートをソートしても問題なく使えるようにしたい!

注文番号 B1セルに記載するようにしています。

下記、登録コード
Sub Test()
Set S1 = Worksheets("登録") ' S1 シート名
Set s2 = Worksheets("台帳") ' S2 シート名
R = S1.Range("B1").Value + 3
s2.Cells(R, 1).Value = R - 3
s2.Cells(R, 2).Value = S1.Range("D1").Value
c = 2
For i = 10 To 47 ' B10~47までデータ取得
For j = 1 To 7 'A~G列までデータ取得

c = c + 1
s2.Cells(R, c).Value = S1.Cells(i, j).Value
Next j
Next i

End Sub

下記、検索コード
Sub Test3()
Set S1 = Worksheets("登録")
Set s2 = Worksheets("台帳")
R = S1.Range("B1").Value + 3
S1.Range("D1").Value = s2.Cells(R, 2).Value
c = 2
For i = 10 To 47
For j = 1 To 7
c = c + 1
S1.Cells(i, j).Value = s2.Cells(R, c).Value
Next j
Next i



End Sub

A 回答 (1件)

まず聞くことが多すぎます。


この姿勢が解決を遅らせるんです。
全てを完璧にしなきゃプログラムって意味を持たないんですから
一件ずつ聞いてください。
でないと答える方も片手間なんだから気後れしますよ。

それに説明が足らないです。
全部訊くから書ききれないのもあるんだと思うけど。

>①注文番号 を〔登録〕シートB1セルに記載するようにしています。
登録なのに入力じゃなくて記載?
どういう意味?

>②必要データ入力後に登録コードで〔台帳〕シートへ横一列反映 
これは多分Keyとして登録コードってのがあるんだと思うけど
それを先頭にして1行にしてるんだろうね。
そこは正しいです。データは1件1行が鉄則ですから。

>③検索用として別に検索コードでB1セルに
これって登録のシートが検索も兼ねてるってこと?
じゃあその状態は今どっちのモードかどう判る様になっているの?
ね、説明すべき事って意外に多いでしょ?

>・B1セル注文番号が行参照の為、注文番号が数字に限られる
は?
行参照ってなんのこと?
台帳の注文番号の列を検索すればいいだけでは?

>・注文番号を連番で取得しないと、〔台帳〕に空白行ができてしまう。
なんだこれ、てことは注文番号の数字の行を使う発想?
大胆だな。
普通は登録時にもう一度注文番号の列を検索して
存在したら上書き確認、なければ最終行の次の行に
登録するものです。

後は、一つずつ解決しましょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
少し整理して個別質問に切り替えたいと思います。
ご指摘ありがとうございました!

お礼日時:2018/05/07 11:26

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