2017-08-28 3 views
0

私は、(つまり、与えられた列のポイントなど、第一、第五、第十を保つ)のみ指定した間隔で細胞を維持し、残りを削除するには、マクロの削除を選択したセルの列でのみ実行するようにVBAマクロを変更するにはどうすればよいですか?

現在
Dim i As Long 
Dim lastRow As Long 
lastRow = Application.ActiveSheet.UsedRange.Rows.Count 

For i = 2 To lastRow Step 5 
    Range(Rows(i), Rows(i+8)).ClearContents 
Next i 

を以下のマクロを使用していますワークシート全体の行全体。マクロを修正したいのですが、その列のマクロを変更して実行する単一の列の先頭にあるセルを選択できます。

例えば、私はA1:B350とC1:E95(どちらも同じシート上にある)のデータを持っています。私はマクロを実行し、カラムC〜Eを乱すことなくカラムA〜Bのセルの指定された間隔だけを保持したいと考えています。同様に、列Aのデータに影響を与えずに、同じマクロをC列で実行したいとします。この時点で、このタスクを満たすためにこのマクロを変更する方法がわかりません。私は何か助けと指導に感謝します。

答えて

0

次のコードは選択した列にのみ影響しますが、それ以外の場合はすべての値がクリアされているため、ステップを8から12に変更しました。また、useRange関数は意味を持たないかもしれません。うまくいけば、このコードはあなたを始めさせ、あなたは必要に応じて調整することができます。

Sub delColumnData() 
Dim r As Range, col As Long, LastRow As Long, i As Long 
Set r = Application.InputBox("select column", , , Type:=8) 
col = r.Column 
Set r = Cells(1, col) 
LastRow = r.End(xlDown).row 
For i = 2 To LastRow Step 12 
    Range(Cells(i, col), Cells(i + 8, col)).ClearContents 
Next i 
End Sub 

処理するには、複数の列:

Sub delColumnsData() 
Dim r As Range, col As Long, LastRow As Long, i As Long, j As Long 
Set r = Application.InputBox("select column(s)", , , Type:=8) 
For j = 1 To r.columns.Count 
    col = r(j).Column 
    LastRow = r(j).End(xlDown).row 
    For i = 2 To LastRow Step 12 
    Range(cells(i, col), cells(i + 8, col)).ClearContents 
    Next i 
Next j 
End Sub 
+0

トニー、列B-F、A-Kなど? – ClockworkNemo

+0

これで、オリジナルの下に2番目のバージョンが追加されました。 –

0

私は、例えば、列の範囲を含めるには、このコードを修正することについて行くことができる方法の別のオプション


Option Explicit 

Public Sub ClearColumnValues() 
    Dim i As Long, selectedCol As Long 

    selectedCol = Selection.Column 'in this case the Selection object can be convenient 

    With Application.ActiveSheet 
     For i = 1 To .UsedRange.Rows.Count Step 6 
      .Range(.Cells(i + 1, selectedCol), .Cells(i + 5, selectedCol)).ClearContents 
     Next 
    End With 
End Sub 

+0

これは素敵でシンプルなコードですが、間違ったセルを削除します。私はこれを最初に不十分に説明したかもしれません。あなたのコードはA1から始まり、A2、A7などを削除します。私はA1から始まり、ある範囲のセルを削除してから、次に指定されたセルを保持する何かをしようとしています。たとえば、A1で始まり、A2-A6を削除し、A7などを維持する。 – ClockworkNemo

+0

@ClockworkNemo - 私は更新を行った。 –

関連する問題