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に入力して > という動作を実装したい 日本語として破綻していませんか? 読み返してみて分かりますか? 処理前と処理後をそれぞれ表形式で示したほうが分かりやすいのでは? できるだけ相手に分かりやすく伝えたほうが、回答も得られやすいと思います。 |
[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/ 解決マーク用の返信 |
このトピックに書きこむ |
---|