Хобрук: Ваш путь к мастерству в программировании

Выбор и копирование одного столбца VBA (из последней ячейки в последнюю ячейку с данными) дает метод «диапазон» объекта _Global

Цель моего кода:

  • Очистите два столбца назначения

  • На исходном листе перейдите к последней ячейке (1048576) в определенном столбце снизу, перейдите к последней ячейке с данными и выберите оттуда верхнюю ячейку.

  • копировать, вставлять и удалять дубликаты (удаленные дубликаты являются рабочей частью)

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

Строка, выполняющая выбор, кажется правильной после многочисленных проверок, а также пыталась

  • использовать строковую форму ("AC") для параметра
  • числовая форма (13)
  • поместите номер ячейки в Range()

Несмотря на все мои усилия, строка выдает ошибку «Ошибка времени выполнения« 1004 »: Ошибка метода« Диапазон »объекта« _Global »».

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

Часть кода

 Sheets("Data").Cells(Rows.Count, "AC").End(xlUp).Row

возвращает значение (номер строки) первой ячейки с данными снизу. Это был бы конец отбора. Я знаю, что есть некоторые части, которые не соответствуют описанию, но они также не имеют значения с точки зрения ошибки. (например, в строке 17-18 выделяется весь столбец, но я могу исправить это позже.)

Вот мой код, я поставил комментарий рядом с проблемной частью.

Sub CopyUniqueProcList()
Dim ContainWord As String
Dim SrcSheet As Worksheet
Dim DestSheet As Worksheet
Dim TypeRng As Range
Dim TypeRngDest As Range
Dim GrundRng As Range
Dim GrundRngDest As Range
Dim TRD_E As Integer
Dim GRD_E As Integer
    Set SrcSheet = Worksheets("Data")
    Set DestSheet = Worksheets("lTopTenHelper")
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual

    Set TypeRng = SrcSheet.Range("AC4")
    Set TypeRngDest = DestSheet.Range("A1")
    Set TRD_E = DestSheet.Cells(Rows.Count, "A")
    Set GrundRng = SrcSheet.Range("AE4")
    Set GrundRngDest = DestSheet.Range("D1")
    Set GRD_E = DestSheet.Cells(Rows.Count, "D")
     TRD_E = DestSheet.Cells(DestSheet.Rows.Count, "A").End(xlUp).Row
     GRD_E = DestSheet.Cells(DestSheet.Rows.Count, "D").End(xlUp).Row
        Sheets("lTopTenHelper").Range(TypeRngDest, "A" & TRD_E).Clear
        Sheets("lTopTenHelper").Range(GrundRngDest, "D" & GRD_E).Clear



            If TypeRng.Value <> 0 Then
                Range(TypeRng, "AC" & Sheets("Data").Cells(Rows.Count, "AC").End(xlUp).Row).Copy 'Error thrown here
                    Sheets("lTopTenHelper").Cells(Rows.Count, "A").End(xlUp).Offset(0).PasteSpecial Paste:=xlPasteValues
            End If
                    Sheets("lTopTenHelper").Range(TypeRngDest, "AC" & Sheets("Data").Cells(Rows.Count, "AC").End(xlUp).Row).RemoveDuplicates Columns:=Array(1), Header:=xlNo
            If GrundRng.Value <> 0 Then
                Range(GrundRng, "AE" & Sheets("Data").Cells(Rows.Count, "AE").End(xlUp).Row).Copy
                    Sheets("lTopTenHelper").Cells(Rows.Count, "D").End(xlUp).Offset(0).PasteSpecial Paste:=xlPasteValues
            End If                                                                                                                                                '6?
                    Sheets("lTopTenHelper").Range(GrundRngDest, "AE" & Sheets("Data").Cells(Rows.Count, "AE").End(xlUp).Row).RemoveDuplicates Columns:=Array(1), Header:=xlNo

            Application.Calculation = xlCalculationAutomatic

    Exit Sub
End Sub

Приветствуется любая помощь/предложение/другое решение задачи. Заранее спасибо.

29.09.2016

  • Я не получаю никаких ошибок в этой строке, можете ли вы опубликовать раздел, в котором вы объявляете все свои переменные? где объявлены TRD_E, GRD_E, TypeRng и все остальные диапазоны? 29.09.2016
  • Это верхний раздел, только что добавленный TypeRng и т. д., похоже, не решает эту проблему. 29.09.2016
  • как насчет TRD_E и GRD_E ? 29.09.2016
  • Объявлен как целое число, но ничего не решил, поэтому не добавлял в пост. Проблема связана с частью Range(TypeRng, AC & Sheets(Data).Cells(Rows.Count, AC).End(xlUp).Row).Copy, также я не уверен о присоединяемой части с отметкой &. 29.09.2016
  • на самом деле, если TRD_E является целым числом, которое должно получить последнюю строку с данными, тогда вы должны использовать TRD_E = DestSheet.Cells(DestSheet.Rows.Count, "A").End(xlUp).Row , то же самое касается GRD_E 29.09.2016
  • Исправлена ​​эта часть, удивительно то, что работает здесь, не работает через несколько строк после того, как при использовании параметров диапазона таким же образом -> Range (TypeRngDest, A & TRD_E) 29.09.2016
  • TRD_E предполагается, что это последняя строка с данными в столбце A? или Колонка переменного тока? 29.09.2016
  • Возможный дубликат Ошибка времени выполнения "1004": Метод Ошибка "диапазона" объекта "_Global" 29.09.2016

Ответы:


1

Код ниже поможет вам начать,

Option Explicit

Sub CopyUniqueProcList()

Dim ContainWord             As String
Dim SrcSheet                As Worksheet
Dim DestSheet               As Worksheet
Dim TypeRng                 As Range
Dim TypeRngDest             As Range
Dim GrundRng                As Range
Dim GrundRngDest            As Range
Dim TRD_E                   As Long
Dim GRD_E                   As Long

Set SrcSheet = Worksheets("Data")
Set DestSheet = Worksheets("lTopTenHelper")

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Set TypeRng = SrcSheet.Range("AC4")
Set GrundRng = SrcSheet.Range("AE4")

With DestSheet

    ' find last row with data in Column A
    TRD_E = .Cells(.Rows.Count, "A").End(xlUp).Row
    GRD_E = .Cells(.Rows.Count, "D").End(xlUp).Row

    Set TypeRngDest = .Range("A1:A" & TRD_E)
    Set GrundRngDest = .Range("D1:D" & GRD_E)

    TypeRngDest.Clear
    GrundRngDest.Clear
End With

If TypeRng.Value <> 0 Then
    SrcSheet.Range("AC4:AC" & SrcSheet.Cells(SrcSheet.Rows.Count, "AC").End(xlUp).Row).Copy
    DestSheet.Cells(TRD_E, "A").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End If

' you can take it from here ... ?

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Exit Sub

End Sub
29.09.2016
Новые материалы

Деревья классификации и регрессии
Это мой второй пост об алгоритмах машинного обучения. Мой первый пост посвящен искусственным нейронным сетям, вы можете найти его ниже. Нейронные сети — базовое..

HMTL - Многозадачное обучение для решения задач НЛП
Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..