Переменная остается пустой в VBA Do во время итерации - PullRequest
0 голосов
/ 26 февраля 2020

У меня проблемы с тем, что мой макрос не захватывает объект / переменную "book". Он должен извлечь строку из ячейки, а затем проверить, равна ли она строке.

Мой код захватывает только первую строку, а затем становится пустым после первой итерации.

     Dim i%, j%
        i = 37
        j = 1
        Dim TRBfound As Boolean
        Do While TRBfound = False
            book = Cells(i, 1).Value2
            If Left(book, 3) = "TRB" Then
                TRBfound = True

            Else

                Sheets("Sheet2").Select
                Cells(i, 1).Select
                Selection.Copy
                Sheets("Sheet18").Select
                Cells(j, 1).Select

                ActiveSheet.Paste
                i = i + 1
                j = j + 1
            End If
        Loop

        End If

Данные: начинается с A37, который также объединяется с другими ячейками рядом с ним.

AOU          - AOU                              
DSU          - DSU                              
TRBK         - Treasury Book                                
LLE          - US Single Stock                              
SDC          - SDC                              
SZK          - AMRS DELTA 1 RIS                             
TRBK         - Treasury Book                                
TRBK         - Treasury Book                                
TRBK         - Treasury Book                                
TRBK         - Treasury Book                                
TRBK         - Treasury Book                                
TRBK         - Treasury Book    

Переменная, оставшаяся пустой в VBA Do, в то время как целое число

1 Ответ

1 голос
/ 26 февраля 2020

Попытайтесь избегать использования Select в вашем коде.

Мне кажется, это нормально работает:

Dim i As Long
Dim j As Long
Dim TRBfound As Boolean

i = 37
j = 1
Do While TRBfound = False
    book = Sheets("Sheet1").Cells(i, 1).Value2
    If Left(book, 3) = "TRB" Then
        TRBfound = True
    Else
        Sheets("Sheet2").Cells(j, 1).Value = Sheets("Sheet1").Cells(i, 1).Value
        i = i + 1
        j = j + 1
    End If
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...