前提・実現したいこと
VBA入門者です。VBAで画像のsheet1の"C000...=..."という値が入っている行の=より右の値6個をsheet2のX=、Y=、Z=、W=、P=、R=の順(sheet1でいう一番左の値をX=に代入)に単位は残して、数字の部分だけ入れ替えたいと思い、ネットサーフィンをし、なんとか以下のプログラムを作成しました。
プログラムの実行はできたのですが、以下の画像②のように入れ替える量を増やすと実行されません。本番では、もっと大量の値を交換したいです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
VBA
1ソースコード 2```Sub Sample() 3Dim buf1, buf2, tmp2 4Dim i As Long, j As Long, n As Long, m As Long, r As Long 5Dim sh1 As Worksheet, sh2 As Worksheet 6Application.ScreenUpdating = False 7Set sh1 = Sheets("Sheet1") 8Set sh2 = Sheets("Sheet2") 9r = 1 10For i = 6 To sh1.Cells(Rows.Count, "A").End(xlUp).Row 11If sh1.Cells(i, "A") Like "C*" Then 12For j = 1 To 6 13If j > 3 Then 14n = j - 3 15m = 1 16Else 17n = j 18m = 0 19End If 20buf2 = Split(sh2.Cells(r, n).Offset(m), "=") 21tmp2 = Split(Trim(buf2(1)), Chr(32))(0) 22Select Case InStr(sh1.Cells(i, j), "=") 23Case Is <> 0 24buf1 = Split(sh1.Cells(i, j), "=") 25sh1.Cells(i, j) = buf1(0) & "=" & tmp2 26sh2.Cells(r, n).Offset(m).Replace tmp2, buf1(1), LookAt:=xlPart 27Case Else 28buf1 = sh1.Cells(i, j) 29sh1.Cells(i, j) = tmp2 30sh2.Cells(r, n).Offset(m).Replace tmp2, buf1, LookAt:=xlPart 31End Select 32Next j 33End If 34r = r + 3 35Next i 36Application.ScreenUpdating = True 37End Sub 38 39 40### 試したこと 41 42ここに問題に対して試したことを記載してください。 43 44### 補足情報(FW/ツールのバージョンなど)
> 以下の画像②のように入れ替える量を増やすと実行されません
デバッグでブレークポイント追加してステップ実行でどうなってるか確認しましたか?
①で動いている以上、②にしたからといって全く実行されないということはないと思います。
違うブックを開いて実行したなどはありませんか?
https://teratail.com/questions/308838
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10235351785
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10235524460
退会してますし、丸投げですし、自分でまったく書いてないですよね。
知恵袋で解決したようです。