戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
自動入力

    [192186] 自動入力-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/16(13:31))
    □U R L/

      いつもお世話になり有難うございます。

      弊社は、会計ソフトを使っています。いつも経理担当者が入力していますが、これから繁忙期に入り月締めが遅くなりますので、試行錯誤のうえでこの度各部署の
      担当者に業者からの請求書が届けば、今から教えて頂くフォームを作り
      各担当者に入力して頂き経理に送ってもらい会計ソフトにインポートする方法を
      考えています。

      そこで
      シート名:請求書入力 のA3、B3、C3、D3に項目名「勘定科目」 A5、
      B5、C5、D5に項目名「補助科目」が入っています。

      シート名:勘定補助科目 のA1に項目名「勘定科目」、A2に項目名「補助科
      目」縦に実際の各科目が50行あります。 

      質問は、シート名:勘定補助科目 を利用して シート名:請求書入力 のA4、
        B4、C4、D4に違う勘定科目を入れたいのです。(一つの取引で、例えば
        ホームセンターで物を買った場合に、備品であったり消耗品であったり
        衛生用品であったりして科目を区分けしないといけない為) 

      シート名:勘定補助科目を利用して任意の補助科目をA6、B6、C6、D6に
      違う補助科目を入れたいのです。

      シート名:請求書入力 にリストボックス(又はそれに代わるもの)等を使ってクリック入力するのですが、勘定科目と補助科目を4セットリストボックスを表示しています。

      入力していただく方がリストボックスが沢山あって、わずらわしいと思いますので
      リストボックス等一つを使って、最大違う科目を4つ選択することが出来る方法を教えてください。



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192189] Re[1]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/16(22:19))
    □U R L/

      上記、入力間違いがありました。

      誤)>シート名:勘定補助科目を利用して任意の補助科目をA6、B6、C6、
              D6に
      誤)>違う補助科目を入れたいのです。

      正)シート名:勘定補助科目を利用して任意の勘定科目をシート名:請求書入力
             A6、B6、C6、D6に違う勘定科目をいれたいのです。

      よろしくお願いいたします。



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192190] Re[2]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/17(09:11))
    □U R L/
      上記説明は、うまく伝わっていない為お返事がないと思いますが、どこが
      不明なのか教えて頂けませんか?
      
      そんななかで、もう少し具体的に記載します。
      
      シート名:勘定補助科目の内訳です。(勘定科目と補助科目で1セットとして
      リストボックスを、4セット作っています。(A列からH列まで)
      
      2行目は、リストボックスの書式設定のコントロールのリンクするセル番地です。
      
           A列    B列      C列     D列     EFGH1行目  勘定科目  補助科目    勘定科目   補助科目    略
      2行目 
      3行目 当期商品仕入高	原材料	   当期商品仕入高  原材料  
      4行目 旅費交通費	交通費	   旅費交通費	    交通費
      5行目 広告宣伝費	販売促進費  広告宣伝費 	販売促進費
       :
       :
      49行目 広告宣伝費 	催物費	   広告宣伝費	    催物費
      50行目 広告宣伝費  広告費    広告宣伝費	    広告費
      ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
      
      リストボックスのマクロは、下記の通りです。
      
      v = Sheets("勘定補助科目").Range("a2")
          y = 2 + v
          
          kamoku1 = Sheets("勘定補助科目").Range("a" & y)
          kamoku2 = Sheets("勘定補助科目").Range("b" & y)
           
          'MsgBox "WWW" & tekiyou
          
          Sheets("請求書入力").Select
          Range("a4") = kamoku1
          Range("b4") = kamoku2
          
          
          v = Sheets("勘定補助科目").Range("c2")
          y = 2 + v
          
          kamoku3 = Sheets("勘定補助科目").Range("c" & y)
          kamoku4 = Sheets("勘定補助科目").Range("d" & y)
      
          
          Sheets("請求書入力").Select
          Range("c4") = kamoku3
          Range("d4") = kamoku4
      
      以上ですが、どうかよろしくお願いいたします。
      
      
      			
       


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192192] Re[3]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/17(10:11))
    □U R L/

      >リストボックス等一つを使って、最大違う科目を4つ選択することが出来る方法 を教えてください。

      リストボックスがひとつであれば、
      Sheets"請求書入力" で("a4") ("b4") ("c4")("d4")別々にあてはめても
       リストボックスの一つの科目をクリックすればabcdの各4行目には、同じ
       科目が配置されますのはわかっています。

       そこでなんとか、一つのリストボックスから ("a4") ("b4") ("c4")("d4")に
       該当する科目をクリックした結果が ("a4") ("b4") ("c4")("d4")のセルに
       反映する方法を教えて頂けませんか?

       あるいは他の方法があれば、
       ("a4") ("b4") ("c4")("d4")のセルに任意の科目を入れる方法を教えて
       頂けませんか?
       
       よろしくお願いいたします。





      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192193] Re[4]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/17(13:06))
    □U R L/
      > そこでなんとか、一つのリストボックスから ("a4") ("b4") ("c4")("d4")に
      > 該当する科目をクリックした結果が ("a4") ("b4") ("c4")("d4")のセルに
      > 反映する方法を教えて頂けませんか?
      
      1.それは、一つのリストボックスで複数選択するってことですか?
      
      2.何故、4つなのですか?
        会計ソフに4つ迄一括インポートできるようになっているからですか?
      
      >シート名:勘定補助科目の内訳です。(勘定科目と補助科目で1セットとして
      >リストボックスを、4セット作っています。(A列からH列まで)
      3.それって、まったく同じリストを4セット書いてあると言うことですか?
      




    [192194] Re[5]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/17(16:07))
    □U R L/

      半平太さま
      お返事有難うございます。

      >1.それは、一つのリストボックスで複数選択するってことですか?
      はい。
      何故ならば、各担当者が、エクセルの画面で項目を見て入力してもらうときに
      リストボックスが4つあれば入力範囲が多く見ずらいと思いましたので。

      >2.何故、4つなのですか?
       1件の支払先の請求書の内訳が、最大4つの違う経費明細がある為です。
       例えば、委託料、保守料、消耗品費、衛生費 等 

      >会計ソフに4つ迄一括インポートできるようになっているからですか?
       いいえ、
       会計ソフトへのインポートは、極端にいいますと100行取引があれば
       100行インポートが出来ます。

      >3.それって、まったく同じリストを4セット書いてあると言うことですか?
         はい、4セット書いてあるということです。
         1セットだとクリックした科目名が、例えばA6に入る設定をしていれば
         全て何の科目名をおしてもA6に入ります。
         違う科目名をA6に入れたいがために計4セットを書いています。

         本当は、4つも書きたくないのです、1セットで4カ所に別々の
         科目が入れば望ましいのですが。

         リストボックスで駄目でしたら他に方法はありませんか?

        半平様、よろしくお願いいたします。
         




      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192195] Re[6]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/17(16:46))
    □U R L/
      1.1セットで4カ所に書くのは無駄なので、勘定補助科目シートに1セットだけにします。
        A,B列のみ。
      
        ※2行目は空ける必要ないですが、従来のままとします。
      
      <勘定補助科目シート>
       行  _______A_______  _____B_____
        1  勘定科目名       補助科目   
        2                              
        3  当期商品仕入高   原材料     
        4  旅費交通費       交通費     
        5  広告宣伝費       販売促進費 
        6  原材料           催物費     
        7  広告宣伝費       広告費     
      
      2.請求書入力シートに貼り付けているListBoxを複数選択可能に変更する。
       (1)ListBoxを右クリックして、「コントロールの書式設定」から、「拡張選択」を選ぶ。
       (2)入力範囲   :「勘定補助科目!$B$3:$B$52」 ※補助科目データが埋まっている行まで指定する
       (3)リンクするセル: 空欄に変更する
      
      3.ListBpxで選択されると、実行されるマクロ
      
       下述のマクロを貼り付けたら、 
       ListBoxを右クリックして、「マクロの登録」から「ListBox1_Click」を指定する。
      
       尚、ListBoxの名前は「List Box 1」と仮定します。
       
      Sub ListBox1_Click()
          Dim wsSupple As Worksheet
          Dim LBox As ListBox
          Dim Chosen, Written, idX
          Dim matchedRow
          
          Sheets("請求書入力").Range("A4:D4,A6:D6").ClearContents
          
          Set wsSupple = Sheets("勘定補助科目")
          Set LBox = Sheets("請求書入力").ListBoxes("List Box 1") ’←実際のリストボックス名に合わせる
          
          Chosen = LBox.Selected
          
          For idX = 1 To UBound(Chosen)
              If Chosen(idX) Then
                  Written = Written + 1
                  matchedRow = Application.Match(LBox.List(idX), wsSupple.Columns("B"), 0)
                  Sheets("請求書入力").Cells(6, Written) = LBox.List(idX)
                  Sheets("請求書入力").Cells(4, Written) = wsSupple.Columns("A").Cells(matchedRow, "A")
                  
                  If Written >= 4 Then
                      Exit For
                  End If
              End If
          Next idX
      End Sub
      
      <請求書入力シート> 交通費と催物費が選ばれた場合
       行  _____A_____  _____B_____  _____C_____  _____D_____
        3  勘定科目     勘定科目     勘定科目     勘定科目   
        4  旅費交通費   原材料                               
        5  補助科目名   補助科目名   補助科目名   補助科目名 
        6  交通費       催物費                               
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192198] Re[7]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/17(17:48))
    □U R L/
      半平太様
      有難うございます。
      
      下記のコードに来た時に、アプリケーション定義またはオブジェクト定義のエラーが出ます。
      
      Set LBox = Sheets("請求書入力").ListBoxes("List Box 1")  '←実際のリストボックス名に合わせる
      
      >ListBoxを右クリックして、「マクロの登録」から「ListBox1_Click」を指定する
      --指定しましたが、
      
      > 尚、ListBoxの名前は「List Box 1」と仮定します。
      仮定する「List Box 1」の名前は、どこに名前を入れるのですか?
      
      
      
      
      
      
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192199] Re[8]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/17(18:58))
    □U R L/

      半平様

      すみません、実際のリストボックスをクリックすると転記されるセルの位置に
      変更と追加があります。(理由は、最後に記載しています、最初に記載すれば
      半平様に質問がわかりずらいと思ったからです。)

      まず変更は Sheets("請求書入力") B列(名称)C列(転記先)
      B4=勘定科目 C4=勘定科目をクリックした転記先
      B5=補助科目 C5=補助科目の転記先 と下記に続きます。

      変更の転記先:転記先の勘定科目=C4、C9、C14、C19
             補助科目    =C5、C10、C15、C20

      追加:リストボックスと部門追加です。シート名:部門名 
      A1="部門名"
      A2=ブランク A3から縦の行に部門名の名称(仮→)
      A、B、C、D、E、F、G、H、Iの9つの部門です。  

      当該質問で一番最初に記載しました勘定科目の入力先は、下記、>でした。
      >シート名:勘定補助科目 を利用して シート名:請求書入力 のA4、
      >B4、C4、D4に違う勘定科目を入れたいのです

      リストボックス一つで任意でクリックした科目が各4つのセルに
      転記出来る方法をということで、わかりやすい上記セルの位置を設けました。
      (後で実際の転記するセルの位置を替えればいいと思いました。)

      ところが上記[192195] Re[6]: でマクロを書いて頂いた時点で、
      私が知識がない為にわからないコードが多くありました。
      --------------------------------------------------------
      >Sheets("請求書入力").Range("A4:D4,A6:D6").ClearContents
      ここでは、消去する箇所はわかりますが、転記するコードが
      どこに記載してあるかがわかりません。教えて頂けますか?




      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192200] Re[9]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/17(19:46))
    □U R L/
      >仮定する「List Box 1」の名前は、どこに名前を入れるのですか?
      現在のリストボックス名を以下の手順で調べてください。
      
       当該リストボックスを右クリックして選択したら、
       イミディエイトウィンドウに以下の通り入力してEnter
      
         ? Selection.Name
      
      >転記するコードがどこに記載してあるかがわかりません。
      ここですけど、右方に書き出すものなので、下方なら使えません。(行方向に入れる事になります。変数WrittenをRWに変更)
         ↓
      > Sheets("請求書入力").Cells(6, Written) = LBox.List(idX)
      
      Sub ListBox1_Click()
          Dim wsSupple As Worksheet
          Dim LBox As ListBox
          Dim Chosen, RW, idX
          Dim matchedRow
          
          Sheets("請求書入力").Range("C4:C5,C9:C10,C14:C15,C19:C20").ClearContents
          
          Set wsSupple = Sheets("勘定補助科目")
          Set LBox = Sheets("請求書入力").ListBoxes("List Box 1")
          
          Chosen = LBox.Selected
          
          RW = 0
          For idX = 1 To UBound(Chosen)
              If Chosen(idX) Then
              
                  RW = RW + 1
                  matchedRow = Application.Match(LBox.List(idX), wsSupple.Columns("B"), 0)
                  Sheets("請求書入力").Cells(RW * 5 + 0, "C") = LBox.List(idX)
                  Sheets("請求書入力").Cells(RW * 5 - 1, "C") = wsSupple.Columns("A").Cells(matchedRow, "A")
                  
                  If RW >= 4 Then
                      Exit For
                  End If
              End If
          Next idX
      End Sub
      
      >追加:リストボックスと部門追加です。シート名:部門名
      今回の質問との関係が分からないのでパスします。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192201] Re[10]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/17(20:38))
    □U R L/

      1、>現在のリストボックス名を以下の手順で調べてください。

      > 当該リストボックスを右クリックして選択したら、
      > イミディエイトウィンドウに以下の通り入力してEnter
      >   ? Selection.Name

      当該リストボックスを右クリックしましたら
      上から、切り取り、コピー、貼り付け、グループ化、順序、マクロの登録、コント
      ロールの書式設定 のみで、イミディエイトウィンドウの表示が見えません。

      ネットでイミディエイトウィンドウを調べましてエクセル項目で、開発→
      VisualBasic→表示→イミディエイトウィンドウ に ? Selection.Nameを
      入力してエンターキーを押しても何も表示されませんでした。

      2、>追加:リストボックスと部門追加です。シート名:部門名
        今回の質問との関係が分からないのでパスします。

        元々、勘定科目と補助科目と部門の入力箇所がありました。
        部門のリストボックスも4つ設けていました。今回、勘定科目と補助科目の
        リストボックスが一つで出来る方法を教えて頂ければ部門も同じように
        すればいいと思って質問項目に入れなかったのです。軽薄ですみませんでし
        た。 
        改めてですが、
        部門もリストボックスを一つで4箇所に転記出来る方法を今回の
        VBAに入れて頂けないでしょうか?

        一度に申し上げないで、申し訳ございませんでした。
        ご足労をかけますがよろしくお願いいたします。








       



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192202] Re[11]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/17(22:05))
    □U R L/
      1.当該テキストボックスを右クリックして選択すると、
        名前ボックス(数式バーの左)に日本語名で「リスト 1」とか出ますので、
        それを使ってください。
      
      >  部門もリストボックスを一つで4箇所に転記出来る方法を今回の
      >  VBAに入れて頂けないでしょうか?
      2.ちょっと無理っぽいです。
        勘定科目の件は、リストボックスに(最終的に)選ばれた科目を
        上から順に並べるだけ、と言う作りです。
      
        一方、部門名は、勘定科目と対応しているセルに出さなければならないないので、
        同じ方式ではミスマッチとなります。
      
        9部門程度なら、普通にセルの入力規則で妥協できないですか?
      
        いずれにしても、私はノーアイデアです。m(__)m 




    [192204] Re[12]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/17(23:20))
    □U R L/
       >1.当該テキストボックスを右クリックして選択すると、
        名前ボックス(数式バーの左)に日本語名で「リスト 1」とか出ますので、
        それを使ってください。
      
        リスト 8 となっていましたので下記コードに8と入れました。
       Set LBox = Sheets("請求書入力").ListBoxes("List Box 8")
      
       そうしましたらエラーになりました。
       エラーメッセージは、「形が一致しません。」と出ます。
       どうすればよろしいでしょうか?
      
       時計を見ましたら遅い時間になっていますので、申し訳ないので
       明日のお返事で結構です。
       
       参考:現在使用していますマクロのコードは下記の通りです。
      
       Sub ListBox1_Click()
          Dim wsSupple As Worksheet
          Dim LBox As ListBox
          Dim Chosen, RW, idX
          Dim matchedRow
          
          Sheets("請求書入力").Range("C4:C5,C9:C10,C14:C15,C19:C20").ClearContents
          
          Set wsSupple = Sheets("勘定補助科目")
          Set LBox = Sheets("請求書入力").ListBoxes("List Box 8")
          
          Chosen = LBox.Selected
          
          RW = 0
          For idX = 1 To UBound(Chosen)
              If Chosen(idX) Then
              
                  RW = RW + 1
                  matchedRow = Application.Match(LBox.List(idX), wsSupple.Columns("B"), 0)
                  Sheets("請求書入力").Cells(RW * 5 + 0, "C") = LBox.List(idX)
                  Sheets("請求書入力").Cells(RW * 5 - 1, "C") = wsSupple.Columns("A").Cells(matchedRow, "A")
                  
                  If RW >= 4 Then
                      Exit For
                  End If
              End If
          Next idX
      End Sub
      
      
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192205] Re[13]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/18(00:24))
    □U R L/

      半平太様
      >9部門程度なら、普通にセルの入力規則で妥協できないですか?
      入力規則でうまくいきました。

      妥協というより入力規則(昔、幾度か使ったことがありましたが、)
      忘れていました。

      有難うございました。


      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192206] Re[14]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/18(08:50))
    □U R L/
      >  リスト 8 となっていましたので下記コードに8と入れました。
      > Set LBox = Sheets("請求書入力").ListBoxes("List Box 8")
      
        リスト 8なら 「リスト 8」としてください。
       Set LBox = Sheets("請求書入力").ListBoxes("リスト 8")
      
      > エラーメッセージは、「形が一致しません。」と出ます。
      私には理解不能です。
      以下のコードでリストボックスの型を確かめてください。
      
      >    Sheets("請求書入力").Range("C4:C5,C9:C10,C14:C15,C19:C20").ClearContents    
      Set wsSupple = Sheets("勘定補助科目")    
           MsgBox TypeName(Sheets("請求書入力").ListBoxes("リスト 8")) ’←テスト用に挿入
      >    Chosen = LBox.Selected


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192208] Re[15]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/18(16:13))
    □U R L/
      半平太様
      お疲れ様です。
      今やっと上記確認が出来ました。
      大変、遅くなって申し訳ございませんでした。
      
      > Sheets("請求書入力").Range("C4:C5,C9:C10,C14:C15,C19:C20").ClearContents    
      Set wsSupple = Sheets("勘定補助科目")    
           MsgBox TypeName(Sheets("請求書入力").ListBoxes("リスト 8")) ’←テス
         ト用に挿入
      
      上記MsgBoxを実行しましたら LIST BOXが出ました。
      OKボタンを押しますとオブジェクト変数またはwithブロック変数が
      設定されていません と出ます。
      
      よろしくお願いします。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192209] Re[16]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/18(16:41))
    □U R L/
      話が噛み合ってない気がしますが、
      以下でもう一度トライしてみて下さい。"リスト 8"に換えただけですけど
      
      Sub ListBox1_Click()
          Dim wsSupple As Worksheet
          Dim LBox As ListBox
          Dim Chosen, RW, idX
          Dim matchedRow
          
          Sheets("請求書入力").Range("C4:C5,C9:C10,C14:C15,C19:C20").ClearContents
          
          Set wsSupple = Sheets("勘定補助科目")
          Set LBox = Sheets("請求書入力").ListBoxes("リスト 8")
          
          Chosen = LBox.Selected
          
          RW = 0
          For idX = 1 To UBound(Chosen)
              If Chosen(idX) Then
              
                  RW = RW + 1
                  matchedRow = Application.Match(LBox.List(idX), wsSupple.Columns("B"), 0)
                  Sheets("請求書入力").Cells(RW * 5 + 0, "C") = LBox.List(idX)
                  Sheets("請求書入力").Cells(RW * 5 - 1, "C") = wsSupple.Columns("A").Cells(matchedRow, "A")
                  
                  If RW >= 4 Then
                      Exit For
                  End If
              End If
          Next idX
      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192212] Re[17]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/18(17:45))
    □U R L/

      何回もすみません。
      上記コードを入れて実行しましたが、ファンクションキー f8を順番におして
      行きましたら、FORの次に一挙にNEXTに飛びます。それを繰り返し17回目あたしで

      RW = RW + 1の行から1行毎コードが黄色になって続いていきます。
      matchedRow = Application.Match(LBox.List(idX), wsSupple.Columns("B"), 0)
      Sheets("請求書入力").Cells(RW * 5 + 0, "C") = LBox.List(idX)

      下記に黄色が反転して次にいくところで型が一致しません とエラーメッセージが
      出ます。

      Sheets("請求書入力").Cells(RW * 5 - 1, "C") = wsSupple.Columns
      ("A").Cells(matchedRow, "A")


      リストボックスで科目をクリックしているだけですが?







      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192213] Re[18]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/18(17:51))
    □U R L/
      >上記コードを入れて実行しましたが、ファンクションキー f8を順番におして
      
      直接マクロを実行したんですか?
      それは、使い方が想定外なんですけど。
      
      リストボックスの勘定補助科目を選んでください。
      ※リストボックスにマクロの登録は済んでいますね。
       そうであれば自動的に選択した勘定がシートに反映されます。
      




    [192214] Re[19]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/18(18:52))
    □U R L/

      >直接マクロを実行したんですか?
      リストボックスの科目をクリックしていますが、エラーが出たので
      どのコードで出たのかと思って先ほど初めて試みました。

      >リストボックスの勘定補助科目を選んでください。
      通常は、リストボックスの勘定科目を選んでいます。
      勘定科目を選ぶことによってC4の勘定科目とC5の補助科目に表示されます。

      (今になってですが、私のやり方が間違っているかもしれませんので
       お伝えしますが、リストボックスは、2つあります。
      一つは、勘定科目、二つ目は、補助科目があります。
      例えば、勘定科目のリストボックスを選ぶとその各科目は、シート名:勘定補助科
      目からリストボックスへ表示されています。)

      >※リストボックスにマクロの登録は済んでいますね。
      はい、[192209] Re[16]: 自動入力-の最新のコードを貼り付けました。

      シート名:請求書入力 を右クリックしてコードの表示をみますと
      リストボックスに入れた同じマクロコードが表示されていますが、
      それはおかしくないですね。(そのままにしてよろしいですね。)











      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192215] Re[20]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/18(19:03))
    □U R L/
       >(今になってですが、私のやり方が間違っているかもしれませんので
       > お伝えしますが、リストボックスは、2つあります。
       
       私は、1つだと思っていました。
       補助科目が決まれば、勘定科目が自動的に決まるのかと思っていました。
      
       すこし危なっかしい仕様だなとは思っていましたが、2つだったとは・・
      
       申し訳ないですが、入り口から間違っていますので、私はこれで退散します。
       




    [192216] Re[21]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/18(20:33))
    □U R L/

      >補助科目が決まれば、勘定科目が自動的に決まるのかと思っていました。
       もう一度チャンスをください。どうしても利便性がありますので作成したいので
       す。


       これでうまく行くマクロを作って頂いていたのでありましたら
       2つのリストボックスをやめて1つにしますので、それに合わすためには、
       シート名:勘定補助科目をどのようにすればいいのでしょうか?
       教えてください。

        大変迷惑をおかけして申し訳ありませんが最後よろしくお願いいたします。











      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192217] Re[22]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/18(21:58))
    □U R L/
      危なっかしい仕様だな、とは思っていましたので、
      それが解消の方向に行くのはいい事と思います。
      
      どうすれば危なっかしくないか・・ですが、
      
      以下の三つ(もしかしたらもっとなのですかね)が、
      紐づくように入力する必要があると言うことです。
      
       部門・勘定科目・補助科目
      
      どこのセルに入れた部門名の、どこのセルに入れた勘定科目名が、
      ここの補助科目と同じ組だよってことが分かるようにすることです。
      
      それぞれの項目を一気に4つも(複数選択で)入れてしまったら、相互の紐づけは無理です。
      
      ※ まぁ、一つだけは一気にやってもいいですが、
         後の二つは、ひとつずつ指定せざるを得ないです。
      
      また、4つ迄と言っても、もしかしたら重複指定するものもあるかも知れません。
      つまり、同時に3つ選んで、2番目は重複して、1,2,2、3(全部で4つ)にしたい
      なんてこともあるかも知れませんが、到底無理な話になります。(杞憂かも知れませんが)
      
      私としては、こんなのでどうかなと思っています。
      1.ListBoxを3つ作る。部門・勘定科目・補助科目用
        それらは、単一選択モードで作る。
      
      2.ブックを開いた時、それらは非表示になっている。
      
      3.入力すべきセルをクリックすると、それに合わせて、
        3種の内、一つ適切なListBoxが非表示にから表示に変わる。
      
      4.担当者が所要の項目を一つ選択すると、入力すべきセルに選択されたデータが埋まる。
      
      5.その後、ListBoxの利用と関係ないセルをクリックすると、再びListBoxは非表示に変わる。
      
        例えば、部門名を入れて、次の勘定科目のセルをクリックすると、
        部門用ListBoxは非表示になり、勘定科目用のListBoxが表示に変わる、と言った塩梅にする。
      
        勘定科目の入力が終わって、補助科目のセルをクリックすると、ListBoxは上述の通り現れますが、
        入力済みの勘定科目に対応する補助科目名に絞ったListBoxが表示される様に塩梅する。
      
      以上を実現するためには、
      1.3種、各4つの入力セル(計12セル)がどこなのか、明確にする。
      2.リストの元データを、勘定科目順にならべ、対応する補助科目をその右にまとめた表を作る。(今、既にそうなっているかもですが)
      




    [192218] Re[23]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/19(07:13))
    □U R L/

      半平太様
      おはようございます。
      ご協力感謝します。

      >例えば、部門名を入れて、次の勘定科目のセルをクリックすると、
      >部門用ListBoxは非表示になり、勘定科目用のListBoxが表示に変わる、と言った
      >塩梅にする。
      リストボックスが、入力セルをクリックすると必要なリストボックスのみが表示さ
      れ他のリストボックスは非表示になるなんてそんなことが出来るのですね。それで
      あれば、もともと一つのリストボックスを表示しているみたいで入力者の目には
      選択しやすいですね。嬉しいです。

      ○一応、実際に使用しています入力箇所名を全て表示しておきます。
      請求月(西暦: 月、日を変更)2020/6/30を手入力で変更します。

      @勘定科目
      A補助科目
      B部門名 
      C税込み金額 (請求書を見ての手入力)

      @からCが計4つ分縦にあります。

      請求書の支払合計金額(手入力)

      摘要欄 (請求書の支払先内容は毎月決まったところが多いので、支払先5W1Hの
      手入力は、ばかばかしいのでどのように表示しようかと(帳簿から導いて支払先毎
      に導いていこうか?等前々から悩んでいます。) 
      (使っている会計ソフトは、支払先名のみの入力はありませんので)

      すみません、会社に行く時間になってしまいました。会社に着いたら折をみて下記
      1、2を
      提出します。勝手言ってすみません。よろしくお願いいたします。

      1.3種、各4つの入力セル(計12セル)がどこなのか、明確にする。
      2.リストの元データを、勘定科目順にならべ、対応する補助科目をその右にまとめた表を作る。(今、既にそうなっているかもですが)




















      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192219] Re[24]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/19(10:08))
    □U R L/
      考えたらListBoxは一つで十分でした。
      
      非表示から表示に変える時に、リストソースを適切な範囲に変えてやればいい。
      ※ 元々、補助科目はその方式でやらざるを得ないですが、同じことを全ての項目でやるだけです。
      
      あと、入力セル順が決まっているなら、全ての入力セルを都度、操作者に選択させるのは無駄と思えるので、
      例えば、勘定科目のセルを手動でクリックして、ListBoxをクリックしてデータを埋め終わったら、
      自動的に補助科目のセルが選択されるようにし、ListBoxのリストソースを補助科目用に自動変更すれば、
      連続入力できるので、入力の手間が少し省けるかも知れません。
      
      なんなら、その時、ターゲットの入力セルを黄色にでも塗りつぶせば
      見易くなっていいかも知れません。
      
      それをやる場合、入力セルの順序が必要になります。
       勘定科目→補助科目は明らかでしょうが、
       その他は実際どんな順なのかこちらでは分からないですし、
       もしかしたら、他の項目には確定的な順がない事もあり得ますね。
      
      まぁ、構想だけなので、作ってみないと良し悪しの最終判断はできないですけど。
      




    [192220] Re[25]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/19(12:28))
    □U R L/

      半平太様
      上記の案件、理解できます。有難うございます。

      >以上を実現するためには、
      >1.3種、各4つの入力セル(計12セル)がどこなのか、明確にする。
      >2.リストの元データを、勘定科目順にならべ、対応する補助科目をその右にま>とめた表を作る。(今、既にそうなっているかもですが

      1、シート名:請求書入力
      勘定科目の入力セル:C4
      補助科目の入力セル:C5
      部門名の 入力セル:C6

      勘定科目の入力セル:C9
      補助科目の入力セル:C10
      部門名の 入力セル:C11

      勘定科目の入力セル:C14
      補助科目の入力セル:C15
      部門名の 入力セル:C16

      勘定科目の入力セル:C19
      補助科目の入力セル:C29
      部門名の 入力セル:C21

      2、シート名:勘定補助科目(その通りで今、すでになっています。)
      A列、勘定科目  B列、補助科目

      これでよかったですか?
      以上です、よろしくお願いします。



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192222] Re[26]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/19(17:24))
    □U R L/
      テスト用データ
      
      <勘定補助科目 >         <部門名 >
       行  _____A_____  _____B_____     行  ___A___
        1  勘定科目名   補助科目         1  部門名 
        2                                2         
        3  広告宣伝費   カタログ代       3  A部門  
        4  広告宣伝費   看板代           4  B部門  
        5  販売促進費   飲食代金         5  C部門  
        6  販売促進費   タクシー代       6  D部門  
        7  交通費       タクシー代       7  E部門  
        8  交通費       旅費交通費       8  F部門  
        9  通信費       切手代           9  G部門  
       10  通信費       電話代          10  H部門  
       11  通信費       宅配便          11  I部門  
      
      
      <請求書入力 作業途中図>
       行  ____B____  _____C_____
        4  勘定科目   販売促進費 
        5  補助科目   飲食代金   
        6             B部門      
        7                        
        8                        
        9  勘定科目   交通費     
       10  補助科目   旅費交通費 
       11                        
       12                        
       13                        
       14  勘定科目              
       15  補助科目              
       16                        
       17                        
       18                        
       19  勘定科目              
       20  補助科目              
       21                        
      
      請求書入力シートのシートモジュールに
      下記コードを貼り付ける
      
      Private WsSupple As Worksheet
      Private WsInput As Worksheet
      Private WsDept As Worksheet
      Private LBox As ListBox
      Private filteredAcc
      
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          Application.Caption = ""
              
          If LBox Is Nothing Then '、無駄に環境setしない
              環境set
              LBox.Visible = False
          Else
              LBox.Visible = False
          End If
          
          If Target.Column <> 3 Then
              Exit Sub
          ElseIf Target.Cells.Count > 1 Then
              Exit Sub
          ElseIf Intersect(Target, _
              Range("C4,C5,C6,C9,C10,C11,C14,C15,C16,C19,C20,C21")) Is Nothing Then
              Exit Sub
          ElseIf Intersect(Target, Range("C4,C9,C14,C19")) Is Nothing Then
              LBox.ListFillRange = getListSource(Target)
              LBox.Visible = True
          Else 'ユニークな勘定科目のセット
              LBox.ListFillRange = ""
              LBox.List = filteredAcc
              LBox.Visible = True
          End If
      End Sub
      
      Private Sub ListBox1_Click()
          Dim Target As Range
          If LBox Is Nothing Then '無駄に環境setしない
              環境set
          End If
          
          Set Target = ActiveCell
          Target.Value = LBox.List(LBox.ListIndex)
          
          '次のセルへ飛ぶ
          Select Case Target.Address(0, 0)
              Case "C4": Range("C5").Select
              Case "C5": Range("C6").Select
              Case "C6": Range("C9").Select
                  
              Case "C9": Range("C10").Select
              Case "C10": Range("C11").Select
              Case "C11": Range("C14").Select
                  
              Case "C14": Range("C15").Select
              Case "C15": Range("C16").Select
              Case "C16": Range("C19").Select
                  
              Case "C19": Range("C20").Select
              Case "C20": Range("C21").Select
                  '        Case "C21": Range("C4").Select
          End Select
      End Sub
      
      Private Sub 環境set()
          Dim dicT As Object, lastRW, Acc
          Set dicT = CreateObject("Scripting.Dictionary")
          Set WsSupple = Sheets("勘定補助科目")
          Set WsInput = Sheets("請求書入力")
          Set WsDept = Sheets("部門名")
          Set LBox = WsInput.ListBoxes("リスト 8")   '実際のリストボックス名に合わせる
          
          lastRW = getLastRw(WsSupple, "A")
          For Each Acc In WsSupple.Range("A3").Resize(lastRW - 2).Value
              dicT(Acc) = Empty
          Next
          
          filteredAcc = dicT.keys
          dicT.RemoveAll
      End Sub
      
      Private Function getListSource(Target As Range)
          Dim lastRW, adr, AccVal, matchedRW, numSubAcc
          
          環境set
          
          Select Case Target.Address(0, 0)
            '部門名処理
              Case "C6", "C11", "C16", "C21" '部門名: Range("C10").Select
                  lastRW = getLastRw(WsDept, "A")
                  adr = WsDept.Range("A3").Resize(lastRW - 2).Address
                  getListSource = WsDept.Name & "!" & adr
                  
            '補助科目処理
              Case "C5", "C10", "C15", "C20" '勘定科目があれば、補助科目だけのリストにする
                  AccVal = Target.Offset(-1).Value
                  
                  If AccVal = "" Then  '勘定科目が入ってない場合
                      lastRW = getLastRw(WsSupple, "A")
                      adr = WsSupple.Range("A3").Resize(lastRW - 2).Offset(, 1).Address
                      getListSource = WsSupple.Name & "!" & adr
                      
                  Else '勘定科目が入っている場合(これが通例)
                      matchedRW = Application.Match(AccVal, WsSupple.Columns("A"), 0)
                      numSubAcc = Application.CountIf(WsSupple.Columns("A"), AccVal)
                      adr = WsSupple.Cells(matchedRW, "B").Resize(numSubAcc).Address
                      getListSource = WsSupple.Name & "!" & adr
                  End If
          End Select
      End Function
      
      Private Function getLastRw(Ws As Worksheet, sCL As String)
          getLastRw = Ws.Columns(sCL).Cells(Rows.Count, 1).End(xlUp).Row
      End Function


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192224] Re[27]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/19(21:26))
    □U R L/

      消去遅くなってすみません。
      沢山のコードを書いて頂き有難うございました。

      今、請求書入力シートのシートモジュールに上記新コードを貼り付けました。
      次に請求書入力シートに戻り余白のところにセルポインタをおくと
      リストボックスの勘定科目と補助科目2つの内、勘定科目が消えました。

      消えたことで私の方でやっておかなければならないことがあったのでしょうか?
      @上記マクロコード以外は、消去していいのですか?
      Aリストボックス二つは必要ですか?それとも消去していいのですか?
      B@A共消去すれば、上記の新コードを使うには、どこをどのように
      すればいいのですか?





      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192225] Re[28]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/19(21:44))
    □U R L/

      今までのコードを消去たあとで新コードを入れました。
      試しに色々している時に、

      c5の補助科目入力欄をクリックすれば勘定科目のリストボックスが出ました。
      次にC4の入力欄をクリックすればリストBoxクラスのListプロパティを選択
      出来ませんとエラーメッセージが出ます。


      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192227] Re[29]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/19(22:03))
    □U R L/
      >今、請求書入力シートのシートモジュールに上記新コードを貼り付けました。
      >次に請求書入力シートに戻り余白のところにセルポインタをおくと
      >リストボックスの勘定科目と補助科目2つの内、勘定科目が消えました。
      消えたものが実際には生きていますので継続使用します。
      勘定科目用は今後使わないので、切り取ってください。(=削除)
      
      >@上記マクロコード以外は、消去していいのですか?
      いいです。新しいコードだけで動きます。
      
      >Aリストボックス二つは必要ですか?それとも消去していいのですか?
      リストボックスは一つだけです。
      リストボックスの名前は、"リスト 8" と仮定しています。
      
      単一選択タイプに変更してください。
      
      入力範囲   :自動で埋まりますので、何も指定しないで結構です。
      リンクするセル:空欄にしてください。
      
      マクロの登録は、ListBox1_Click にしてください。(リストボックス名とミスマッチですが、このまま進みます)
      
      >c5の補助科目入力欄をクリックすれば勘定科目のリストボックスが出ました。
      >次にC4の入力欄をクリックすればリストBoxクラスのListプロパティを選択
      >出来ませんとエラーメッセージが出ます。
      
      エラーの原因はまだ解明していないですが、先に以下確認させてください。
      
      新しい流れでは、勘定科目を先に入れる手順で考えていましたが、
      補助科目を先に入れるのが、そちらの通常の処理フローなんですか?
      
      それだと、コードの修正が必要になります。




    [192230] Re[30]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/19(23:05))
    □U R L/
      >リストボックスの名前は、"リスト 8" と仮定しています。
      1.多分、その名前の通りだと思いますが、それを表示させるには、
        請求書入力シートのC4セルをクリックしてください。
      
       ※表示させる手順が分からないと、コントロールの書式設定も出来ないですもんね。m(__)m
      
      2.入力順が決まっているのは、補助科目→勘定科目 についてだけなんですか?
      




    [192231] Re[31]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/19(23:09))
    □U R L/
      再確認ですが、一つのテキストボックスの複数選択型方式に (引き続き)希望を持っているんでしょうか?
      




    [192232] Re[32]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/19(23:32))
    □U R L/
      補助科目が「絶対に重複がない」なら、当初案の複数選択方式(一つのテキストボックス)でいけますけど。
                ↑
            本当に言えますか?
      




    [192233] Re[33]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/20(04:53))
    □U R L/

      色々、有難うございました。

      先に●につきましてお返事をします。(他にすることは、順次していきます。)


      >勘定科目用は今後使わないので、切り取ってください。(=削除)
      一瞬、補助科目から選択すれば社員は、勘定科目で慣れているのにどうかなあ?
      と思っていましら、下記の、先に以下の確認をさせてくださいを見て安心しまし
      た。

      ●>エラーの原因はまだ解明していないですが、先に以下確認させてください。

      >新しい流れでは、勘定科目を先に入れる手順で考えていましたが、
      >補助科目を先に入れるのが、そちらの通常の処理フローなんですか?
      補助科目からではなく、勘定科目から見るのが通常の処理フローです。

      (直接関係ないと思いますが、シート名:勘定補助科目 では8つくらいの勘定科目に対して補助科目がない科目があります。その場合、補助科目は余白にしています。 それと勘定科目が変わるたびに見やすいように1行あけています。)

      >補助科目が「絶対に重複がない」なら、当初案の複数選択方式(一つのテキスト>ボックス)でいけますけど。
                ↑
      >      本当に言えますか? 
      補助科目の重複はありません。

      シート名:勘定補助科目の科目を並べますのでご確認をしてください。

      勘定科目     補助科目

      当期商品仕入高 原材料

      福利厚生費 その他

      教育研修費

      広告宣伝費 販売促進費
      広告宣伝費 催物費
      広告宣伝費 広告費
      広告宣伝費 その他

      交際費

      支払手数料 銀行振込料
      支払手数料 クレジット
      支払手数料 委託手数料
      支払手数料 検査手数料
      支払手数料 マッサージ
      支払手数料 シャトルバス
      支払手数料 燃料費
      支払手数料 その他
      支払手数料 自動販売機
      支払手数料 謝金

      旅費交通費 出張旅費
      旅費交通費 交通費

      備品消耗品費 備品
      備品消耗品費 消耗品

      被服費

      衛生費    クリーニング
      衛生費    ごみ処理
      衛生費    その他

      図書新聞費 新聞代
      図書新聞費 書籍代

      水道光熱費 ガス代
      水道光熱費 プロパン
      水道光熱費 灯油料金

      通信運搬費 電話料金
      通信運搬費 切手葉書
      通信運搬費 宅配便
      通信運搬費 公衆電話
      通信運搬費 その他

      会議費

      賃借料(リース料) リース
      賃借料(リース料) 再リース

      保守管理費 委託手数料
      保守管理費 建物管理
      保守管理費 保守契約

      警備費

      修繕費

      諸会費

      雑費

      租税公課     印紙
      租税公課    その他








      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192234] Re[34]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/20(07:05))
    □U R L/
      >勘定科目用は今後使わないので、切り取ってください。(=削除)
      削除しました。
      
      >マクロの登録は、ListBox1_Click にしてください。(リストボックス名とミス>マッチですが、このまま進みます)
      ListBox1_Clickになっています。 
      
      >Aリストボックス二つは必要ですか?それとも消去していいのですか?
      >リストボックスは一つだけです。
      >リストボックスの名前は、"リスト 8" と仮定しています。
      このリストボックスとは、残った補助科目のことですね。
      だとすれば、そのリストボックスを左クリックすれば、リスト15と出ますので
      シート名:請求書入力のコードの中で
      Private Sub 環境set()
      Set LBox = WsInput.ListBoxes("リスト 8")   '実際のリストボックス名に合わせるとありますから”リスト15”に置き換えればいいのですね。
      ちなみにリストと15の間は、詰めていいのでしょうか?それとも半角スペースが
      必要でしょうか?
      
      >単一選択タイプに変更してください。
       変更済みです。
      
      >入力範囲   :自動で埋まりますので、何も指定しないで結構です。
       何もしていません。
      
      >リンクするセル:空欄にしてください。
       空欄にしています。
       ふと思い出したのですが、部門の入力欄は、前に教えて頂いた名前の管理を
       残していますがそれでよろしいのですね。(プルダウンで選択します。)
      
      >リストボックスの名前は、"リスト 8" と仮定しています。
      1.多分、その名前の通りだと思いますが、それを表示させるには、
        請求書入力シートのC4セルをクリックしてください。
      
      リストボックスが2つの時は、勘定科目がリスト8でした、今リストボックスの勘定科目を削除しましたから残るリストボックス補助科目は、リスト15になって
      います。
      請求書入力シートのC4セルをクリックしましたらエラーメッセージ「指定したアイテムが見つかりませんでした」が出ました。
      
      >2.入力順が決まっているのは、補助科目→勘定科目 についてだけなんですか?
       科目だけです。 他の項目(請求日付、部門、金額、摘要等)は、任意で入力出
       来ます。
      
       新しい流れでは、勘定科目を先に入れる手順で考えていましたが、と
       書かれていましたが、ふに落ちないのが1つありまして、社員も見慣れている
       勘定科目を先に入れるのであれば、リストボックスは、補助科目ではなく
       社員が見慣れている勘定科目のリストボックスを作り、任意の勘定科目を
       クリックして関連する補助科目を補助科目の入力欄に自動的に反映される
       ほうが良いのではと思ったのですが。
      
      >再確認ですが、一つのテキストボックスの複数選択型方式に (引き続き)希望を
       持っているんでしょうか?
      
       今も1つのテキストボックスではないのでしょうか? 入力する方が見やすく
       なればと思うだけです。(煩雑になるのでしたら他の方法でよろしいですよ。) 
       複数選択型方式とは、具体的にどういう事ですか?
       例えば、勘定科目をクリックすると関連する補助科目までもが一緒に
       自動入力されるということでしょうか?
      
       シート名:請求書 の どのセルにマウスポインタをクリックすれば、
       「指定したアイテムの名前が見つかりませんでした」とエラーメッセージが
       出ます。
      
       以上ですが、半平様の要件を満たしているでしょうか?
       沢山あって重複した答えがあるかもしれませんし、足らないことがあるかもしれ
       ません。
      
       よろしくお願いいたします。
      
       今日の朝8時ごろに自宅を出まして会社に行きます。
       今日も忙しくなりそうで折角まとめて頂いてもすぐに見れないこと
       お許しください。(記載するのもどうかと思いましたが。)
      
      
      
      
      
       
      
      
      
      
      
      
      
      
      
      
      
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192236] Re[35]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/20(09:30))
    □U R L/
      > 今も1つのテキストボックスではないのでしょうか? 
      
      ここが最大の行き違いになっている気がします。
      
      テキストボックスには「単一選択型」と複数選択ができる「拡張選択型」があります。
      当初「拡張選択型」にして、4つの勘定科目を一気に選択したいと言うことだなと私は思ったのですが、違ったんでしょうか?
      
      元々単一選択で良かったのなら、問題は凄く小さいです。
      
      つまり、以下の想定外の事態に対処すればいい、
      (1)勘定科目(A列)の中間に空行がある
      (2)補助科目がないこともある
      
      >>      本当に言えますか? 
      >補助科目の重複はありません。
      私の考え方では、広告宣伝費と支払手数料はそれぞれ「その他」を持っているので重複ありとなります。
      ですけど、勘定科目から入力するのであれば、これは何の問題にもならないです。
      
      >>リストボックスの名前は、"リスト 8" と仮定しています。
      >このリストボックスとは、残った補助科目のことですね。
      その通りです。もう、補助科目用とか言う専用リストボックスはなくなり、
      汎用リストボックスが一つとなります。
      
      Set LBox = WsInput.ListBoxes("リスト 8")   
      '実際のリストボックス名に合わせるとありますから”リスト15”に置き換えればいいのですね。
      >ちなみにリストと15の間は、詰めていいのでしょうか?それとも半角スペースが
      最初に見えなくたったのが実は生きているので、それが「リスト 8」と思っているのでが、
      どういう経緯で「15」になったのかは分かりませんが、それが正しければ「リスト 15」にしてください。
      今後は「リスト 15」を前提にします。
      ※ 通常、半角スペースのあと、半角の数字のハズです。
      
      > 新しい流れでは、勘定科目を先に入れる手順で考えていましたが、と
      > 書かれていましたが、ふに落ちないのが1つありまして、社員も見慣れている
      > 勘定科目を先に入れるのであれば、リストボックスは、補助科目ではなく
      > 社員が見慣れている勘定科目のリストボックスを作り、任意の勘定科目を
      > クリックして関連する補助科目を補助科目の入力欄に自動的に反映される
      > ほうが良いのではと思ったのですが。
      ここも少し疑問なんですが、
      先に勘定科目のセルをクリックすると、
      リストボックスには重複のない勘定科目一覧が出ますので(※)
      その内の一つをクリックするだけです。
      ※A列に空欄があったので、コードを修正しないと実際には出ず、エラーになります。
      
      すると、自動的にその下のセルが選択され、リストボックスは補助科目一覧に変わる様にしました。(※)
      
      ※補助科目のない勘定科目もあるとの事なので、無い場合は、リストボックスの表示はエラーになります。
       そうなると、自動的に補助科目のセルを選択する方式はマズいと言う事になります。
      
       補助科目がない時に、(自動であれ、手動であれ)C5セルが選択された場合にどうするかを決めないとならないです。
       セル選択が自動なら単に無視する。手動選択なら「補助科目はない」とメッセージを出すか、くらいですかね。
      
       勘定科目と補助科目が1つずつなら、自動で埋めることは可能です。
      
      > 例えば、勘定科目をクリックすると関連する補助科目までもが一緒に
      > 自動入力されるということでしょうか?
      上と関連しますが、自動入力はされません。(一つしかない場合は別途手当すれば可能)
      
      新構想では、勘定科目のセルを手動でクリックすると、リストボックスが出る。(勘定科目の一覧が入っている)
      リストボックスの一覧から一つの勘定科目をクリックすると、
      自動的に補助科目セルが選択され、リストボックスは補助科目の一覧に変わる。と言う塩梅です。
      
      ただ、補助科目がない場合があると分かったので、今のコードではエラーになります。
      
      どうするか決めなければならない状態にあります。
      
      ちょっと長くなるかも知れないので
      >半平太様
      今後は、「さん」づけでお願いします。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192237] Re[35]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/20(09:36))
    □U R L/

      私は、リストボックスで勘定科目の作成をと言いましたが、
      よく考えて見ましたら、
      社員がリストボックスを見て、勘定科目と補助科目が
      見れるのならいいのですが、勘定科目だけ見れる場合だと、
      補助科目の違う科目が複数あっても
      勘定科目を選択する場合、任意の補助科目に値する
      同じ勘定科目を探すのは不可能で
      ある為、半平太さまが言われる補助科目から
      探してその並びの勘定科目を自動入力する方が
      相応しいとおもいました。




      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192243] Re[36]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/20(13:17))
    □U R L/

      アイデアは増えたと思うので、
      どういう仕掛けにしたいのか、最終案を決めて頂けませんか?





    [192247] Re[37]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/20(15:46))
    □U R L/

      >新構想では、勘定科目のセルを手動でクリックすると、リストボックスが出る。(勘定科目の一覧が入っている)
      リストボックスの一覧から一つの勘定科目をクリックすると、
      自動的に補助科目セルが選択され、リストボックスは補助科目の一覧に変わる。と
      言う塩梅です。

      ただ、補助科目がない場合があると分かったので、今のコードではエラーになりま
      >す。
      このアイデアは、嬉しいですね。

      自宅に帰ってからじっくり読み返し、半平太さんに2度手間をさせないように
      案を練ってみます。お待ちください。




      >ただ、補助科目がない場合があると分かったので、今のコードではエラーになります。

      どうするか決めなければならない状態にあります。





      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192251] Re[38]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/20(23:09))
    □U R L/

      ここでは、
      □投稿者/ 半平太 -(2020/06/20(09:30))以降のお返事を
      記載します。

      > 今も1つのテキストボックスではないのでしょうか? 
      >ここが最大の行き違いになっている気がします。
      深く思わず単に下記のように1セットだけにしますと記載されていたのでふと思っ
      ただけでこだわりは全然ありません。

      >□投稿者/ 半平太 -(2020/06/17(16:46))
      >□U R L/ 1.1セットで4カ所に書くのは無駄なので、勘定補助科目シートに
      <1セットだけにします。A,B列のみ。

      >テキストボックスには「単一選択型」と複数選択ができる「拡張選択型」があり
      ます。
      当初「拡張選択型」にして、4つの勘定科目を一気に選択したいと言うことだなと
      私は思ったのですが、違ったんでしょうか?

      私は、最初単一選択型と拡張選択型の使い方がわからなかったのです。
      4つの勘定科目を一気に選択したいというより、1つの勘定科目をクリック
      することにより自動入力され同時に関連した補助科目を選択してその科目が自動
      入力されます。それを最大4回繰り返すイメージでした。

      そういう意味で、単一選択でいいと思います。
      >元々単一選択で良かったのなら、問題は凄く小さいです。


      >>      本当に言えますか? 
      >補助科目の重複はありません。
      私の考え方では、広告宣伝費と支払手数料はそれぞれ「その他」を持っているので
      重複ありとなります。
      「その他」、そうでした、「その他」も科目名称ですね。すみませんでした。


      >もう、補助科目用とか言う専用リストボックスはなくなり、
      >汎用リストボックスが一つとなります。
      補助科目用の専用リストボックスがなくなるとは、どういうことですか?
      汎用リストボックスが1つとなります。とは、どういうことですか?


      シート名:請求書入力 の今の状況ですが、補助科目のリストボックスが一つあり
      ます。
      そのリストは、リスト 15になっていましたのでコードも15に合わせました。

      勘定科目の入力欄にマウスをあてると補助科目のリストボックスは、消えて
      エラーメッセージ:「List BoxクラスのListプロパティを設定できません」と
      出ます。次に補助科目の入力欄にマウスをあてると補助科目のリストボックス
      が表示されました。


      >新構想では、勘定科目のセルを手動でクリックすると、リストボックスが出る。>(勘定科目の一覧が入っている)
      勘定科目のセルとは、勘定科目の入力セルのことですね。

      >リストボックスの一覧から一つの勘定科目をクリックすると、
      >自動的に補助科目セルが選択されるーーとは、補助科目の入力セルにクリックされるということですね。

      >リストボックスは補助科目の一覧に変わる。
      補助科目の一覧で任意の科目をクリックすれば補助科目のセルに自動入力されるということですね。

      ただ、補助科目がない場合があると分かったので、今のコードではエラーになります。

      どうするか決めなければならない状態にあります。

      アイデアは増えたと思うので、
      どういう仕掛けにしたいのか、最終案を決めて頂けませんか?

      ここで一旦送信します。
      次に最終案を決めるというおこがましいことではありませんが、
      考えてみます。









      [192247] Re[37]: 自動入力-

      ■記事引用/メール受信=OFF■

      □投稿者/ 愛子 -(2020/06/20(15:46))
      □U R L/
      >新構想では、勘定科目のセルを手動でクリックすると、リストボックスが出る。(勘定科目の一覧が入っている)
      リストボックスの一覧から一つの勘定科目をクリックすると、
      自動的に補助科目セルが選択され、リストボックスは補助科目の一覧に変わる。と
      言う塩梅です。

      ただ、補助科目がない場合があると分かったので、今のコードではエラーになりま
      >す。
      このアイデアは、嬉しいですね。

      自宅に帰ってからじっくり読み返し、半平太さんに2度手間をさせないように
      案を練ってみます。お待ちください。




      >ただ、補助科目がない場合があると分かったので、今のコードではエラーになります。

      どうするか決めなければならない状態にあります。








      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192252] Re[39]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/20(23:42))
    □U R L/

      何故か先程送信したものが
      □投稿者/ 愛子 -(2020/06/20(15:46))の上に入っています。?

      今、シート名:請求書入力を色々さわってみますと
      部門名の入力欄をクリックしましたら補助科目のリストボックスに
      部門名が表示されていました。
      しかし部門名のところを任意でクリックしても
      部門名の入力欄は、任意の部門は表示されませんでした。

      しかしそこでわかったことは、
      >もう、補助科目用とか言う専用リストボックスはなくなり、
      >汎用リストボックスが一つとなります。
      リストボックスの上に補助科目と記載していましたが、
      ここのリストボックスは、一つの中に補助科目と部門名と今エラーとなっている
      勘定科目が含まれている為に専用リストボックスはなくなり
      汎用リストボックスと言われる所以ですね。






      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192253] Re[40]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/21(00:11))
    □U R L/
      >>もう、補助科目用とか言う専用リストボックスはなくなり、
      >>汎用リストボックスが一つとなります。
      >補助科目用の専用リストボックスがなくなるとは、どういうことですか?
      >汎用リストボックスが1つとなります。とは、どういうことですか?
      
      一つのリストボックスがあり、C4セルが選択されると
      そのリストボックスは勘定科目用となって、勘定科目の一覧を表示します。
      
      その中の一つの科目をクリックすると、それがC4セルに入力された後、C5セルを選択します。
      すると、
      自動的に上記リストボックスは補助科目用に変わって、
      C4セルの勘定科目に対応する補助科目だけが抽出されて、一覧に表示されます。
      
      その一覧で、補助科目を選ぶと、その科目をC5セルに埋めて、C6セルを自動的に選択します。
      すると
      自動的に上記リストボックスは部門名用に変わって、部門名が一覧表示されます。
      
      と言った塩梅になる、と言うことです。
      
      ただ、サンプル図と違って、実際の元データには想定外の空白行があったので、
      提示したコードはエラーになる状態ではあります。
      
      ※個人的には、リストとは空白なんてないものと思っていますけども・・
       動くテストをしたいのであれば、サンプル図のデータで実験してください。
      
      まぁ、上記のフローにこだわりません。愛子さんの希望で変更可能です。
      
      私としては、最終案を提示して貰って終わりにしたいと思っています。(更なる追加要望はなし)




    [192254] Re[41]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/21(01:37))
    □U R L/
      私の最終案です。
      その前に、
      >※個人的には、リストとは空白なんてないものと思っていますけども・
      思い切ってリストの空白を埋めました。補助科目がない箇所も「その他」を
      入れました。
      
      最終案を試行錯誤している時に気づいたのですが、私のミスですが、
      リストボックスの リスト15 ですがシート名:請求書入力 右クリックしての
      コードの表示は、リスト 15になおしているのですが、リストボックスのマクロ
      登録は、なおっていませんでした。修正をした結果、勘定科目の入力セルを
      クリックすれば、リストボックスに勘定科目名が表示されました。
      
      しかし部門名と同じように勘定科目をクリックしても入力欄は、変わりません。
      リストボックスのマクロ登録を表示とシート名:請求書入力のコードを記載しますので点検をお願いします。
      
      Sub ListBox1_Click()
          Dim WsSupple As Worksheet
          Dim LBox As ListBox
          Dim Chosen, Written, idX
          Dim matchedRow
          
         
         
          
          Set WsSupple = Sheets("勘定補助科目")
          Set LBox = Sheets("請求書入力").ListBoxes("List Box 15")  '←実際のリス
      トボックス名に合わせる
          
          Chosen = LBox.Selected
          
          For idX = 1 To UBound(Chosen)
              If Chosen(idX) Then
                  Written = Written + 1
                  matchedRow = Application.Match(LBox.List(idX), WsSupple.Columns
      ("B"), 0)
                  Sheets("請求書入力").Cells(6, Written) = LBox.List(idX)
                  Sheets("請求書入力").Cells(4, Written) = WsSupple.Columns("A").Cells(matchedRow, "A")
                  
                  If Written >= 4 Then
                      Exit For
                  End If
              End If
          Next idX
      End Sub
      
      ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
      Private WsSupple As Worksheet
      Private WsInput As Worksheet
      Private WsDept As Worksheet
      Private LBox As ListBox
      Private filteredAcc
      
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          Application.Caption = ""
              
          If LBox Is Nothing Then '、無駄に環境setしない
              環境set
              LBox.Visible = False
          Else
              LBox.Visible = False
          End If
          
          If Target.Column <> 3 Then
              Exit Sub
          ElseIf Target.Cells.Count > 1 Then
              Exit Sub
          ElseIf Intersect(Target, _
              Range("C4,C5,C6,C9,C10,C11,C14,C15,C16,C19,C20,C21")) Is Nothing Then
              Exit Sub
          ElseIf Intersect(Target, Range("C4,C9,C14,C19")) Is Nothing Then
              LBox.ListFillRange = getListSource(Target)
              LBox.Visible = True
          Else 'ユニークな勘定科目のセット
              LBox.ListFillRange = ""
              LBox.List = filteredAcc
              LBox.Visible = True
          End If
      End Sub
      
      Private Sub ListBox1_Click()
          Dim Target As Range
          If LBox Is Nothing Then '無駄に環境setしない
              環境set
          End If
          
          Set Target = ActiveCell
          Target.Value = LBox.List(LBox.ListIndex)
          
          '次のセルへ飛ぶ
          Select Case Target.Address(0, 0)
              Case "C4": Range("C5").Select
              Case "C5": Range("C6").Select
              Case "C6": Range("C9").Select
                  
              Case "C9": Range("C10").Select
              Case "C10": Range("C11").Select
              Case "C11": Range("C14").Select
                  
              Case "C14": Range("C15").Select
              Case "C15": Range("C16").Select
              Case "C16": Range("C19").Select
                  
              Case "C19": Range("C20").Select
              Case "C20": Range("C21").Select
                  '        Case "C21": Range("C4").Select
          End Select
      End Sub
      
      Private Sub 環境set()
          Dim dicT As Object, lastRW, Acc
          Set dicT = CreateObject("Scripting.Dictionary")
          Set WsSupple = Sheets("勘定補助科目")
          Set WsInput = Sheets("請求書入力")
          Set WsDept = Sheets("部門名")
          Set LBox = WsInput.ListBoxes("リスト 15")   '実際のリストボックス名に合
      わせる
          
          lastRW = getLastRw(WsSupple, "A")
          For Each Acc In WsSupple.Range("A3").Resize(lastRW - 2).Value
              dicT(Acc) = Empty
          Next
          
          filteredAcc = dicT.keys
          dicT.RemoveAll
      End Sub
      
      Private Function getListSource(Target As Range)
          Dim lastRW, adr, AccVal, matchedRW, numSubAcc
          
          環境set
          
          Select Case Target.Address(0, 0)
              '部門名処理
              Case "C6", "C11", "C16", "C21" '部門名: Range("C10").Select
                  lastRW = getLastRw(WsDept, "A")
                  adr = WsDept.Range("A3").Resize(lastRW - 2).Address
                  getListSource = WsDept.Name & "!" & adr
                  
              '補助科目処理
              Case "C5", "C10", "C15", "C20" '勘定科目があれば、補助科目だけのリ
      ストにする
                  AccVal = Target.Offset(-1).Value
                  
                  If AccVal = "" Then  '勘定科目が入ってない場合
                      lastRW = getLastRw(WsSupple, "A")
                      adr = WsSupple.Range("A3").Resize(lastRW - 2).Offset(, 1).Address
                      getListSource = WsSupple.Name & "!" & adr
                      
                  Else '勘定科目が入っている場合(これが通例)
                      matchedRW = Application.Match(AccVal, WsSupple.Columns("A"), 0)
                      numSubAcc = Application.CountIf(WsSupple.Columns("A"), AccVal)
                      adr = WsSupple.Cells(matchedRW, "B").Resize(numSubAcc).Address
                      getListSource = WsSupple.Name & "!" & adr
                  End If
          End Select
      End Function
      
      Private Function getLastRw(Ws As Worksheet, sCL As String)
          getLastRw = Ws.Columns(sCL).Cells(Rows.Count, 1).End(xlUp).Row
      End Function
      
      ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
      
      
      1、シート名:請求書入力 で勘定科目と補助科目と部門名のセル入力箇所は
                    変更ありません。
      
      2、シート名:勘定補助科目 でセル入力箇所(A列は、勘定科目 B列は、
        補助科目で変更ありません。
      
      3、シート名:部門名 A列 変更ありません。
      
      
      4、Cセットのセル入力
        @勘定科目、補助科目、部門名 A勘定科目、補助科目、部門名
        B勘定科目、補助科目、部門名 C勘定科目、補助科目、部門名 
      
      ルール:勘定科目を選択後、補助科目を選択します。
          入力の順番は@、A、B、Cの順番です。
          (質問;もしAで終わったならば自動的にBには行かないですね。
           手入力で勘定科目にクリックするので。)
      
      リストボックスの運用:リストボックスは、一つです。
      ア)@勘定科目の入力欄を手動でクリックします。→リストボックスの中は
       勘定科目に変わります。→任意の勘定科目をクリックするとその勘定科目に
       関連する補助科目の入力欄にセルが移動します。→リストボックスの中は、
       任意の勘定科目に対しての補助科目に変わります。
      
       次に任意の補助科目をクリックします。→補助科目の入力欄に任意の補助科目
       が入ります。
      
       次に部門名も上記と同様です。
      
      イ)2セット目がある場合は、Aの勘定科目の入力欄を手動でクリックします。
        次は、上記 ア)の順序と同じです。
      
      以上ですが、よろしくお願いいたします。
      
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192255] Re[42]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/21(08:47))
    □U R L/

      表示の追加です。

      リストボックスでコントロールの書式設定
      コントロール:入力範囲   ;勘定補助科目!$B$3:$B$50
             リンクするセル;勘定補助科目!$B$2

      記載しながらふと思ったのですが、入力範囲がシート名:勘定補助科目であるのに
      シート名:請求書入力のリストボックスは、補助科目が選択後、部門名入力セルに
      移るのですが、シート名:部門名はコントロール書式に入っていないのに
      どうしてリストボックスに部門名が表示されるのでしょうか?






      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192257] Re[43]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/21(09:56))
    □U R L/
      >>※個人的には、リストとは空白なんてないものと思っていますけども・
      >思い切ってリストの空白を埋めました。補助科目がない箇所も「その他」を
      >入れました。
      
      1.テスト段階ではそれでいいですが、実際はそこまでする必要はありません。
      
      プログラムの方で、空白を削除してリストボックスの一覧を作りますので、
      最終案のコードが出来たら、元に戻してください。
      ※特に補助科目がないものは空白に戻さないと、実務がおかしくなると思います。
       補助科目がない勘定科目の入力が終わったら、補助科目がない旨をどうやって
       操作者に伝えるか、考えないとならないです。
      
       一案としては、Msgboxで「補助科目はありません。部門名選択に移動します」と出し、
       OKのみ受付にするぐらいですかね。
      
      >リストボックスのマクロ登録を表示とシート名:請求書入力のコードを記載しますので点検をお願いします。
      2.ちょっと分からないです。
        下記3〜4の処理をして、同じ問題が生じるなら言ってください。
      
      3.Sub ListBox1_Click()が二つありますが、最初の方は複数選択型で作ったものです。
       それが使われることはもうありません。どこかに書いてあるなら、消去してください。
      
      4.リストボックスの番号ミスマッチ状態は解消した方がいいと思いますので、
       C4セルを選択して、リストボックスを表示させ、
       リストボックスを右クリックすると、名前ボックス(数式バーの左)に
       現在のリストボックス名が出ますので、それを「リスト 1」に変えてください。
      
               そして、コードのここも 15から1 に変更
                        ↓
       Set LBox = WsInput.ListBoxes("リスト 1")   '実際のリストボックス名に合わせる
      
      >    (質問;もしAで終わったならば自動的にBには行かないですね。
      >     手入力で勘定科目にクリックするので。)
      >イ)2セット目がある場合は、Aの勘定科目の入力欄を手動でクリックします。
      >  次は、上記 ア)の順序と同じです。
      この変更は了解です。
      
      
      >リストボックスでコントロールの書式設定
      >コントロール:入力範囲   ;勘定補助科目!$B$3:$B$50
      >       リンクするセル;勘定補助科目!$B$2
      
      >記載しながらふと思ったのですが、入力範囲がシート名:勘定補助科目であるのに
      >シート名:請求書入力のリストボックスは、補助科目が選択後、部門名入力セルに
      >  :
      >移るのですが、シート名:部門名はコントロール書式に入っていないのに
      >どうしてリストボックスに部門名が表示されるのでしょうか?
      コントロールの入力範囲とリンクするセルには何も入れないでください。
      プログラム側で自動セットします。
      なので汎用リストボックスなんです。
      
      ここでリスト範囲をセットして、非表示から表示モードに変えています。
      
      ElseIf Intersect(Target, Range("C4,C9,C14,C19")) Is Nothing Then
              LBox.ListFillRange = getListSource(Target)
              LBox.Visible = True
      Else 'ユニークな勘定科目のセット
              LBox.ListFillRange = ""
              LBox.List = filteredAcc
              LBox.Visible = True


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192259] Re[44]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/21(13:16))
    □U R L/
      >プログラムの方で、空白を削除してリストボックスの一覧を作りますので、
      >最終案のコードが出来たら、元に戻してください。
      はい、元に戻します。空白削除のプログラム、有難うございました。
      
      >一案としては、Msgboxで「補助科目はありません。部門名選択に移動します」と出>し、OKのみ受付にするぐらいですかね。
      Msgbox、お願いします。
      
      >4.リストボックスの番号ミスマッチ状態は解消した方がいいと思いますので、
       C4セルを選択して、リストボックスを表示させ、
       リストボックスを右クリックすると、名前ボックス(数式バーの左)に
       現在のリストボックス名が出ますので、それを「リスト 1」に変えてください。
      
               そして、コードのここも 15から1 に変更
                        ↓
       Set LBox = WsInput.ListBoxes("リスト 1")   '実際のリストボックス名に合わ>せる
      ●名前ボックスとコードもリスト 1に変更ました。
       そして勘定科目の入力セルをクリックするとエラーメッセージ「指定したアイテ
      ムが見つかりません」と出ました。
      
      他の場所にクリックしても同じエラーメッセージが出ます。そしてリストボックス
      は、消えました。
      
      >コントロールの入力範囲とリンクするセルには何も入れないでください。
      コントロールもリンク先も消去してOKボタンを押したのですが、
      リンク先は、消えましたがコントロールの方は、消えません。
      
      上記が解決しましてリストボックスが表示されましたらリストボックスの
      マクロ登録は、削除してもいいのですか?それともそのままにしておくのですか?
      
      
      
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192260] Re[45]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/21(17:31))
    □U R L/
      最終コード。
       ’請求書入力のシートモジュールにコピペ
       ’リストボックス名は「リスト 1」
       ’マクロの登録は「ListBox1_Click」
       ’勘定科目と補助勘定の元データは中間に空白ありを想定(リストボックスの一覧は詰めて表示)
        ’補助科目を持たない勘定科目があることを想定(スキップする旨、メッセージを出す)
       ’勘定科目が1つの補助科目しか持たない場合、補助科目は自動的にセットする
      
      Private WsSupple As Worksheet
      Private WsInput As Worksheet
      Private WsDept As Worksheet
      Private LBox As ListBox
      Private filteredAcc
      Private filteredSubAcc
      
      Private Sub Worksheet_Activate()
          環境set
      End Sub
      
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          Dim ListSRC
          
          If LBox Is Nothing Then '、無駄に環境setしない
              環境set
          End If
          
          LBox.Visible = False
          
          If Target.Column <> 3 Then
              Exit Sub
          ElseIf Target.Cells.Count > 1 Then
              Exit Sub
          ElseIf Intersect(Target, _
              Range("C4,C5,C6,C9,C10,C11,C14,C15,C16,C19,C20,C21")) Is Nothing Then
              Exit Sub
          ElseIf Not Intersect(Target, Range("C4,C9,C14,C19")) Is Nothing Then '勘定科目
              LBox.ListFillRange = ""
              LBox.List = filteredAcc
              LBox.Visible = True
          Else
              ListSRC = getListSource(Target)
              
              If Left(ListSRC, 1) = "1" Then '勘定科目が1つのみ
                  If Split(ListSRC, "-")(1) = "" Then '補助科目が空白
                      MsgBox "補助科目はありません。部門名選択に移動します", vbOKOnly
                      Target.Value = Empty
                  Else
                      Target.Value = Split(ListSRC, "-")(1)
                  End If
                  Target.Offset(1).Select
                  Exit Sub
              Else
                  LBox.ListFillRange = ListSRC
                  LBox.Visible = True
              End If
              
          End If
      End Sub
      
      Sub ListBox1_Click()
          Dim Target As Range
          If LBox Is Nothing Then '無駄に環境setしない
              環境set
          End If
          
          Set Target = ActiveCell
          Target.Value = LBox.List(LBox.ListIndex)
          
          '次のセルへ飛ぶ
          Select Case Target.Address(0, 0)
              Case "C4": Range("C5").Select
              Case "C5": Range("C6").Select
              Case "C6": Range("C7").Select
                  
              Case "C9": Range("C10").Select
              Case "C10": Range("C11").Select
              Case "C11": Range("C12").Select
                  
              Case "C14": Range("C15").Select
              Case "C15": Range("C16").Select
              Case "C16": Range("C17").Select
                  
              Case "C19": Range("C20").Select
              Case "C20": Range("C21").Select
              Case "C21": Range("C22").Select
              End Select
          End Sub
      
      Private Sub 環境set()
          Dim dicT As Object, lastRW, Acc
          Set dicT = CreateObject("Scripting.Dictionary")
          Set WsSupple = Sheets("勘定補助科目")
          Set WsInput = Sheets("請求書入力")
          Set WsDept = Sheets("部門名")
          Set LBox = WsInput.ListBoxes("リスト 1")   '実際のリストボックス名に合わせる
          
          lastRW = getLastRw(WsSupple, "A")
          For Each Acc In WsSupple.Range("A3").Resize(lastRW - 2).Value
              If Acc <> "" Then
                  dicT(Acc) = Empty
              End If
          Next
          filteredAcc = dicT.keys
          dicT.RemoveAll
          
          
          lastRW = getLastRw(WsSupple, "B")
          For Each Acc In WsSupple.Range("B3").Resize(lastRW - 2).Value
              If Acc <> "" Then
                  dicT(Acc) = Empty
              End If
          Next
          filteredSubAcc = dicT.keys
          dicT.RemoveAll
      End Sub
      
      Private Function getListSource(Target As Range)
          Dim lastRW, adr, AccVal, matchedRW, numSubAcc
          
          If LBox Is Nothing Then '、無駄に環境setしない
              環境set
          End If
          
         Select Case Target.Address(0, 0)
              '部門名処理
          Case "C6", "C11", "C16", "C21" '部門名: Range("C10").Select
              lastRW = getLastRw(WsDept, "A")
              adr = WsDept.Range("A3").Resize(lastRW - 2).Address
              getListSource = WsDept.Name & "!" & adr
              
              '補助科目処理
          Case "C5", "C10", "C15", "C20" '勘定科目があれば、補助科目だけのリストにする
              AccVal = Target.Offset(-1).Value
              
              If AccVal = "" Then  '勘定科目が入ってない場合
                  LBox.ListFillRange = ""
                  LBox.List = filteredSubAcc
      '            lastRW = getLastRw(WsSupple, "A")
      '            adr = WsSupple.Range("A3").Resize(lastRW - 2).Offset(, 1).Address
      '            getListSource = WsSupple.Name & "!" & adr
                  
              Else '勘定科目が入っている場合(これが通例)
                  matchedRW = Application.Match(AccVal, WsSupple.Columns("A"), 0)
                  numSubAcc = Application.CountIf(WsSupple.Columns("A"), AccVal)
                  If numSubAcc = 1 Then '勘定科目が1種類しかない
                      If WsSupple.Cells(matchedRW, "B") <> "" Then
                          getListSource = "1-" & WsSupple.Cells(matchedRW, "B")
                      Else '空白
                          getListSource = "1-"  '補助科目がない情報を渡す
                      End If
                  Else
                      adr = WsSupple.Cells(matchedRW, "B").Resize(numSubAcc).Address
                      getListSource = WsSupple.Name & "!" & adr
                  End If
              End If
          End Select
      End Function
      
      Private Function getLastRw(Ws As Worksheet, sCL As String)
          getLastRw = Ws.Columns(sCL).Cells(Rows.Count, 1).End(xlUp).Row
      End Function


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192264] Re[46]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/21(19:27))
    □U R L/

      半平太さん
      コード記載、有難うございました。

      >請求書入力のシートモジュールにコピペ
       済みです

      >リストボックス名は「リスト 1」
       済みです

      >マクロの登録は「ListBox1_Click」
       済みです
      >勘定科目と補助勘定の元データは中間に空白ありを想定(リストボックスの一覧
       は詰めて表示)
       元データは、中間に空白ありにしています。

      (コントロールの書式設定で入力範囲は消去出来ました。リンクするセルも消去
       済み)

      ところが、勘定科目C4をクリックすればリストボックスには勘定科目が表示
      されますが、その勘定科目をクリックしてもC4は、その勘定科目が表示されませ
      ん。私の方で色々調べているのですが、何がミスしているのかわかりません。

      新コードを書いて頂いたのでこれで半平太さんにゆっくり休んで頂けると
      思っていましたのに、心苦しいです。本当に。








      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [192265] Re[47]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2020/06/21(20:00))
    □U R L/
      >ところが、勘定科目C4をクリックすればリストボックスには勘定科目が表示されますが、
      >その勘定科目をクリックしてもC4は、その勘定科目が表示されません。
      
      1.マクロの登録をもう一度設定し直してください。
        目で確かめるのではなく、実際に設定し直してください。
      
      2. それでもC4セルが更新されない場合
      
      理屈としては、リストボックスの勘定科目をクリックすると下記プロシージャが呼ばれます。
      
      なので、前もって、8行目にStopと入れてから、上と同じ手順を実行してみてください。
      
      Stopで止まりますか。その結果如何で再考します。
      
      
      Sub ListBox1_Click()
      Dim Target As Range
      If LBox Is Nothing Then '無駄に環境setしない
      >        環境set
      End If
      
      Set Target = ActiveCell
      >    Target.Value = LBox.List(LBox.ListIndex)
      
      Stop   ’←臨時に入れる
      
      '次のセルへ飛ぶ
      Select Case Target.Address(0, 0)
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192266] Re[48]: 自動入力-

    記事引用/メール受信=OFF■

    □投稿者/ 愛子 -(2020/06/21(20:37))
    □U R L/

      >1.マクロの登録をもう一度設定し直してください。
      >目で確かめるのではなく、実際に設定し直してください。
      半平太さんのコードを入れ替えました。

      c4の勘定科目をクリックご任意の勘定科目をクリックしましたが、その時に
      エラーが出ました。

      エラー内容
      「マクロ"0621最終マクロ業者請求書.Xlmsリスト1_Chang"を実行できません。
      このブックで使用できないかまたはすべてのマクロが無効になっている可能性
      があります。」





      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++


[次のトピック内容50件]

このトピック内容の全ページ数 / [0] [1] [2]

このトピックへ書きこむ→ [Page:2の返信フォームへ]

- Child Forum -
Edit:ゆう-G