
支店毎に売上集計を行うVBAを現在作成中です。
sheet3に支店名をリストにしており、ユーザーフォームのテキストボックスとコマンドボックスを配置し、テキストボックスに支店名を入力してコマンドボックスを押す事でsheet1の決まったセルに商品毎の金額の合算が出る様にしたいと考えています。
金額の集計表は別にあり、列の一番目に支店名、2番目に商品名、3番目に取引内容が反映されております。
今回ご相談させて頂きたいのは、ユーザーフォームのコマンドでどの様に入力したら良いかという事です。下記にユーザーフォームで現在までに入力した内容を記載します。
Sub 売上集計()
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
Dim Result As Long
For i = 1 To 100
GroupName = Sheets(3).Cells(i, 1).Value
Range("A1").AutoFilter field:=1, Criteria1:=Array("" & GroupName & ""), Operator:=xlFilterValues
Range("A1").AutoFilter field:=2, Criteria1:=Array("商品名A"), Operator:=xlFilterValues
Range("A1").AutoFilter field:=3, Criteria1:=Array("売上", "返品"),
Operator:=xlFilterValues
result1 = WorksheetFunction.Subtotal(9, Range("BF:BF"))
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
End Sub
上記希望内容についてユーザーフォームのコマンドに入力すべき内容をご存知の方、何卒ご教示願います。
No.2ベストアンサー
- 回答日時:
>ユーザーフォームのテキストボックスとコマンドボックス
とありますが、文脈からフォームコントロールの事の様に思えます。
リストを用意してあるなら、入力規則で十分と思いますがいかがでしょうか。
Sheet1に入力規則から選択するセルと、結果を表示するセル
Sheet2にオートフィルタをかけるデータ
Sheet3にリストがあるものとします。
☆標準モジュール
Sheet3のリストに動的な名前をつけ、Sheet1のB2に入力規則を設定します。
Sub makeNameAndValidation()
ActiveWorkbook.Names.Add Name:="mylist", RefersToR1C1:="=OFFSET(Sheet3!R1C1,0,0,COUNTA(Sheet3!C1),1)"
With Sheets(1).Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=mylist"
End With
End Sub
☆Sheet1モジュール
オートフィルタを掛けるところは、試験のため簡略化しています。
お気に召したらご自分でアレンジして下さい。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim result1 As Long
Dim sh As Worksheet
Dim GroupName As String
GroupName = Target.Value
If Intersect(Target, Range("B2")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set sh = Sheets(2)
With sh
If .AutoFilterMode Then
.AutoFilterMode = False
End If
'ここは適当な範囲に合わせて試験したもの
'-----------------------------------------------------------
.Range("A1").AutoFilter Field:=1, Criteria1:=GroupName
result1 = WorksheetFunction.Subtotal(9, .Range("B:B"))
'-----------------------------------------------------------
Me.Range("A2").Value = result1
If .AutoFilterMode Then
.AutoFilterMode = False
End If
Application.ScreenUpdating = True
End With
End Sub
※本当にユーザーフォームを使いたいという場合は、補足して下さい。

No.1
- 回答日時:
>支店毎に売上集計を行うVBAを現在作成中です。
>sheet3に支店名をリストにしており、
>ユーザーフォームのテキストボックスとコマンドボックスを配置し、
意味不明、
ユーザーフォームそのものが存在するのか
ユーザーフォーム等で使用するテキストボックス等を Sheet3 に貼り付けているのか
そもそも、コマンドボックスとは何か?
コンボボックスなのか、コマンドボタンなのか
それとも、コマンドボックスというコントロールが存在するのか?
>sheet1の決まったセルに商品毎の金額の合算が出る様にしたいと考えています。
意味不明、
最初、支店毎に~と言っていて、
テキストボックス等に支店を入力するとか書いているのに、結果は商品毎
>今回ご相談させて頂きたいのは、
>ユーザーフォームのコマンドでどの様に入力したら良いかという事です。
意味不明、
コマンドって何?
例えば、"A" って打ったら、○○支店 みたいな事がコマンドだと思うけど
そもそも、支店の数や名称は決まっているのでしょうから
テキストボックスでなく、コンボボックスで選ばせれば良いだけではないかと
思うのだが、なぜ、テキストボックスを使用して、コマンド入力させるのか
結局なにがしたいのか、何を質問したいのか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
Tera Term Proに関する質問です。
-
バッチファイルでキー操作を行う。
-
別のユーザーフォームのコマン...
-
【Teratermマクロ】文字列の一...
-
テキストボックスが未入力のと...
-
dd for windowsで教えてください
-
vbaで座標を指定してコマンドプ...
-
CreateProcessでの実行ファイル...
-
【PC98x1/国民機】N88 BASIC 6.1
-
PowerShellにおけるコマンドの...
-
viの行削除コマンドを教えて下...
-
VB6で、コマンドボタン自身の色...
-
コマンドプロンプトですべてのU...
-
Lotus Notes R5 ...
-
VBユーザーフォームで時間入力
-
コマンドキーがないんですけど...
-
DOSコマンドでポートから受信
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
バッチファイルでキー操作を行う。
-
VBユーザーフォームで時間入力
-
別のユーザーフォームのコマン...
-
Tera Term Proに関する質問です。
-
dosバッチ起動後、画面を閉じな...
-
PowerShell実行結果をデスクト...
-
コンボボックス(最終行取得)
-
コマンドプロンプトですべてのU...
-
ルーターにつながっている全て...
-
TEXの表の位置が・・・
-
デフォルトのショートカットキ...
-
makeコマンドのエラー
-
【Teratermマクロ】文字列の一...
-
DOSコマンドでポートから受信
-
EEPROMのデータの初期化について
-
C#でローカルユーザーやグルー...
-
HEXから元に戻すには
おすすめ情報