ここから本文です

VBA カットアンドペースト VBAで差分を抜き出(カット&ペースト)すマクロを作成...

aho********さん

2016/12/3117:59:34

VBA カットアンドペースト

VBAで差分を抜き出(カット&ペースト)すマクロを作成中ですが、
カットアンドペーストが機能しません。

①MACアドレスが作業前後で一致した場合には、F列に●を印として書き込み。
②F列が空白のものは、一致しなかったので差分とする。
③F列が空白になっている、DとE列をG列にカットアンドペーストする。

①②までは出来ていますが、③が何も処理されません。

Sub test()

Dim i As Long '作業前
Dim j As Long '作業後

i = 3

Do While Cells(i, 1) <> ""
j = 3
Do While Cells(j, 4) <> ""
If Cells(i, 1) = Cells(j, 4) Then
Cells(j, 6) = "●"
If Cells(j, 6) = " " Then
Range(Cells(j, 4), Cells(j, 5)).Cut Destination:=Range(Cells(i, 8), Cells(i, 9))
End If
End If
j = j + 1
Loop
i = i + 1
Loop

End Sub

Do While Cells,If Cells,End If,Dim j As Long,Dim i As Long,ahokata01,End Sub

閲覧数:
35
回答数:
1

違反報告

ベストアンサーに選ばれた回答

vcx********さん

2016/12/3119:49:47

ahokata01さん

If Cells(i, 1) = Cells(j, 4) Then
一致したら、

Cells(j, 6) = "●"
●を入れて、

If Cells(j, 6) = " " Then
その後に空白を判断しようとしても絶対に空白ではありません。
このコードがコピペなら、半角の空白が間に入ってますし、、、

提示のコードを修正するなら、●をつけた後に改めてループする。

Sub Test1()
Dim i As Long '作業前
Dim j As Long '作業後

i = 3
Do While Cells(i, 1) <> ""
  j = 3
  Do While Cells(j, 4) <> ""
    If Cells(i, 1) = Cells(j, 4) Then
       Cells(j, 6) = "●"
    End If
    j = j + 1
  Loop
  i = i + 1
Loop

i = 3: j = 3
Do While Cells(j, 4) <> ""
  If Cells(j, 6) = "" Then
     Range(Cells(j, 4), Cells(j, 5)).Cut _
     Destination:=Cells(i, 7)
     i = i + 1
  End If
  j = j + 1
Loop

End Sub


別案として Find等を使う、、、など。

Sub Test2()
Dim r As Range, fr As Range, i As Long
i = 3
With ActiveSheet
    For Each r In .Range("D3", .Cells(.Rows.Count, "D").End(xlUp))
        Set fr = .Columns(1).Find _
        (what:=r.Value, LookIn:=xlValues, lookat:=xlWhole)

        If Not fr Is Nothing Then
           r.Offset(0, 2).Value = "●"
        Else
           r.Resize(1, 2).Cut Destination:=.Range("G" & i)
           i = i + 1
        End If
    Next r
End With
End Sub

  • 質問者

    aho********さん

    2016/12/3120:03:01

    >If Cells(j, 6) = "" Then
    >その後に空白を判断しようとしても絶対に空白ではありません。

    考えてみたら、そうですね。。。。

    無事解決しました!!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2016/12/31 20:03:27

ありがとございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる