ユーザーフォームを作成して、出荷実績を投入しようとしています。
現在、ユーザーフォームを作成して、
上から以下のようにボタンが並んでいます。
(1)コンボボックス1
商品コードと商品名を選択する。
(2)テキストボックス1~7
地域ごとの出荷実績を投入する。
(3)コマンドボタン1
決定→入力
(4)コマンドボタン2
終了
そして、以下3つの問題点がありますが、どのようにVBAを記述したら良いのか、わかりません。
a.コンボボックス1に表示される商品を商品コード
(アルファベット)と商品名で改行したい。
つまり「折り返して全体を表示する」ことは出来ないでしょうか。
b.「AAAA~」は5行目・「CCCC~」は7行目 といった
ように、商品ごとに値を投入する行を変更したい。
c.テキストボックス1~6の内容の合計が自動で(入力している
最中に)テキストボックス7に表示されるようにしたい。
次のようなVBAは記述出来たのですが、上記3つの要素を加えるには
どのようにしたらよいのか、教えていただけないでしょうか?
ちなみに入力する順番は次のようになっています。(設定済み)
M4→L4→J4→K4→H4→I4
→M5→L5→J5→K5→H5→I5
-------------------------------------------------------------
’フォームを表示させる。
Sub formdsp()
UserForm1.Show
End Sub
’フォーム内容
Dim cnt As Integer
Private Sub Combobox1_Change()
End Sub
'入力ボタン
Private Sub CommandButton1_Click()
With ActiveSheet
.Cells(cnt, 13) = TextBox1.Text
.Cells(cnt, 12) = TextBox2.Text
.Cells(cnt, 10) = TextBox3.Text
.Cells(cnt, 11) = TextBox4.Text
.Cells(cnt, 8) = TextBox5.Text
.Cells(cnt, 9) = TextBox6.Text
.Cells(cnt, 15) = TextBox7.Text
cnt = cnt + 1
.Cells(cnt, 13) = Activate
End With
UserForm1.TextBox1.Text = ""
UserForm1.TextBox2.Text = ""
UserForm1.TextBox3.Text = ""
UserForm1.TextBox4.Text = ""
UserForm1.TextBox5.Text = ""
UserForm1.TextBox6.Text = ""
UserForm1.TextBox7.Text = ""
UserForm1.Combobox1.Text = ""
UserForm1.TextBox1.SetFocus
End Sub
'終了ボタン
Private Sub CommandButton2_Click()
Unload Me
End
End Sub
'コンボボックス
Private Sub userform_initialize()
cnt = 4
With UserForm1.Combobox1
.AddItem "AAAA 11111111111"
.AddItem "BBBB 22222222222"
.AddItem "CCCC 333333333"
.AddItem "DDDD 444444"
.AddItem "EEEE 5555555555"
.AddItem "FFFF 666"
.AddItem "GGGG 7777777"
.AddItem "HHHH 88888"
.AddItem "IIIII 999999999"
.AddItem "JJJJ 0000000000000"
.AddItem "KKKK 1111"
.AddItem "LLLL 222222"
.AddItem "MMMM 3333"
End With
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
M列やL列にデータが入ることは,最初のご質問のマクロにそう書いてありますので判ります。
そして同様に,あなたが掲示されたマクロにはもう一つ,
再掲:
>入力するごとにシートの入力行を+1ずつしている
という事が書いてあったので,お尋ねしたのです。
追加ご質問:
>コンボボックスで選択された商品の情報を参考に
>数値を入力するセルの行を変えたい
転記する行を+1ずつ下げていくのはもう全くやめにして,コンボボックスでこれを選んだら何行に転記すると,完全に固定してしまいたいという事ですか。
それならそれでお話は簡単で,
#コンボボックスに,各データごとに何行に入れるというデータも持たせておく手もありますが
簡単にはまず今のcnt + 1している行は消して+1行ずつ下げるのは全くやめにして,
その代わりに例えば
select case combobox1.text
case "AAAA 11111111111"
cnt = 4
case "EEEE 5555555555"
cnt = 8
case else
end select
のように「コンボボックスでこのデータが選ばれているから転記先は4行目だ8行目だ」と数字を入れるのを,入力ボタンのマクロに書き込んでおけば良いです。
【重要な注意】
もちろん上記に書いたのはAAAAとEEEEの2つだけのサンプルですから,これだけコピーしても当然駄目です。もっとあなたが実際にコンボボックスに詰めた全ての全部の上から下までのデータについて,漏れなくマクロを書き足してくださいね。
>上のVBAを私が作成したVBAにそのまま加えてみたら…
当たり前です。
再掲:
>3.テキストボックスの 『1から6それぞれに』 afterupdateなどを取り付けて,
>具体的に、どのように記入したらよいのか教えていただけないでしょうか。
具体的なサンプルマクロは既にお話ししました。
まぁ,テキストボックス1で上手く動くのが確認できたので,まずは良しとしましょう。
同じ書きぶりで2から6についても作成してください。
折角ここまでご自分で作成されたのですから,今更丸投げで人に代わりに全部全部全部作って貰ったマクロを美味しくいただいて終わりにするんじゃなく,もうちょっとご自分でもね?
そのために,わざわざイベントの種類や調べ方もお話ししましたが,その様子ですと全部スルーだったのでしょうね。きっと。
この回答への補足
TextBoxのイベントを確認しても、どのように書式を設定したら
よいのか理解できませんでした。
マクロを使い始めて数か月。
独特のマクロの記述方法を理解できていません。
詳しく紹介されている良いサイトや本などはありませんか?
No.1
- 回答日時:
1.コンボボックスの表示を折り返すことは出来ません。
2.今はどうやら入力するごとにシートの入力行を+1ずつしているようですが,ちなみに「5行目」「6行目」とはもうちょっとエクセル上の姿としてどこの事を言ってるのですか?
文字通りにとらえるとcntを+1するのではなく「ある行数単位」ずつ足し上げていき,「何々の時はcnt+5行」「これこれの時は+7行」のように作り込んでいくような事かなと思いますが。
3.テキストボックスの1から6それぞれにafterupdateなどを取り付けて,逐一合計を取ってはテキストボックス7に記入していきます。
簡単なサンプル:
private sub TextBox1_AfterUpdate()
dim i
dim res
for i = 1 to 6
res = res + val(me.controls("TextBox" & i).value)
next i
textbox7 = res
end sub
その際,実際には
>自動で…表示されるようにしたい
「自動」ってもうちょっと具体的に一体何をどんなタイミングでどうしたときにそうしたいのかに応じて,どのイベントを使うのか選びます。
それこそテキストボックスに「1文字書き入れるたびに」更新をかけるような事だって,それが必要なら出来ます。
具体的に一体何が出来るのか,オブジェクトブラウザでTextBoxを見て配下のイベントを確認し,それぞれのヘルプを熟読して検討してみて下さい。
この回答への補足
>2.今はどうやら入力するごとにシートの入力行を+1ずつしているようですが,ちなみに「5行目」「6行目」とはもうちょっとエクセル上の姿としてどこの事を言ってるのですか?
文字通りにとらえるとcntを+1するのではなく「ある行数単位」ずつ足し上げていき,「何々の時はcnt+5行」「これこれの時は+7行」のように作り込んでいくような事かなと思いますが。
値を入力する列は以下のようにしています。
(1) M(テキストボックス1の値)
(2) L(テキストボックス2の値)
(3) J(テキストボックス3の値)
(4) K(テキストボックス4の値)
(5) H(テキストボックス5の値)
(6) I(テキストボックス6の値)
(7) O(テキストボックス7の値)
そして、"AAAA 11111111111"が選択されたら
(1) M4(テキストボックス1の値)
(2) L4(テキストボックス2の値)
(3) J4(テキストボックス3の値)
(4) K4(テキストボックス4の値)
(5) H4(テキストボックス5の値)
(6) I4(テキストボックス6の値)
(7) O4(テキストボックス7の値)
そして、"EEEE 5555555555"が選択されたら
(1) M8(テキストボックス1の値)
(2) L8(テキストボックス2の値)
(3) J8(テキストボックス3の値)
(4) K8(テキストボックス4の値)
(5) H8(テキストボックス5の値)
(6) I8(テキストボックス6の値)
(7) O8(テキストボックス7の値)
といったように、列の順番は固定して、
コンボボックスで選択された商品の情報を参考に
数値を入力するセルの行を変えたいと思っています。
>簡単なサンプル:
private sub TextBox1_AfterUpdate()
dim i
dim res
for i = 1 to 6
res = res + val(me.controls("TextBox" & i).value)
next i
textbox7 = res
end sub
●上のVBAを私が作成したVBAにそのまま加えてみたら
何回かテキストボックス1の値がテキストボックス7の合計欄に
入りました。しかし、毎回、値が合計欄に入るわけではなく、
テキストボックス2~6の値も反映されません。
サンプルの「TextBox1」の数値を2~6まで変えて、計7つの
サンプルをVBAに加えてみても、合計欄に結果が反映されません。
具体的に、どのように記入したらよいのか教えていただけないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件に応じてコンボボックスの...
-
エクセルVBA コンボボックスで...
-
ActiveXコントロールのコンボボ...
-
ドロップダウンリスト
-
コンボボックス 選択後のカー...
-
Dcount関数が表示されない。
-
Access レポート印刷するときに...
-
YahooのIDがロックされてしまい...
-
レコードを保存するコード ア...
-
エクセルをACCESSのレポ...
-
passwordが入れられません・・・・
-
アクセスで数値型のフィールド...
-
ACCESS フォームをそのまま印刷...
-
アクセスで特定のレコードのみ...
-
データベースのINT型項目にNULL...
-
ACCESSでコントロールソースの変更
-
Accessのフォームで開く時のウ...
-
フィルタ後のフォームの件数の...
-
サブフォームに対してGoToRecor...
-
アクセスのレポートで同ページ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンボボックス 選択後のカー...
-
条件に応じてコンボボックスの...
-
access 検索結果をテキストボッ...
-
Dcount関数が表示されない。
-
ActiveXコントロールのコンボボ...
-
VBA コンボボックスの重複削除
-
CrystalDiskinfoの使い方!HDD/...
-
ユーザーフォーム上にあるコン...
-
Accessのコンボボックス内項目...
-
Accessで、コンボボックスから...
-
Accessで家計簿を作っているの...
-
エクセルVBA コンボボックスで...
-
アクセス2000で2回目の検索がで...
-
ACCESS2003のコンボボックスで...
-
Access 2016 のプロパティ(プル...
-
フォームのプロパティを設定し...
-
エクセルVBAユーザーフォー...
-
ACCESS VBA で複数項目検索にテ...
-
ユーザーフォームを使ってのマクロ
-
YahooのIDがロックされてしまい...
おすすめ情報