Диапазон вывода такой же, как и диапазон ввода - PullRequest
0 голосов
/ 28 мая 2019

У меня есть история работы с VBA, но я не могу найти решение этой проблемы.Я нашел процесс итерации, чтобы выбрать ячейку, выполнить процесс, а затем выбрать следующую ячейку и повторить процесс до NULL.У меня проблема с выводом каждого из решений процессов в следующий столбец.Вот что у меня есть:

Sub Name ()

Dim X As Integer
Dim MyString as String

Application.ScreenUpdating = False
NumRows = Range("D2", Range("D2").End(xlDown)).Rows.Count
Range("D2").Select
For X = 1 To NumRows
    MyString = ActiveCell.Value
    MyString = Right(MyString, Len(MyString)-6)
    Range("I2 to I#").Value = MyString
    ActiveCell.Offset(1,0).Select
Next X

End Sub

Range("I2 to I#").Value = MyString - это строка, с которой мне нужна помощь.Мне нужно увеличить его до I3, I4, I5 и т. Д., Пока он не достигнет числа NumRows.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

При работе с ячейками лучший способ их прокрутить - For Each Cell in Range, поэтому, если принять во внимание то, что в комментариях сказано, что вы не должны выбирать, это должно помочь вам:

Option Explicit
Sub Name()

    Dim C As Range, MyRange As Range
    Dim LastRow As Long

    Application.ScreenUpdating = False
    With ThisWorkbook.Sheets("MySheet") 'Change MySheet for your working sheet name
        LastRow = .Cells(.Rows.Count, "D").End(xlUp).Row 'last row on column D
        Set MyRange = .Range("D2:D" & LastRow) 'declare your working range
        For Each C In MyRange
            If Not C = vbNullString Then .Cells(C.Row, "I") = Right(C, Len(C) - 6)
        Next C
    End With
    Application.ScreenUpdating = True

End Sub
0 голосов
/ 28 мая 2019

Другое решение - Do Until.Вы можете использовать этот метод, если у вас нет пустых ячеек в середине ваших данных.

Option Explicit

Sub Test()

    Dim StartingPoint As Long

    StartingPoint = 2 'Set the line to begin

    With ThisWorkbook.Worksheets("Sheet1") 'Set the worksheet

        Do Until .Cells(StartingPoint, "D").Value = "" 'Repeat the process until you find empty cell

           .Cells(StartingPoint, "I").Value = Right(.Cells(StartingPoint, "D").Value, Len(.Cells(StartingPoint, "D").Value) - 6)

           StartingPoint = StartingPoint + 1

        Loop

    End With

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