ここから本文です

至急ご回答お願い致します。 マクロのユーザーフォームの利用についてです。 ...

mon********さん

2019/6/920:40:09

至急ご回答お願い致します。
マクロのユーザーフォームの利用についてです。

添付の画像をご覧ください。
A列に都道府県、B列に人口数が入力されたエクセルデータと思ってください。

ユーザーフォームは以下のようにデザインしています。
TextBox1(都道府県)とTextBox2(人口数)
CommandButton1(終了)とCommandButton2(計算)

TextBox1(都道府県)に東京と入力し、CommandButton2(計算)
をクリックしたら、東京の人口数の集計結果がTextBox2(人口数)に表示される。
TextBox1(都道府県)に大阪と入力し、CommandButton2(計算)
をクリックしたら、大阪の人口数の集計結果がTextBox2(人口数)に表示される。

CommandButton1(終了)をクリックすればユーザーフォームを閉じる。

上記のユーザーフォームを作りたいと思っております。
if文では、DO untilを使って、1列ずつSheet1のA列がブランクになるまで
計算を繰り返すという構文を使用したいです。
(実際は1,000列以上のデータに対応させたいため)

ご協力をお願い致します!

CommandButton2,TextBox2,TextBox1,CommandButton1,都道府県,TextBox2.Value,TextBox1.Value

閲覧数:
45
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2019/6/922:08:38

>1列ずつSheet1のA列がブランクになるまで
>計算を繰り返す
1行ずつですよね?
縦計を出したいのですよね?

>実際は1,000列以上のデータに対応させたい
10,000件もグルグル回していたら、あまりに非効率で、笑われますよ。
SUMIF関数を起動すればいいのでは?

Private Sub CommandButton2_Click()
TextBox2.Value = WorksheetFunction.SumIf(Range("A:A"), TextBox1.Value, Range("B:B"))
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub

  • 質問者

    mon********さん

    2019/6/922:30:43

    ご返信ありがとうございます。
    はい、1行ずつワードを探して対応する数値の合計を
    集計したいと思っております。

    実際のデータは膨大でして、出来れば
    Do loop until や if文を使用したいと思っております。

    ご協力宜しくお願い致します。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

pro********さん

2019/6/922:33:30

同じワークシートにピボットテーブルを作成し、そこからデータを持ってくればよいと思いますよ。
下記のサンプルはセルD1に都道府県別の人口の合計を集計するピボットテーブルを作成し、そこからデータを持ってくるコードです。

Private Sub CommandButton1_Click()
Dim lng人口 As Long
Dim str都道府県 As String

str都道府県 = """" & TextBox1.Value & """"
lng人口 = Application.Evaluate("GetPivotData(""人口"", $D$1, ""都道府県""," & str都道府県 & ")")
TextBox2.Value = lng人口
End Sub

まぁEvaluteメソッドなんて反則技を使う汚いコードですけど、とりあえず動きます。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる