VBA возвращает ошибку "Sub или Function undefined" - PullRequest
0 голосов
/ 30 сентября 2018
Function tenderSummary()
    For i = 5 To 10
        If cell(i, 66) <> "" Then
            If Range("TenderPrice") <> "" Then
                Range("TenderTicker").Copy cell(i, 66)
                Range("Quantity").Copy cell(i, 67)
                Range("TenderPrice").Copy cell(i, 68)
                Range("Start").Copy cell(i, 69)
                Range("End").Copy cell(i, 70)
            End If
            If Range("TenderPrice2") <> "" Then
                Range("TenderTicker2").Copy cell(i, 66)
                Range("Quantity2").Copy cell(i, 67)
                Range("TenderPrice2").Copy cell(i, 68)
                Range("Start_2").Copy cell(i, 69)
                Range("End_2").Copy cell(i, 70)
            End If
            If Range("TenderPrice3") <> "" Then
                Range("TenderTicker3").Copy cell(i, 66)
                Range("Quantity3").Copy cell(i, 67)
                Range("TenderPrice3").Copy cell(i, 68)
                Range("Start_3").Copy cell(i, 69)
                Range("End_3").Copy cell(i, 70)
            End If
        End If
    Next
End Function

Для приведенного выше кода я продолжаю получать «Sub или Function notfined», может кто-нибудь объяснить, почему?

По сути, у меня есть мои переменные: TenderPrice, TenderTicker, Количество, Начало, Конец (то же самое для TenderPrice2, ..., End2 и те, которые отмечены 3), и эти переменные являются динамическими по своей природе, что означает, чтоони исчезают примерно через 20 с или около того.

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

Как я могу исправить эту проблему?

1 Ответ

0 голосов
/ 30 сентября 2018
  1. Свойство Range.Cells - множественное число;например, ячейки, а не ячейки.
  2. Нет допустимой ссылки на родительский лист для любой из ссылок ячейки (r, c).Вы не предоставили информацию о том, где находятся именованные диапазоны.Если они находятся на одном листе, их можно включить в блок «С ... Завершить с».
  3. Использование ElseIf уменьшит избыточные вычисления.

Перезапись кода:

Function tenderSummary()

    With worksheets("model")

        For i = 5 To 10
            If .Cells(i, 66) <> "" Then
                If Range("TenderPrice") <> "" Then
                    Range("TenderTicker").Copy .Cells(i, 66)
                    Range("Quantity").Copy .Cells(i, 67)
                    Range("TenderPrice").Copy .Cells(i, 68)
                    Range("Start").Copy .Cells(i, 69)
                    Range("End").Copy .Cells(i, 70)
                ElseIf Range("TenderPrice2") <> "" Then
                    Range("TenderTicker2").Copy .Cells(i, 66)
                    Range("Quantity2").Copy .Cells(i, 67)
                    Range("TenderPrice2").Copy .Cells(i, 68)
                    Range("Start_2").Copy .Cells(i, 69)
                    Range("End_2").Copy .Cells(i, 70)
                ElseIf Range("TenderPrice3") <> "" Then
                    Range("TenderTicker3").Copy .Cells(i, 66)
                    Range("Quantity3").Copy .Cells(i, 67)
                    Range("TenderPrice3").Copy .Cells(i, 68)
                    Range("Start_3").Copy .Cells(i, 69)
                    Range("End_3").Copy .Cells(i, 70)
                End If
            End If
        Next

    End With

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