0
    Dim iRow As Long
    Dim CopyRange As String

    iRow = (ActiveCell.Row)
    Let CopyRange = "M" & iRow & ":" & "T" & iRow

    Range(CopyRange).ClearContents

私はこのコードを持っており、CopyRange の 2 番目の部分 (「T」と iRow) をカバー シートに基づく変数として宣言する必要があります。

列 M から X は 12 か月を表すため、カバー シートを Septemper に変更するたびに、たとえば入力シートの値が 9 に変更されるため、choose メソッドを使用すると、この場合は列 U である現在の月が選択されます。

私がする必要があるのは、この場合、表紙を列 M (1 月) から列 T (8 月) に変更するときに、現在の月以外のすべてのコンテンツをクリアすることです。

私はこのようなことを考えてきました:

    Sheets("Inputs").Range("H3") = C
    Let CopyRange = "M" & iRow 
    let iCopyRange = C-1 & iRow 

    Cells (CopyRange, iCopyRange).ClearContents

ちょっと変です!!

4

1 に答える 1

0

範囲 (および列) にアクセスするには、さまざまな方法があります。あなたが求めている機能の種類については、文字に頼らないほうがよさそうです。次のようなことができます:

Dim startCol As Long: startCol = 13  'Col M
Dim curMonth As Long: curMonth = 8 'August
Dim endCol As Long: endCol = startCol + curMonth - 1

Range(Columns(startCol), Columns(endCol)).ClearContents

このコードは、指定された月を数値形式で取得し、入力月を含むそれ以前のすべての月の内容をクリアします。Sheets("Inputs").常に同じワークシートで作業している場合は、ビットを追加する必要がないことに注意してください。ワークシートを変更する場合は、問題を回避するために追加することをお勧めします。

Sheets("Inputs").Range(Sheets("Inputs").Columns(startCol), Sheets("Inputs").Columns(endCol)).ClearContents

アップデート:

列全体を削除するのではなく、特定の行のみを削除することに関心がある場合 (たとえば、 のみiRow); あなたは頼るべきですCells

Range(Cells(iRow, startCol), Cells(iRow, endCol)).ClearContents
于 2013-09-29T09:42:32.370 に答える