выберите всю строку с гибкостью - PullRequest
0 голосов
/ 17 апреля 2020

Я ищу способ выбрать всю строку, но пропустить первые 3 столбца той же строки без использования команды range (). Какую команду я могу использовать?

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете использовать комбинацию Cells и Resize:

Range.Cells Property

Range.Resize Property

В зависимости от того, как вы задаете вопрос (пропустите первый столбец или первый столбец), вы можете использовать комбинацию следующим образом:

Option Explicit

Sub EntireSkipColumns()
    Dim ws As Worksheet: Set ws = ActiveSheet
    Dim rng As Range
    Dim FR As Long: FR = 2
    Dim LR As Long: LR = 10
    Dim i As Long
    Dim j As Long: j = 3  ' Skip first 3 columns
    For i = FR To LR
        Set rng = ws.Cells(i, j + 1).Resize(, ws.Columns.Count - j)
        With rng
            ' To check if the range is correct.
            Debug.Print .Address(False, False)
            ' Cycle Interior ColorIndex
            '.Interior.ColorIndex = i
        End With
    Next i
End Sub

Sub EntireFirstColumn()
    Dim ws As Worksheet: Set ws = ActiveSheet
    Dim rng As Range
    Dim FR As Long: FR = 2
    Dim LR As Long: LR = 10
    Dim i As Long
    Dim j As Long: j = 4  ' Use 4 as the first column
    For i = FR To LR
        Set rng = ws.Cells(i, j).Resize(, ws.Columns.Count - j + 1)
        With rng
            ' To check if the range is correct.
            Debug.Print .Address(False, False)
            ' Cycle Interior ColorIndex
            '.Interior.ColorIndex = i
        End With
    Next i
End Sub

РЕДАКТИРОВАТЬ:

Set rngTarget = rngTarget.Offset(1) используется только для перемещения каждого результата на строку ниже.

Sub QualifyCellsToo()

    Dim wsSource As Worksheet: Set wsSource = ThisWorkbook.Worksheets("Sheet1")
    Dim wsTarget As Worksheet: Set wsTarget = ThisWorkbook.Worksheets("Sheet2")
    Dim rngSource As Range
    Dim rngTarget As Range

    ' This is wrong:
    'Worksheets("sheets1").Range(Cells(3, 4), Cells(3, 9)).Copy _
       Worksheets("sheets2").Range(Cells(3, 4), Cells(3, 9))

    ' You have to qualify 'Cells', too:
    Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(3, 4), _
    Worksheets("Sheet1").Cells(3, 9)).Copy _
    Worksheets("Sheet2").Range(Worksheets("Sheet2").Cells(3, 4), _
    Worksheets("Sheet2").Cells(3, 9))
    ' This is a long expression, so using variables is preferred.
    Set rngSource = wsSource.Range(wsSource.Cells(3, 4), wsSource.Cells(3, 9))
    Set rngTarget = wsTarget.Range(wsTarget.Cells(3, 4), wsTarget.Cells(3, 9))

            Set rngTarget = rngTarget.Offset(1)
            rngTarget.Resize(10).Clear

    ' Copy values or formulas and formats using same sized ranges.
    rngSource.Copy rngTarget
            Set rngTarget = rngTarget.Offset(1)
    ' Copy values or formulas and formats using only the first cell
    ' of Target Range.
    rngSource.Copy rngTarget.Cells(1)
            Set rngTarget = rngTarget.Offset(1)

    ' Copy values
    rngTarget.Value = rngSource.Value
            Set rngTarget = rngTarget.Offset(1)
    ' Copy values using target without '.Value'
    rngTarget = rngSource.Value
            Set rngTarget = rngTarget.Offset(1)

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...