Найти используемый диапазон для копирования - PullRequest
0 голосов
/ 14 марта 2019

Я создаю лист для отслеживания каналов в социальных сетях и использую VBA для автоматизации копирования / вставки для выбора данных.

Это мой первый опыт работы с VBA, поэтому я немного борюсь ...

Я написал этот код:

Sub Copy_Results_LeukaTwitter()
Sheets("Twitter_LeukaPasteSheet").Select
    Range("B2:B50").Select
    Selection.Copy
    Sheets("SocialResults").Select
    Range("b2").Select
    ActiveSheet.Paste
    Range("a2:a50") = "Twitter - @leadleukaemia"
Sheets("Twitter_LeukaPasteSheet").Select
    Range("F2:F50").Select
    Selection.Copy
    Sheets("SocialResults").Select
    Range("G2").Select
    ActiveSheet.Paste
Sheets("Twitter_LeukaPasteSheet").Select
    Range("G2:G50").Select
    Selection.Copy
    Sheets("SocialResults").Select
    Range("F2").Select
    ActiveSheet.Paste
Sheets("Twitter_LeukaPasteSheet").Select
    Range("H2:H50").Select
    Selection.Copy
    Sheets("SocialResults").Select
    Range("H2").Select
    ActiveSheet.Paste
Sheets("Twitter_LeukaPasteSheet").Select
    Range("D2:D50").Select
    Selection.Copy
    Sheets("SocialResults").Select
    Range("c2").Select
    ActiveSheet.Paste
    End Sub

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

Вот снимок экрана данных, которые я вставляю из Twitter_LeukaPasteSheet

enter image description here

1 Ответ

1 голос
/ 14 марта 2019

Вы не должны использовать копирование / вставку, поскольку это очень неэффективно.Этот код будет сначала смотреть, чтобы увидеть, какая последняя использованная строка находится на вашем листе Social Results, и добавить 1 (потому что это строка, которую должны начать вставлять новые данные).Тогда вместо копирования / вставки вы можете просто установить ячейки равными тому, что вы хотите.Это намного быстрее, так как не требует перехода на другие листы.

Sub Copy_Results_LeukaTwitter()
    Dim lngRow As Long
    Dim shtTo As Worksheet, shtFrom As Workbook

    'Sets the sheet that the data will be copied to and from
    Set shtTo = Sheets("SocialResults")
    Set shtFrom = Sheets("Twitter_LeukaPasteSheet")

    'finds the last row in that sheet with data and adds 1; assuming that column A has data (if not change the column name)
    lngRow = shtTo.Cells(shtTo.Rows.Count, "A").End(xlUp).Row + 1

    'set values
    shtTo.Range("B" & lngRow & ":B" & lngRow + 49).Value = shtFrom.Range("B2:B50").Value
    shtTo.Range("A" & lngRow & ":A" & lngRow + 49).Value = "Twitter - @leadleukaemia"
    shtTo.Range("G" & lngRow & ":G" & lngRow + 49).Value = shtFrom.Range("F2:F50").Value
    shtTo.Range("F" & lngRow & ":F" & lngRow + 49).Value = shtFrom.Range("G2:G50").Value
    shtTo.Range("H" & lngRow & ":H" & lngRow + 49).Value = shtFrom.Range("H2:H50").Value
    shtTo.Range("C" & lngRow & ":C" & lngRow + 49).Value = shtFrom.Range("D2:D50").Value

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