Ошибка выполнения 424: Требуется объект.Какой объект мне не хватает? - PullRequest
0 голосов
/ 02 февраля 2019

пытается научиться Excel VBA, чтобы помочь мне с моей работой.Я создаю список динамического инвентаря частей.Я мог иметь один и тот же номер детали несколько раз в моем инвентаре, по разным строкам по разным причинам, включая разное количество.Я хочу суммировать количество каждой детали на другом листе, предоставляя лист «Статистика», чтобы быстро просмотреть инвентарь.

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

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

Private Sub RefreshStatsButton_Click()

Dim FirstRowInventory As Integer
Dim LastRowInventory As Integer
Dim FirstRowStats As Integer    
Dim PartNoIndexCount As Integer    
Dim PartNoCol As Integer    



FirstRowInventory = 3    
FirstRowStats = 3    
PartNoIndexCount = 3    
PartNoCol = 1    

LastRowInventory = Worksheets("Inventory").UsedRange.Rows.Count    

For i = FirstRowInventory To LastRowInventory    
    If Worksheets("Inventory").Cells(i, PartNoCol).Value <> Worksheets("Inventory").Cells(PartNoIndexCount - 1, PartNoCol).Value Then    
        Worksheets("Inventory").Cells(i, PartNoCol).Value.Copy 
Destination:=Worksheets("Stats").Cells(PartNoIndexCount, PartNoCol)    
        'MsgBox ("InventoryCell: " & Worksheets("Inventory").Cells(i, PartNoCol).Value & " StatsCell: " & Worksheets("Stats").Cells(PartNoIndexCount, PartNoCol))
        PartNoIndexCount = PartNoIndexCount + 1    
        Else:    
    End If    
Next    


End Sub

Я ожидал получить список каждого номера детали в инвентарном листе без повторов.Я получаю

Ошибка выполнения 424. Требуется объект.

Затем я попытался добавить поле Msg, чтобы помочь в отладке (закомментировано), но не получило никаких результатов.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 02 февраля 2019

Проблема в том, что код пытается скопировать свойство .Value для Range.Это не то, как работает VBA.Например, он пытается:

Worksheets("Inventory").Cells(i, PartNoCol).Value.Copy 

Value заставляет его выдавать ошибку.Попробуйте без него записать макрос и посмотреть, как он генерирует код для копирования и вставки.Или попробуйте этот минимальный рабочий код и настройте его так:

Sub TestMe()

    With Worksheets(1)
        .Range(.Cells(1, 1), .Cells(5, 5)).Copy
        .Range("A10").PasteSpecial Paste:=xlPasteValues
    End With
    Application.CutCopyMode = False

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