いつもお世話になります。
WIN8.1 エクセル2013 です。
現在下記のマクロでユーザーフォームにてデーターベースのシートに入力しています。
この時ご指導を仰ぎたいのは
'納品日 ~ 単価1 迄は最低限入力します。
そのあとの それぞれの 2 3 4 5 はその都度変化します。
一番短い入力(最低限の入力) '納品日 ~ 単価1 で単価1を終えたときの今現在は
エンターキーにて2~5を入力コマンドボタン迄飛ばします。
2 3 4 も同様の操作をします。
特に5のときはその必要性はありません。
入力の必要のないテキストボックスを入力のコマンドボタンまで飛ばすのに何かいい方法はないでしょうか。
参考
Private Sub CommandButton1_Click()
'
y = 3
Do While Cells(y, 3) <> ""
y = y + 1
Loop
Cells(y, 3) = TextBox1.Text '納品日
Cells(y, 4) = TextBox2.Text '顧客コード
Cells(y, 5) = TextBox3.Text '作業担当
Cells(y, 6) = TextBox4.Text '件名
Cells(y, 7) = TextBox5.Text '作業内容1
Cells(y, 8) = TextBox6.Text '数量1
Cells(y, 9) = TextBox7.Text '単価1
Cells(y, 10) = TextBox8.Text '作業内容2
Cells(y, 11) = TextBox9.Text '数量2
Cells(y, 12) = TextBox10.Text '単価2
Cells(y, 13) = TextBox11.Text '作業内容3
Cells(y, 14) = TextBox12.Text '数量3
Cells(y, 15) = TextBox13.Text '単価3
Cells(y, 16) = TextBox14.Text '作業内容4
Cells(y, 17) = TextBox15.Text '数量4
Cells(y, 18) = TextBox16.Text '単価4
Cells(y, 19) = TextBox17.Text '作業内容5
Cells(y, 20) = TextBox18.Text '数量5
Cells(y, 21) = TextBox19.Text '単価5
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox9.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
TextBox12.Text = ""
TextBox13.Text = ""
TextBox14.Text = ""
TextBox15.Text = ""
TextBox16.Text = ""
TextBox17.Text = ""
TextBox18.Text = ""
TextBox19.Text = ""
TextBox1.SetFocus
End Sub
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
パソコンに、今回は作業内容が2件と云う事とどうやって知らせる事が出来るでしょうか。
キー操作だけで行うのであれば、作業内容5までエンターキーを押すしかないと思います。
もし、2件で終了であれば、マウスを使って入力ボタンを使って、パソコンに終わりを知らせる事になります。
後は、考え方です。全てをキーボード入力にするか
マウス操作にするかです。
時代の流れで云えば、マウス操作です。
顧客コード、件名、作業内容などすべてのリストを準備します。
TextBoxも全て、コンボボックスにします。
操作を全てマウスにしてしまえば、今回の問題も解決すると思います。
他、先に回答しましたように、作業内容を1件入力したら、
そのたびに入力ボタンへ移動して、エンターキーを押して登録させていくかですね。
注
先に回答に
RnageとRangeのスペルミスが多数ありますので編集の上、ご確認ください。
No.3
- 回答日時:
NO,1です。
コメントのDBであることはわかって上ですが。請求書を作成するにあたっても、縦方向にデータを持った方が良いと思います。
現在のDBの構成をそのままとして
ユーザーフォームは
納品日
顧客コード
作業担当
件名
作業内容
数量
単価
だけのテキストボックスを配置
ボタンを押して、最終行が同じ件名であれば、右側に移動して登録する方法は如何でしょうか
Private Sub CommandButton1_Click()
if Rnage("F" & Rows.Count).End(Xlup).Value=TextBox4.value Then
y=Rnage("C" & Rows.Count).End(Xlup).Row
x=Range("C" & y).End(xlToRight).Column
Else
y=Rnage("C" & Rows.Count).End(Xlup).Row+1
X=6
End If
Cells(y, 3) = TextBox1.Text '納品日
Cells(y, 4) = TextBox2.Text '顧客コード
Cells(y, 5) = TextBox3.Text '作業担当
Cells(y, 6) = TextBox4.Text '件名
Cells(y, x+1) = TextBox5.Text '作業内容
Cells(y, x+2) = TextBox6.Text '数量
Cells(y, x+3) = TextBox7.Text '単価
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox5.SetFocus
End Sub
No.2
- 回答日時:
NO,1です。
何度もすみません。TextBox5.Text = ""
は
TextBox5.Text = TextBox5.Text + 1
だと便利と思います。
No.1
- 回答日時:
> 入力の必要のないテキストボックスを入力のコマンドボタンまで飛ばすのに何かいい方法はないでしょうか。
一般的には、
C D E F G H I J
納品日 顧客コード 作業担当者 件名 作業番号 作業内容 数量 単価
と云った様に作業番号の列(G)を準備して、縦方向にデータを登録していきます。
Private Sub CommandButton1_Click()
y=Rnage("C" & Rows.Count).End(Xlup).Row+1
Cells(y, 3) = TextBox1.Text '納品日
Cells(y, 4) = TextBox2.Text '顧客コード
Cells(y, 5) = TextBox3.Text '作業担当
Cells(y, 6) = TextBox4.Text '件名
Cells(y, 7) = TextBox5.Text '作業番号
Cells(y, 8) = TextBox6.Text '作業内容
Cells(y, 9) = TextBox7.Text '数量
Cells(y, 10) = TextBox8.Text '単価
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox5.SetFocus
End Sub
の様にします。
件名も重複を避けるために、別途 件名番号を追加した方が良いかと思います。
y = 3
Do While Cells(y, 3) <> ""
y = y + 1
Loop
も
y=Rnage("C" & Rows.Count).End(Xlup).Row+1
で最終行の番号が得られます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
はじめまして。私、配管業を個...
-
一式という言葉の使い方
-
仕入単価
-
製造業に勤めています。 外注さ...
-
積算 高所作業車 建築
-
外構見積もりましたが、どうで...
-
Access columnプロパティについて
-
公共建築工事(設備)の積算に...
-
天井開口費の見積について
-
砕石の価格を教えてください。
-
内装屋やクロス職人の会社は儲...
-
VBAを使用した、複数条件での集計
-
事務所ビルの電気料金について...
-
使い捨ての歯ブラシについて
-
食材の単価と価格の違いを教え...
-
工事現場の騒音は泣き寝入りす...
-
土日も近所の新築工事の騒音で...
-
工事前の挨拶がない業者さんへ
-
不審者?
-
材質 ST
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
はじめまして。私、配管業を個...
-
製造業に勤めています。 外注さ...
-
初級SE、中級SE、上級SEはどの...
-
天井開口費の見積について
-
一式という言葉の使い方
-
事務所ビルの電気料金について...
-
公共建築工事(設備)の積算に...
-
仕入単価
-
1工数1人工
-
積算 高所作業車 建築
-
卸単価の95掛けってどうゆう意...
-
外構見積もりましたが、どうで...
-
CIF単価→FOB単価の算出の仕方を...
-
リストボックスの項目に、他の...
-
食材の単価と価格の違いを教え...
-
ACCESSのレコード順番の入れ替え
-
出精値引の意味は?
-
売上、客数、単価から買い上げ...
-
独占禁止法、下請法、優越的地...
-
2024年 職人不足で単価が上がる...
おすすめ情報
早速のご指導をいただきありがとうございます。
小生の説明不足で誠に申し訳ありません。
ユーザーフォームからDBのシートに入力して請求書に自動的に入力するようにしています。
一つのタイトルに5件分を用意しています。
例は一つのタイトルとして2件を示しました。DBシートには最大でC列~U列です。
今回の質問はタイトル部分に対して詳細部分が最低は1件ですが2件から5件の範囲です。
再度ご指導いただけるとうれしいです。
例
1
'納品日 C列 9/6
'顧客コード D列 0041
'作業担当 E列 高橋
'件名 F列 マフラーの破損修理
2
'作業内容1 G列 溶接修理
'数量1 H列 5
'単価1 I列 1000
3
'作業内容2 J列 分解取付
'数量2 K列 2
'単価2 L列 10000
試させていただきました。
納品日 顧客コード 作業担当 件名 作業内容 数量 と順次、単価のときにエンターキーを押したとき
かたまりその結果警告が出ます。
下記の構文に黄色
Private Sub CommandButton1_Click()
下記は 「Range」 にSubが定義されていません。
if Rnage("F" & Rows.Count).End(Xlup).Value=TextBox4.value Then
ご指導の協力感謝します。
タイトル的は同一として
詳細な内容、
作業内容 数量 単価がそれぞれ2件あったとします。
例えば
納品日 顧客コード 作業担当 件名 (タイトル的)に入力後、
詳細部分の1件目を 作業内容 数量 単価をコマンドボタンの入力
詳細部分の2件目を 作業内容 数量 単価をコマンドボタンの入力
ここまではうまくできました。
詳細部分の2件を終えたとき新たに入力するとき
何かの方法で例えば TextBox1.SetFocus のように
納品日 のテキストボックス1に戻らないでしょうか。
お忙しいところをご指導賜りありがとうございました。
私なりに勉強して再度頑張ってみます。
その時はまたお世話になるかもしれませんがよろしくお願いします。