戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
VBAを2回実行するとデータが増えてしまう

    [194559] VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ 中村 -(2021/12/24(14:28))
    □U R L/
      環境
      windows10
      Excel2019
      
      Option Explicit
      
      Sub TTの場合()
      
      Dim FRng As Range
      Dim Fst As String
      Dim Cnt As Long
      
      
      Set FRng = Range("B1:B500").Find(what:="TT*", LookAt:=xlWhole)
      
      If Not FRng Is Nothing Then
      
       Fst = FRng.Address
       
          Do
          FRng.Offset(0, -1).Value = "'AB01"
          FRng.EntireRow.Copy
          FRng.EntireRow.Insert
          FRng.Offset(0, -1).Value = "'CD02"
          
      
       Set FRng = Range("B1:B500").FindNext(FRng)
      
       Loop Until FRng.Address = Fst
      
      End If
      
      
      Set FRng = Nothing
      
      End Sub
      
      
      B列に参照するデータが入力されており、そのデータの先頭がTTの場合
      A列にAB01、B列のデータをコピーして一行下のA列にCD02と入力をしたい
      1回だけ実行するとうまく動作するのですが、2回実行すると表のB列にデータが追加されてしまいます
      
      2回実行してもデータが増えないようにするにはどうしたらよいのでしょうか
      
      
      


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

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




    [194560] Re[1]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ ひまじん -(2021/12/24(14:33))
    □U R L/
      一回処理されたらFRng.Offset(0, -1).ValueにはAB01が入るなら
      If FRng.Offset(0, -1).Value <> "AB01" Thenのときだけ処理するだけでしょ。


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

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




    [194566] Re[2]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ 中村 -(2021/12/26(22:27))
    □U R L/
      Option Explicit
      
      Sub TTの場合()
      
      Dim FRng As Range
      Dim Fst As String
      Dim Cnt As Long
      
      Set FRng = Range("B1:B500").Find(what:="TT*", LookAt:=xlWhole)
      
      
      If FRng.Offset(0, -1).Value <> "AB01" Then
      
      
      Fst = FRng.Address
       
       Do
              FRng.Offset(0, -1).Value = "AB01"
              FRng.EntireRow.Copy
              FRng.EntireRow.Insert
              FRng.Offset(0, -1).Value = "'CD02"
          
          Else
          
      
      Set FRng = Range("B1:B500").FindNext(FRng)
      
      Loop Until FRng.Address = Fst
      End If
      
      
      Set FRng = Nothing
      
      End Sub
      
      
      
         A      B
      1      TT-00-ZZ
      2      KK-11-AA
      3      AD-22-PP
      4      TT-00-ZZ
      
      B1のTT-00-ZZにAB01をA1に入力して
      B2にTT-00-ZZを挿入してCD02をA2に入力して
      B4のTT-00-ZZにAB01をA1に入力して
      B5B2にTT-00-ZZを挿入してCD02をA2に入力して
      という動作を実装したいのですが、上記VBAですとうまく動作しません


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

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




    [194569] Re[3]: VBAを2回実行するとデータが増えてしまう-

    保留中です・・・ / 記事引用/メール受信=OFF■

    □投稿者/ 中村 -(2021/12/27(15:40))
    □U R L/

      別のサイトで聞いてみます




    [194571] Re[4]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ ひまじん -(2021/12/28(21:59))
    □U R L/

      何でループの外で判定しているのかイミフ・・・
      もう見てないかもしれませんけどねw




    [194572] Re[5]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ とおりすがり -(2021/12/29(15:45))
    □U R L/
      If  Else  EndIf と DO Loop が交差しているので、
      文法エラーになるはず。
      そもそも実行できないのでは?
      
      > B1のTT-00-ZZにAB01をA1に入力して
      > B2にTT-00-ZZを挿入してCD02をA2に入力して
      > B4のTT-00-ZZにAB01をA1に入力して
      > B5B2にTT-00-ZZを挿入してCD02をA2に入力して
      > という動作を実装したい
      日本語として破綻していませんか? 読み返してみて分かりますか?
      
      処理前と処理後をそれぞれ表形式で示したほうが分かりやすいのでは?
      
      できるだけ相手に分かりやすく伝えたほうが、回答も得られやすいと思います。
      
      
      


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

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




    [194573] Re[6]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ 中村 -(2021/12/29(19:59))
    □U R L/

      ひまじんさん
      返信ありがとうございます
      まだ見ています

      A B
      1 TT-00-ZZ
      2 KK-11-AA
      3 AD-22-PP
      4 TT-00-ZZ

      このような表があります
      VBAを実行すると

      A    B
      1 AB01 TT-00-ZZ
      2 CD02 TT-00-ZZ
      3   KK-11-AA
      4   AD-22-PP
      5 AB01   TT-00-ZZ
      6 CD02 TT-00-ZZ

      となるようなVBAを作成したいのです
      色々なサイトを見てコピペでここまで作りました




    [194574] Re[7]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ マナ -(2021/12/29(20:57))
    □U R L/
      別案
      
      Sub test()
          Dim k As Long
          
          For k = Cells(Rows.Count, "B").End(xlUp).Row To 1 Step -1
              If Cells(k, "B").Value Like "TT*" Then
                  If Cells(k, "A").Value = "" Then
                      Rows(k).Copy
                      Rows(k).Insert
                      Cells(k, "A").Resize(2).Value = [{"AB01";"CD02"}]
                  End If
              End If
          Next
          
      End Sub
      


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

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




    [194575] Re[7]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ ひまじん -(2021/12/29(20:59))
    □U R L/

      あら、まだ見られてたのですね。
      とりあえずやりたい事はできたんですかね?
      おめでとうございます。




    [194576] Re[8]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ 中村 -(2021/12/31(11:44))
    □U R L/

      年の瀬にありがとうございます

      ひまじんさん
      マナさん
      とおりすがりさん
      返信ありがとうございました

      理解力がまるで足りず申し訳ありませんでした

      マナさんのVBAでやりたいことが実現できました

      ありがとうございました




    [194577] Re[9]: VBAを2回実行するとデータが増えてしまう-

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

    □投稿者/ 中村 -(2021/12/31(11:45))
    □U R L/

      解決マーク用の返信



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

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

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


- Child Forum -
Edit:ゆう-G