エクセルVBAユーザーフォーム作り方、シートとユーザーフォーム間でデータ情報の設定・取得、comboBox、textBox、addItem実例

Поделиться
HTML-код
  • Опубликовано: 11 дек 2024

Комментарии • 86

  • @久美太田-z7i
    @久美太田-z7i 2 года назад +1

    初心者です。
    上司からのリクエストがまさにこれです。
    ここにくるまでいろんな動画見ました。
    もうできないか?とあきらめかけたところ
    まさに ありがとう😊ございます。
    そして告知されているもの 是非是非
    アップお願いいたします。
    それまでが私の知りたいことです。
    よろしくお願いいたします。

    • @ちからえもん
      @ちからえもん  2 года назад

      コメントありがとうございます!そうですね、気長に待っててください。盆休みくらいに頑張ってつくろうと思います。

    • @久美太田-z7i
      @久美太田-z7i 2 года назад

      @@ちからえもん 是非よろしくお願いします。
      本当お願いします

    • @ちからえもん
      @ちからえもん  2 года назад

      @@久美太田-z7i こんにちわ。続編としてユーザーフォームの変更とキャンセルの機能をアップしました。
      ruclips.net/video/le3_2kItMQo/видео.html

    • @久美太田-z7i
      @久美太田-z7i 2 года назад

      @@ちからえもん ありがとうございます。早速勉強いたします。😃

  • @shima-6551
    @shima-6551 3 года назад +3

    VBA初心者です。
    実用的に応用できることを丁寧に解説されていて、非常に参考になります。
    今後もVBA動画、楽しみにしています。

    • @ちからえもん
      @ちからえもん  3 года назад

      ご連絡ありがとうございます。とても励みになります。
      今後ともよろしくお願いいたします。

  • @シロときどきチロ
    @シロときどきチロ 7 месяцев назад +1

    はじめまして。通りがかりです。
    シンプルかつ分かりやすく、実用的なコードなので、
    即実践で使えそうです。フォームは苦手意識がありましたが、明日から使ってみます。
    チャンネル登録しました。Excel VBAの動画を楽しみにしています。

    • @ちからえもん
      @ちからえもん  7 месяцев назад

      コメントありがとうございます!!!😊

  • @kmaeda8856
    @kmaeda8856 2 года назад

    VBA初心者です。ユーザーフォームに関して、とても分かりやすい動画で参考になりました。

  • @かれんビー-b1s
    @かれんビー-b1s Год назад

    まさにやりたい事をそのまま動画にしていただけて助かりました!感謝しかない!

    • @ちからえもん
      @ちからえもん  Год назад

      おはようございます。コメントありがとうございます!

  • @MM-yv8wo
    @MM-yv8wo 2 года назад +1

    ちょうどマクロの勉強していたので助かります!

  • @fangchineselesson4776
    @fangchineselesson4776 3 года назад

    VBA初心者ですが、分かりやすくて勉強になりました。

    • @ちからえもん
      @ちからえもん  3 года назад

      コメントありがとうございます。今後ともよろしくお願いします!

  • @syouzama
    @syouzama Год назад

    すごくわかりやすかったです!
    ありがとうございます。

  • @masa-qp6tb
    @masa-qp6tb Год назад

    すげ〜ーー勉強になります

  • @ショウネンカ
    @ショウネンカ 3 года назад +2

    何日も探してやっとこのやり方ゲットした。本当にありがとうございます。もし、シート2のデータが外部のデータの場合のやり方も是非教えて頂けると嬉しいです。

    • @ちからえもん
      @ちからえもん  3 года назад

      ご連絡ありがとうございます。お役に立ててよかったです!
      外部のデータというのは、他のエクセルファイルということでしょうか?

  • @sanchai1207
    @sanchai1207 3 года назад

    この短い時間の説明で、わかりやすく解説して頂きありがとうございます。

    • @ちからえもん
      @ちからえもん  3 года назад

      このようなコメントをいただき、私も嬉しく思います。今後ともよろしくお願いいたします。

  • @優依-f5t
    @優依-f5t 2 года назад +1

    これはすごい

    • @ちからえもん
      @ちからえもん  2 года назад

      コメントありがとうございます。

    • @優依-f5t
      @優依-f5t 2 года назад +1

      @@ちからえもん いやそりゃすごいよ

  • @りょう介
    @りょう介 4 месяца назад

    素晴らしいどうがです。
    感動しました。
    一点質問回答お願い致します。
    コンボボックスのリスト意外の値を入力すると、入力されてしまいます。
    こんな時はどうすればよいのですか。
    教えてください。

    • @ちからえもん
      @ちからえもん  4 месяца назад

      プロパティウィンドウで該当するコンボボックスの
      Style を「2 - fmStyleDropDownList」にしてください。
      選択しかできなくなります。

    • @りょう介
      @りょう介 4 месяца назад

      回答頂きありがとうございます。
      請求書の動画、これから見ます。
       CHIKARAEMONのロゴマーク
      カッコいいですね!😊

    • @ちからえもん
      @ちからえもん  4 месяца назад +1

      @@りょう介 ロゴマークの指摘は初めてですね!マニアッックですが、メタリカというバンドが好きなので、それ風です。わかりませんね(笑)

    • @りょう介
      @りょう介 2 месяца назад

      メタリカ好きです。‼️
      AND JUSTICE FOR ALL 好きですね。
      メタリカ他なにが好きですか?
       ためになる動画ありがとうございます。
      おかげで、あらためてVBAを学ぶ気になりました。
      これからも、応援します。

    • @ちからえもん
      @ちからえもん  2 месяца назад +1

      @@りょう介その世代ですな!メガデス とかですね。今更ですが、クイーンズライチのオペレーションマインドクライムなど最近聴いています。

  • @渋川雅之
    @渋川雅之 Год назад

    大変分かりやすく丁寧な内容で感謝しております。
    教えて頂きたいのですが、シートに登録した段階で日付が文字列扱いになってしまいフィルターで日付が拾えません。
    日付セルをダブルクリックか区切り位置調整すると日付型になりますが、登録段階で日付型にする方法を教えて頂きたいのですが
    よろしくお願いします。

    • @渋川雅之
      @渋川雅之 Год назад

      お騒がせしました
      Cells(row_no, 2) = UserForm1.TextBox1.Value
      書き込み時に数値変換でいいみたいですね。

    • @ちからえもん
      @ちからえもん  Год назад

      コメントありがとうございます。そうですか、よかったです!

  • @micobmhbc3659
    @micobmhbc3659 2 года назад

    本当に助かりました!有難うございます。
    再生と停止を繰り返し、一緒に作成してました。
    大変勉強になりました。
    動画内では、コンボボックスの参照先を「Cells」とされていましたが、私は別のワークシートをマスター用に作成して、セルの指定したいのですが、その場合のコーディングを教えていただけないでしょうか。。
    恐らく簡単なことなのだろうと思うのですが、仕事のため独学(見様見真似)で作成している素人です…。
    どうかお力をお貸しいただけますと幸いです🙇

    • @ちからえもん
      @ちからえもん  2 года назад +1

      こんばんわ コメントありがとうございます。
      シート 「マスター」 にデータがあるとします。
      そのデータを参照するには、
      Sheets("マスター").Cells(i, 2)
      のように
      cells(i,2)の前に Sheets("マスター"). を付ければ良いだけですよ。

    • @micobmhbc3659
      @micobmhbc3659 2 года назад

      やはり超初歩レベルなことですよねw
      何の知識もないと、この( )や.の使い方が分からず、こんな小さなことにも躓きます。。
      ですが、これだけでも他に応用が利きそうですし、本当に有り難いです。
      早速チャレンジしてみたいと思います。
      早々且つご親切な返信有難うございました!

  • @hackcamp189
    @hackcamp189 Месяц назад

    3年前の動画にもうしわけないですが。
    フォームに入力した値をエクセルシートに反映させる際にこの動画のコマンドを打ち込むと200の列にどんどん上書きされてしまいます。
    順番に上から埋めていくコマンドはありますか?

    • @ちからえもん
      @ちからえもん  Месяц назад

      ありがとうございます。すいませんが、業務が非常に多忙なため、コメントができません。

  • @コメントなどサブアカ
    @コメントなどサブアカ 2 года назад

    ありがと

  • @takeshisatohallowclub6508
    @takeshisatohallowclub6508 2 года назад

    [Alt]keyの発音気になります。[Alt] alternate [ɔ'ːltɚnət]が一般的かなぁ。

    • @ちからえもん
      @ちからえもん  2 года назад

      どちらかといえば オ なんですね。勉強になりました。

  • @micobmhbc3659
    @micobmhbc3659 2 года назад

    すみません、教えてください。
    20:00辺りの、各『Cells(row_no,3)= 〜』のように真似て作成しているのですが、実行時エラー'1004'として、同箇所に黄色くハイライトされ、何が違うのかが分かりません…。
    何かいただけるヒントはありますか?

    • @ちからえもん
      @ちからえもん  2 года назад +1

      こんにちは
      chikaraemon.com/wordpress/2022/01/22/howtomake_userform/
      こちらにソースコードを載せていますので、それを貼り付けてみてください。

    • @micobmhbc3659
      @micobmhbc3659 2 года назад

      @@ちからえもん
      サイトをお持ちだったのですね。お返事も早々に、本当に有り難いです✨
      熟読&間違い探しします。もう一度チャレンジするモチベーションをいただきました!
      ご親切に本当に有難うございました。

    • @micobmhbc3659
      @micobmhbc3659 2 года назад

      @@ちからえもん
      お世話になります。一生懸命、、何度も、、トライするも未だ成功しません…。
      ↓こちらは、サンプルとして抜き出しだ一部分です。単純にこれだけでは分からないかとは思いますが、このあとには「単価*数量=金額」的なところにも続けたいのですが、「登録」ボタンを押しても、当該セルに反映されないため、まだそこまでも到達できません。。
      他に何か考えられるケース?障壁?にお心当たりはありますでしょうか?
      稚拙な質問で申し訳ありません…。
      ー----------
      Private Sub btn登録_Click()
      '登録ボタン
      Dim row_no As Long
      Cells(row_no, 2) = UserForm.cmb2
      Cells(row_no, 3) = UserForm.txt3
      Cells(row_no, 4) = UserForm.cmb4
      End Sub

    • @ちからえもん
      @ちからえもん  2 года назад

      @@micobmhbc3659それはそれは、お疲れ様です。
      まず、フォームの部品名ですが、私の動画では、UserForm1としています。あなた様が作成されているフォームのオブジェクト名はUserformですか?私の動画は以下のように記載しています。テキストボックス等のオブジェクト名も私は以下のようにしています。
      Cells(row_no, 2) = UserForm1.TextBox1
      Cells(row_no, 3) = UserForm1.ComboBox1
      Cells(row_no, 4) = UserForm1.ComboBox2
      シンプルに
      Cells(row_no, 2) ="あいうえお"として
      セルに「あいうえお」が登録されるのか
      試してみてください。

    • @micobmhbc3659
      @micobmhbc3659 2 года назад

      @@ちからえもん
      いつも早々のご対応有難うございます。
      まず、フォーム名は確認しました。ブログ内のコードをコピペさせていただいた際に、私がひとつずつ1を消していったものです。
      また、"あいうえお"も同様にデバッグとしてハイライトされてしまいます…💧

  • @竹村竜星-l8u
    @竹村竜星-l8u 2 года назад

    空白の場合は無視して次の行にいけるようになりませんか?

    • @ちからえもん
      @ちからえもん  2 года назад

      最終行をきめて、if文で空白でなかったら、処理をする。空白であったら、無視するを 決めた最終行までするようにすれば出来ます。

  • @ネロ-v6s
    @ネロ-v6s 2 года назад

    客先や品番を入力せずに登録した時にエラーの状態のものがシートに反映されてましたが、これって不細工ではないですか?

    • @ちからえもん
      @ちからえもん  2 года назад +1

      動画の23分あたりに、 そのような処理を書いています。以下のような処理です。ご参照ください。
      '客先が選択されていない場合の処理
      If UserForm1.ComboBox1.Text = "選択してください" Then
      MsgBox "客先を選択してください"
      Exit Sub
      End If
      '品番が選択されていない場合の処理
      If UserForm1.ComboBox2.Text = "選択してください" Then
      MsgBox "品番を選択してください"
      Exit Sub
      End If

    • @ネロ-v6s
      @ネロ-v6s 2 года назад

      @@ちからえもん 様
      それはそれは、大変失礼いたしました。
      ほぼ同じようなワークシートを使用しておりますので、参考にさせていただきます。
      ありがとうございました。

  • @user-ej1lt8zt4s
    @user-ej1lt8zt4s 3 года назад

    分かりやすい説明ありがとうございます。
    チャンネル登録し何度何度も見て勉強しております。
    質問ですが、「個数を入力」し「登録ボタン」を押すと「指定するセルに転記」されるのですが
    転記されたセルの数値が「テキスト形式かアポストロフィで始まっています」となります。
    今は、転記されたセルをひとつひとつ数値に変換しているのですが、面倒なのでどうにかなりませんかね~?

    • @ちからえもん
      @ちからえもん  3 года назад

      こんにちわ。
      チャンネル登録および何回も再生いただいてありがとうございます。
      Cells(row_no, 2) = UserForm1.TextBox1
      のCells(row_no, 2)の セルの書式設定は 日付 2012/3/14 です。
      Cells(row_no, 3)~Cells(row_no, 8)の セルの書式設定は 標準 です。
      転記されるシートのセルの書式設定はどのようになっていますか?

    • @chibi-chibi9137
      @chibi-chibi9137 3 года назад +3

      コンボボックスやテキストボックスから取得した値は、
      「文字列」になりますので、
      数値として扱いたい場合は、
      val関数で囲う必要があります。
      val(ComboBox1.text)

  • @ジャスミン茶-q2l
    @ジャスミン茶-q2l 3 года назад

    お世話になります
    動画大変参考になりました。
    知識が浅くて申し訳ございませんが、もしコンボボックスの表示項目が
    重複表示の場合、どうすれば良いでしょうか?
    例えば動画の客先と品番の間の欄に“分類”とゆうコンボボックスの欄を入れ、
    分類の欄の項目を選択し、下の品番の欄に連動して、品番の欄の選択項目を絞りたい場合、
    どうすればよろしいでしょうか?
    現在勉強中で初心者で、質問内容が伝わりずらかったらすみません。
    お手数をおかけして、申し訳ございませんが、設定する事は可能でしょうか?

    • @ちからえもん
      @ちからえもん  3 года назад +1

      ご連絡ありがとうございます。はい、出来ます。
      分類を 鉛筆、ボールペン、定規、その他 とします。
      M列にH001~H015が 鉛筆、ボールペン、定規、その他 いずれに属するのか予め記入しておきます。
      ボールペンが選択された場合、ボールペンだけを絞って表示させるには、
      For i = 3 to 17
      if cells(i,13)="ボールペン" then
      combobox2.additen cells(i,10)
      end if
      next i
      のような感じで、IFを使います。
      ”ボールペン”のところには combobox?.text とでもしておけば選択された分類に応じて絞られると思います。
      ?はコンボボックス名です。

    • @ジャスミン茶-q2l
      @ジャスミン茶-q2l 3 года назад

      ご返信ありがとうございます😊
      勉強になりました。
      早速試してみます。
      早急のご返信誠にありがとうございました。

  • @こいけかずのり
    @こいけかずのり 2 года назад

    VBA初心者です。動画の通りに客先を選択出来るようにコードを書いてるのですがコンパイルエラーが出てユーザーフォームの実行が出来ません。何回やり直してもです。何故でしょうか?

    • @ちからえもん
      @ちからえもん  2 года назад

      概要欄の私のブログにソースコードがあります。まずは、そのコードをコピペしてみてください。

    • @こいけかずのり
      @こいけかずのり 2 года назад

      @@ちからえもん ありがとうございます。

  • @semickycom0119
    @semickycom0119 3 года назад

    VBA初心者です。質問失礼します。
    現在勉強中で知識が浅く、質問内容が伝わりづらかったら申し訳ないです。
    客先コンボボックスの内容は、参照先のN2:N5のデータをテーブルに変えれば、
    客先が新しく増えたとしても自動で追加することは可能でしょうか。

    • @ちからえもん
      @ちからえもん  3 года назад +1

      ご連絡ありがとうございます。
      そのような方法もあるかと思います。
      私はアナログチックですので、
      古典的に
      for i= 3 to 9999
        if cells(i,14)="" then
        exit for
       end if
       combobox1.additem cells(i,14)
      next i
      とします。
      そのようにしますと 9999まで客先が増えても対応できます。

    • @semickycom0119
      @semickycom0119 3 года назад

      @@ちからえもん
      ご返信ありがとうございます。
      なるほど、やり方は様々ということなんですね。
      色々試してみます!
      早急なご返信ありがとうございました!

  • @PeaceOkinawa_Lee
    @PeaceOkinawa_Lee 2 года назад

    すみません、ユーザーフォームのテキストボックスに特定の日付に、例えば20220106を入力したら自動的に2022/01/06に変化してくれる方法はありますか?

    • @ちからえもん
      @ちからえもん  2 года назад +2

      こんばんわ
      Private Sub TextBox1_Change()
      If IsNumeric(TextBox1.Text) = True And Len(TextBox1.Text) = 8 Then
      TextBox1.Text = Left(TextBox1.Text, 4) & "/" & Mid(TextBox1.Text, 5, 2) & "/" & Mid(TextBox1.Text, 7, 2)
      End If
      End Sub
      このようにしたら、20220106となったら 2022/01/06 と変換してくれますよ。

    • @ちからえもん
      @ちからえもん  2 года назад +1

      ご覧いただけますと分かるかと思いますが、テキストボックスに入力された値が数値であって 且 8文字であれば、
      左から4文字 + "/" + 左から5文字目から2文字分 +  "/" + 左から7文字目から2文字分となります。

    • @PeaceOkinawa_Lee
      @PeaceOkinawa_Lee 2 года назад

      こんばんは!ご回答ありがとうございます!やはりLen の関数ですね😳isNumeric初めて使います!もし数字だったらって意味ですかね🤔
      調べてきます!ご回答とても助かりました✨🙌ありがとうございます

  • @Leon-Leon
    @Leon-Leon 3 года назад

    出納帳を作っているのですが、入力ミス防止に入力ホームを使いたいと思っています、
    宜しくお願い致します、

    • @ちからえもん
      @ちからえもん  3 года назад

      こんばんわ。
      出納帳とは、
      月日、科目、摘要、収入、支出、残高 の項目が有り、
      科目には、 
       支払・・・消耗品費、旅費交通費、交際費
       収入・・・売上高、普通預金
      のようなものが有り、
      これらをユーザーフォームで実現されたいということでしょうか?

    • @Leon-Leon
      @Leon-Leon 3 года назад

      @@ちからえもん これから作る予定です、入力ホームなしのもの作っていました!

    • @ちからえもん
      @ちからえもん  3 года назад +2

      @@Leon-Leon 分かりました。頑張ってください。
      ニーズもありそうですので、出納帳の動画でも作ろうかな?

  • @mintlover8527
    @mintlover8527 2 года назад

    これって、直接入力するのと何が違うんですか?

    • @ちからえもん
      @ちからえもん  2 года назад

      😅あくまで ユーザーフォームの使用例の動画ですが、違いとしては、
      直接入力の場合、長い会社名、長い商品名、商品コード などのヒューマンエラーによる入力間違いが起こりえますが、ユーザーフォーム内で選択することにより、そのような間違いを防止します。また、直接入力の場合、最下行まで手動で移動するようなことも発生しますが、VBAで最下行を自動的に取得します。
      直接入力よりも作業時間は短縮できるかと思います。
      まあ、実務的に利用するには、シートに直接入力を不可にして、ユーザーフォームからしか 登録・更新ができないようにするのが良いです。

  • @中田勇利-h1q
    @中田勇利-h1q 2 года назад

    12:36