お世話になっております。皆様にアドバイスを頂きながら、四苦八苦しながら
コードを書いております。空白行の削除&上に詰める処理で、どうしてもエラーが
でてしまい、朝から四苦八苦しております。
下記コードを実行すると、しっかりと、D列、E列は空白セルを削除し、
上に詰めることができました。以下の画像参照。
コード抜粋
vba
1'D列、E列の空白行を削除して上に詰める 2 3Dim D_MaxRow As Long 'D列に格納さている最大行数 4Dim Dell_Row As Long '削除する行 5 6D_MaxRow = Cells(Rows.Count, 4).End(xlUp).Row 7 8For Dell_Row = D_MaxRow To 3 Step -1 9 If Cells(Dell_Row, 4) = "" Then 10 11 Range(Cells(Dell_Row, 4), Cells(Dell_Row, 5)).Delete shift:=xlShiftUp 12 End If 13Next Dell_Row 14
しかし、F列も空白セルを削除して上に詰めたいと思い、以下のコードを実行したところ、Range(Cells(Dell_Row, 6)).Delete shift:=xlShiftUpのコードで、
Rangeメソッドは失敗しました。'_Global'オブジェクトと出てエラーとなってしまいます。
ちなみに、デバックしてみた所、Dell_Rowには7が入っているので、ループの中を
1週はしている感じです。
コード抜粋
vba
1'F列の空白行を削除して上に詰める 2 3Dim F_MaxRow As Long 4F_MaxRow = D_MaxRow 5 6For Dell_Row = F_MaxRow To 3 Step -1 7 If Cells(Dell_Row, 6) = "" Then 8 Range(Cells(Dell_Row, 6)).Delete shift:=xlShiftUp 9 End If 10Next Dell_Row
なぜ、エラーとなってしまうのでしょう??また、
D列、E列、F列の空白セルを一辺に削除し、上に詰める方法はないものでしょうか?
コード全体
vba
1 2'差分抽出マクロ 3 4Sub test1() 5Dim i As Long '作業前用カウンタ変数 6Dim j As Long '作業後用カウンタ変数 7Dim diff As Long '差分書き出し用変数 8Dim A_MaxRow As Long 9Dim D_MaxRow As Long 10Dim F_MaxRow As Long 11Dim Dell_Row As Long 12 13'作業前のMACを元に作業後のMACアドレスの比較を行う 14i = 3 15 Do While Cells(i, 1).Value <> "" 16 j = 3 17 Do While Cells(j, 4).Value <> "" 18 If Cells(i, 1) = Cells(j, 4) Then 19 Cells(i, 3).Value = "after_match" '作業後のMAC有り 20 End If 21 j = j + 1 22 Loop 23 i = i + 1 24 Loop 25 26'作業後のMACを元に作業前のMAアドレスんの比較を行う 27j = 3 28 Do While Cells(j, 4).Value <> "" 29 i = 3 30 Do While Cells(i, 1).Value <> "" 31 If Cells(j, 4) = Cells(i, 1) Then 32 Cells(j, 6).Value = "befor_match" 33 End If 34 i = i + 1 35 Loop 36 j = j + 1 37 Loop 38 39'xx_matchが無いものが差分なので別セルへ抜き出す 40'作業前でafter_matchが無いMACとホスト名を別セル(h列、i列)へ抜き出す 41diff = 3 42A_MaxRow = Cells(Rows.Count, 1).End(xlUp).Row 43 44 For i = 3 To A_MaxRow 45 If Cells(i, 3).Value <> "" Then 46 47 Else 48 Range(Cells(i, 1), Cells(i, 2)).Cut Destination:=Range(Cells(diff, 8), Cells(diff, 9)) 49 diff = diff + 1 50 End If 51 Next i 52 53 54'作業後でbefor_matchが無いMACとホスト名を別セル(j列、l列)へ抜き出す 55diff = 3 56D_MaxRow = Cells(Rows.Count, 4).End(xlUp).Row 57 58 For j = 3 To D_MaxRow 59 If Cells(j, 6).Value <> "" Then 60 61 Else 62 Range(Cells(j, 4), Cells(j, 5)).Cut Destination:=Range(Cells(diff, 10), Cells(diff, 11)) 63 diff = diff + 1 64 End If 65 Next j 66 67 68'D列、E列の空白行を削除して上に詰める 69 70For Dell_Row = D_MaxRow To 3 Step -1 71 If Cells(Dell_Row, 4) = "" Then 72 73 Range(Cells(Dell_Row, 4), Cells(Dell_Row, 5)).Delete shift:=xlShiftUp 74 End If 75Next Dell_Row 76 77'F列の空白行を削除して上に詰める 78 79F_MaxRow = D_MaxRow 80 81For Dell_Row = F_MaxRow To 3 Step -1 82 If Cells(Dell_Row, 6) = "" Then 83 Range(Cells(Dell_Row, 6)).Delete shift:=xlShiftUp 'ここでエラーになる。 84 End If 85Next Dell_Row 86 87End Sub 88
どなたかご教授下さい。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/01/02 06:14
2017/01/02 07:00
退会済みユーザー
2017/01/02 08:52
2017/01/02 10:09
2017/01/02 10:21