戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
データに該当情報がある場合、台帳に書出すコードについて

    [196516] データに該当情報がある場合、台帳に書出すコードについて-

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

    □投稿者/ VBA初心者 -(2025/04/16(11:22))
    □U R L/

      全先台帳シートと年度データがあり、

      シートモジュール(Worksheets("全先台帳"))でのコマンドで
      下記コードを実行したのですが、うまくいきません
      どなたかご教示頂ければ幸いです

      全先台帳シートのキー=T列
      年度データシートのキー=B列
      として

      全先台帳シートのI列に何も無い場合

      年度データシートのI列、K列、L列、M列、N列、O列、P列から
      全先台帳シートのI列、J列、K列、L列、M列、N列、O列に
      それぞれそのセル内容を取り込みたいのです

      VBAコード内容
      Private Sub CommandButton6_Click()
      V画面更新停止
          Application.Calculation = xlCalculationManual      V手動計算
         Dim Lastrow As Long, r As Long, r2 As Long
         Lastrow = Cells(Rows.Count, 2).End(xlUp).Row
       r = 2
       r2 = 2
       Do Until r > Lastrow
           If Cells(r, WTW) = Worksheets(W年度データW).Cells(r2, WBW) Then
              If Cells(r, WIW) = WW Then
                  Cells(r, WIW) = Worksheets(W年度データW).Cells(r2, WIW)
                  Cells(r, WJW) = Worksheets(W年度データW).Cells(r2, WKW)
                  Cells(r, WKW) = Worksheets(W年度データW).Cells(r2, WLW)
                  Cells(r, WLW) = Worksheets(W年度データW).Cells(r2, WMW)
                  Cells(r, WMW) = Worksheets(W年度データW).Cells(r2, WNW)
                  Cells(r, WNW) = Worksheets(W年度データW).Cells(r2, WOW)
                  Cells(r, WOW) = Worksheets(W年度データW).Cells(r2, WPW)
              End If
           End If
            r = r + 1
          r2 = r2 + 1
       Loop
           
      V画面更新再開
         Application.Calculation = xlCalculationAutomatic  V自動計算

         MsgBox W終了ですW
      End Sub




      ++++++++++++++++++++
      OS      ⇒Windows 11
      Version⇒Excel 2019
      ++++++++++++++++++++




    [196517] Re[1]: データに該当情報がある場合、台帳に書出すコードについて-

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

    □投稿者/ 半平太 -(2025/04/19(12:46))
    □U R L/
      1.Lastrowを求める列が、全先台帳シートのB列でいいのかどうか。
      
      2.T列とB列にキーがあるとの話なのに、
        同一行番号のデータが同じかどうかしかチェックしていないのはちょっと解せない。




    [196518] Re[2]: データに該当情報がある場合、台帳に書出すコードについて-

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

    □投稿者/ VBA初心者 -(2025/04/19(15:24))
    □U R L/

      半平太さん、ありがとうございます。

      >1.Lastrowを求める列が、全先台帳シートのB列でいいのかどうか。

      全先台帳シートのB列が顧客NOのキーなので
      顧客NOがある行が最後であれば、そこまでと考えました。


      >2.T列とB列にキーがあるとの話なのに、
        同一行番号のデータが同じかどうかしかチェックしていないのはちょっと解せな>い。


      「全先台帳」シートの ユニークキー:T列=B列(顧客NO)+H列(納付月)
      「年度データ」シートのユニークキー:B列=D列(顧客NO)+J列(納付月)

      ここで

      どちらのシートのI列を検索すると
      「全先台帳」シートにはその列以降、I列〜O列まで
      セル内容が空白の場合が有り、
      その場合、「年度データ」のレコードから

      Cells(r, WIW) = Worksheets(W年度データW).Cells(r2, WIW)
                  〜
      Cells(r, WOW) = Worksheets(W年度データW).Cells(r2, WPW)

      までを書き出したいのです。

      コードをうまく表せず、混乱させてすみません。

      ご指導よろしくお願いいたします。
       




    [196519] Re[3]: データに該当情報がある場合、台帳に書出すコードについて-

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

    □投稿者/ 半平太 -(2025/04/19(16:49))
    □U R L/
      引き続きよく分からない部分がありますが、
      下の様な処理をするのが常識的かと思われます。
      
      Private Sub CommandButton6_Click()
          Dim Lastrow As Long, r As Long, r2 As Variant, msg As String
          
          ’画面更新停止
          Application.Calculation = xlCalculationManual  ’手動計算
          
          Lastrow = Cells(Rows.Count, 2).End(xlUp).Row
          r = 2
          
          With Worksheets(”年度データ”)
              Do Until r > Lastrow
                  If Cells(r, "I") = "" Then
                      r2 = Application.Match(Cells(r, "T"), .Columns("B"), 0)
      
                      If IsNumeric(r2) Then
                          Cells(r, "I") = .Cells(r2, "I").Value
                          Cells(r, "J").Resize(1, 6) = .Cells(r2, "K").Resize(1, 6).Value
                      Else
                          msg = msg & r & "行目の " & Cells(r, "T") & vbCrLf
                      End If
                  End If
                  
                  r = r + 1
              Loop
          End With
          
          ’画面更新再開
          Application.Calculation = xlCalculationAutomatic  ’自動計算
          
          If msg <> ”” Then
              msg = "年度データMissing" & vbCrLf & msg
              MsgBox msg
          Else
              MsgBox ”終了です”
          End If
      End Sub
      


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

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




    [196520] Re[4]: データに該当情報がある場合、台帳に書出すコードについて-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ VBA初心者 -(2025/04/19(19:41))
    □U R L/

      半平太さん
      大変ありがとうございました。
      うまく動作しました。

      まだ、コード内容は理解がおよびませんが、
      勉強したいと思います。

      いつも大変お世話になりました。



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

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G