Код VBA для поиска строки и, если строка найдена, вставьте в другой лист - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь написать код VBA, в котором есть строка, упомянутая в ячейке (search_string согласно коду). Я ищу эту строку в другом рабочем листе (MasterRolePLMap), и, если строка соответствует, я должен скопировать всю строку и вставить ее в другой рабочий лист (представление на предмет соответствия). Когда я пытаюсь вставить значение, возникает ошибка отладки: «Копировать все ячейки с одного листа на другой, начиная с R1c1»

ниже - мой код

Sub Click_1()
    Dim key As String
    Dim size As Integer
    row_number = 0
    search_string = Sheets("CompetencyView").Range("B5")
    Sheets("CompetencyView").Activate
    Sheets("CompetencyView").Unprotect Password = "ritu"
    Sheets("CompetencyView").Range("A12").Select
    Do
        If IsEmpty(ActiveCell) = False Then
            Range(ActiveCell, ActiveCell.Offset(0, 11)).Delete shift:=xlUp
        End If
    Loop Until IsEmpty(ActiveCell) = True     'Clearing the previous data
    lastrow = Sheets("MasterRolePLMap").Cells(Rows.Count, 1).End(xlUp).Row    'No of rows in MasterRolePLMap
    Do
        row_number = row_number + 1
        Comp_Name = Sheets("MasterRolePLMap").Range("A" & row_number)
        If InStr(Comp_Name, search_string) > 0 Then
            Sheets("MasterRolePLMap").Rows.Copy
            Sheets("CompetencyView").Activate
            Sheets("CompetencyView").Range("A1").Select
            ActiveSheet.Paste
            Sheets("MasterRolePLMap").Activate
        End If
    Loop Until Comp_Name = ""
End Sub

1 Ответ

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

Здесь было много кода, который не нужен, вы определили переменные и никогда не использовали их, тогда вы использовали переменные, которые вы никогда не определили.

Я вычистил его как мог но без ваших данных, чтобы проверить, я не знаю, будет ли это работать.

Попробуйте это и доложите:

Sub Click_1()
    Dim Comp_Name As String, search_string As String, row_number As Long
    row_number = 0
    search_string = Sheets("CompetencyView").Range("B5")
    Sheets("CompetencyView").Activate
    Sheets("CompetencyView").Unprotect Password = "ritu"
    Sheets("CompetencyView").Range("A12:A" & Range("A" & Rows.Count).End(xlUp).Row).Delete shift:=xlUp
    Do
        row_number = row_number + 1
        Comp_Name = Sheets("MasterRolePLMap").Range("A" & row_number)
        If InStr(Comp_Name, search_string) > 0 Then
            Sheets("MasterRolePLMap").Rows(row_number).Copy 'Changed this to copy the row you need
            Sheets("CompetencyView").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Paste 'I don't think you want to always paste to row 1 as you will just keep overwriting it so I changed it to offset the existing data
        End If
    Loop Until Comp_Name = ""
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...