• ベストアンサー

Excel 集計フォーム

ユーザーフォームを使用して、部署1と部署2にチェックが入っていて数量欄に数字が入っている場合、赤枠のところに入力されていく仕組みを作りたいのですが、コードの書き方などお教えいただけないでしょうか。 色々調べているのですが検索の仕方が悪いのか解決できず…。 お手数をおかけ致しますが、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1645/2495)
回答No.1

TextBoxが上から1,2,3でCheckBoxはCheckBox1として書き込みボタンがCommandButton1とした場合です。 D列は注文品ごとの累計だと考えています。 部署1だけのコードですので、部署2は同じような感じで追加してください。 Private Sub CommandButton1_Click() Dim LastRow As Long If Me.CheckBox1 = True Then LastRow = Cells(Rows.Count, "A").End(xlUp).Row Cells(LastRow + 1, "A").Value = Me.TextBox1.Value Cells(LastRow + 1, "B").Value = Me.TextBox2.Value Cells(LastRow + 1, "C").Value = Me.TextBox3.Value Cells(LastRow + 1, "D").Value = WorksheetFunction.SumIf(Range(Cells(3, "B"), Cells(LastRow + 1, "B")), Cells(LastRow + 1, "B"), Range(Cells(3, "C"), Cells(LastRow + 1, "C"))) End If End Sub

Post-P
質問者

お礼

やりたいこと等がまとまっていない質問でしたのに ピンポイントなご回答をしていただきありがとうございました。 無事組み込むことができ仕事がとても捗ります。 本当にありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問の表題には,VBAの質問であることを明記せよ。読者層が変わると思う。 ーー そして、少数のデータ例と画像しか挙げてない。何をしたいのか良く判らない。 質問文には書くとしたら、やりたいことを1歩ずつ、短い文章にして箇条書きに書け。 読者に負担をかけないのが礼儀だ。 例  ・Userorm2のユーザーフォームを使っているから,部署2の方を扱う(ーー>よく見ると、そう     ではなく、部署1も、部署2のデータも1回で入力するらしい。ーー>異例だろう?) UserForm1はどうなった? ・入力したのがUserorm2で、「書き込み」ボタンをclickすると、   日付列に日付1/26をセットする(部署1か、部署2か、どっち両方?)   部署1と部署2のチェックボックスで、左右されるのか?   注文品列に砂糖をセット(部署1か部署2か両方か?チェックボックスで左右される?)   フォームの数量欄が2つに分かれているが、チェックボタンのONに従って、数量1と数量   2をセットするのか? 私だったらやらない複雑な仕様だと思う。判り難い仕様だ。 ーー  以上でやりたいことを理解すれば、(本人には判っているから)コードの書き方は別に難しいところはないでしょう。IF文で判別するぐらいだろう。 ・書き込みコマンドボタンのクリックイベントで、下記を行う。 ・部署1と部署2のチェックボックスのONを捉えておいて,入力する列でセットするかどうかを左右する ・部署1と部署2の現時点での、データ最終行は、End(xlUp).Rowで採れる。 何処が判らないのか?小生が問題の意図を取り違えている? .

Post-P
質問者

お礼

やりたいこと等がまとまっていない質問でしたのに ご回答とご指摘をしていただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1645/2495)
回答No.2

No.1の追加です。 D列を計算式のままにしたい場合は Cells(LastRow + 1, "D").Formula = "=SUMIF($B$3:B" & LastRow + 1 & ",B" & LastRow + 1 & ",$C$3:C" & LastRow + 1 & ")" なお、テキストボックスの未入力チェックは省略していますので、追加してください。 日付のテキストボックスでしたらたとえば If Me.TextBox1 = "" Or IsDate(Me.TextBox1) <> True Then MsgBox "日付が未入力、もしくは日付ではありません", vbInformation Me.TextBox1.SetFocus End If

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルでユーザーフォームを利用したいのですが・・・

    エクセルでユーザーフォームを利用したいのですが・・・ ユーザフォームは作れるのですが、なにせ、コマンドボタンを押したときのマクロを教えていただきたいです。 たとえば、A欄に日付B欄に会社名C欄に数字を入力するとしまして、 とうぜん、ユーザーフォームには日付、会社名、数字の入力ボックスとコマンドボタン(入力ボタン)があるわけです。 入力ボタンを押せば順に入力していただきたいのですが、条件があるのです。 その1、1行目2行目は使いますので3行目から入力してもらいたい。 その2、入力順、日付順に並べてほしい。 その2をもう少し詳しく書かせていただきますと、今日に10行分のデータを入力したとしまして あしたの分も2行ほど早めに入力したとします。 明日の分は当然、明日の日付でするわけです。 さて、今日の分を追加したいとき、明日の日付の前にこないと駄目という条件でございます。 よろしゅうおねがいします。

  • エクセルでユーザーフォームを開いても入力できません

    エクセルでユーザーフォームを作成し、商品コードを入力してマスタより内容の表示をさせるマクロを作成しました。 実行させるとフォームが開き商品コードでカーソルが点滅しているのですが商品コードが入力できません。しかしタイトルバーのところをクリックすると入力できます。どうもフォームが非活 性になっているように思えます。 ユーザーフォームはマクロでUSERFORM1.SHOWで開いています。原因がどこにあるかアドバ イスいただければ幸いです。 エクセルは2016、OSはWINDOWS7です。 宜しくお願い致します。

  • フォーム入力チェックで入力内容がクリア

    javascriptで、フォームの入力チェック機能をつくっています。必須入力項目が【名前】【住所】の場合、【名前】欄は入力済み/【住所】欄は未入力ケースで、アラートメッセージをOK押下した後フォーム上の【名前】欄がクリアされてしまいます。 ネットでサンプルになりそうなコードをいろいろ見て作っているのですが、なかなか上手くいきません。解決方法をご存知の方がいらっしゃったら教えてください。

  • エクセルVBA ユーザーフォーム 検索

    現在VBAにてユーザーフォームにて入力したデータをシート1に転記するものを作成しました。 この転記したデータを生かして作業したいと考えております。 データは商品データで A    B C E F 商品コード 商品名  区分  単価  備考 となっており ユーザーフォームも TEXTBOX1=A TEXTBOX2=B と言う様になってます。 現在考えているのがこのデータの一部を変更したい場合、コマンドボタンを押すと商品コード入力用boxがでてきて、商品コードを入力するとA列から検索し該当する商品データをユーザーフォーム上に表示するようにしたいのです。 そのデータがA75行にあったとします。 そのユーザーフォーム上で単価を変更した場合検索した行(A75行)にそのまま上書きする様にしたいです。 説明がうまくできてないかも知れませんが、どなたかご教授願います。

  • カレンダーフォームの日付をユーザーフォームに登録したい

    ユーザーフォームにいくつかの入力欄としてテキストボックスを作成しました。 その中に日付を入力したい欄があるため同じユーザーフォーム内にカレンダーを作成しました。 このカレンダーをクリックした日付がユーザーフォーム内の任意のテキストボックスに入力されるようにしたいのですが、可能でしょうか? 教えてください。よろしくお願いします。

  • アクセスのフォームで入力可能にならない。

     初心者で申し訳ありませんがお願いします。過去ログNo.449250を見ましたが(似た状況ではあります)解決しないので質問させてください。  既存のデータのあるデータベースでの入力フォームは、最初、既存のデータが表示されますよね?(ここまでは正しいでしょうか?)、そこから、左下のアスタリスクと三角のようなボタンで最終頁に飛ぶような感じで、入力項目が空欄になると思うのですが、そのボタンがアクティブにならず、新規入力できません。  原因追求のための基本的なチェック項目と、解決手段をおしえてください。お願いします。  フォームは、単票形式の親フォームに表形式の子フォームが入り込んでいる形で、親子のリンクは機能してます。  ウィザードで流れるままにフォームを作成していき、親子のリンクを設定して、入力欄のデザインをいじったぐらいで、とくにそれ以上の操作はしていないつもりですが、ひょんなところを触ってしまっているかもしれません。  単価と数量を入れると合計が表示されるようにした欄があるので、集計をしていることが原因かもと思いましたが、以前にそのような形でのフォームを作ったことがあり、私の操作の一部が間違っているだけだと思うのですが、どこがおかしいのかがわかりません。  合計欄は編集不可にしてあります。 windows2000 access2002です。  

  • VBAユーザーフォーム上での検索がしたい

    ユーザーフォームを作成したのですが、コードが分かりません教えて下さい。 ・ユーザーフォームは氏名を入力欄とし以下住所、電話番号等、個人情報が氏名を入力することによって、出てくるようにしたいのですが、可能ですか?個人情報はEXCELシート上にあり、随時追加されていきます。

  • エクセルVBAのユーザーフォーム上のテキストボックスについての質問です

    エクセルVBAのユーザーフォーム上のテキストボックスについての質問です。 Aのユーザーフォームの内容をBのユーザーフォームのテキストボックスへ引き継いで、Bのユーザーフォーム上で内容を編集するという仕組みにしたいのです。 Bのユーザーフォームは新規入力もかねたユーザーフォームなので、テキストボックスのイベントにAfterUpdateを使用して、テキストボックスの内容が書き換えられるとデータベースから検索して新規か既存か判断させています。 AのユーザーフォームからBのユーザーフォームのテキストボックスへ引継ぎさせるときにこのAfterUpdateを発生させたくないのですが、Application.EnableEvents=Falseなどを使ってもイベントが発生してしまいます。 また、イベントがどのタイミングで発生するかと、コードをステップで実行させると、このイベントは発生しません。そのために、いきづまってしまいました。 AのユーザーフォームからBに引き継ぐ処理  ユーザーフォームB.Load ---ユーザーフォームBのイニシャライズが実行される  ユーザーフォームB.テキストボックス = ユーザーフォームA.テキストボックス  ユーザーフォームB.Show ちょっと簡単に書きすぎですがこんな感じです。 コードをステップで実行するとユーザーフォームBのAfterUpdateは実行されません。(VBAエディタのバグ?) どなたか回答お願いします。

  • VBAエクセルのフォームについて

    お世話になっております。 VBAエクセルのフォームについて教えていただきたいのです。 VBAで入力のフォームを作ったのですが(TEXT BOXが4つ、コマンドボタン1つ、コマンドボタンを押したときに登録される用にしたい) 各シートの集計にしたい為、各シート(31のシートがあります)に入力フォームがあります、その各シートでの入力結果を1つのシートに 集計したいのですが、どの様なコードにしたらようか判りません。 素人のためお手数ですが、なるべく判りやすくお願いします。 よろしくお願いします。

  • エクセル VBA 

    エクセルのユーザーフォームのチェックボックスについて 教えて下さい。 現在チェックボックスが15個あるのですが 例えばテキストボックスが2個あり テキストボックス1に数字の2 テキストボックス2に数字の6 を入れ、コマンドボタンを押すと チェックボックスの2から6にまとめてチェックが入るようなコードが組みたいです。 宜しくお願いします。

このQ&Aのポイント
  • スマホで充電しながらUSB機器を使う方法や対応機器について教えてください。
  • スマホで同時に充電とUSB機器の使用ができる端末やアダプターをご存知でしょうか。
  • ELECOMのDST-C08以外で、シンプルで安価なスマホ充電とUSB機器使用ができる機器を探しています。おすすめはありますか。
回答を見る