При получении объекта требуется ошибка метода .ind - PullRequest
0 голосов
/ 11 июля 2019

Я получаю Требуемый объект компиляции при запуске .Find на следующем. Данные были сгенерированы из формы, а код находится внутри формы. Я выделил синим цветом, где я получаю ошибку.

Dim MODATT As String
Dim SearchRange As Range
Dim searchcell As String
Dim NewModShort As String
Dim MakeVal As String
Dim ModVal As String
Dim mdAtt As String


Private Sub ADDPROD_Click()
    Worksheets("SKU List").Activate
    SKUNUMBER = Range("A1").End(xlDown).Value + 1
    Range("A1").End(xlDown).Offset(1).Value = SKUNUMBER
    MODATT = Make.Value & " " & Model.Value & " " & PS.Value & "PS"

    With Worksheets("Model Att").Range("A1", Range("A1").End(xlDown))
        Set mdAtt = .Find(What:=MODATT, LookIn:=xlValues)
        If mdAtt Is Nothing Then
            Range("A1").End(xlDown).Offset(1).Value = MODATT
            MODATT.PutInClipboard
            MsgBox "Please add " & MODATT & "to the Model Attributes (This has been copied, ready to paste)", , "Add Attribute"
            ModShort
        Else
            ModShort
        End If

End Sub

Set mdAtt = получает ошибку:

Ошибка компиляции: требуется объект

1 Ответ

0 голосов
/ 11 июля 2019

Несколько замечаний:

  • Как было сказано @Dean, mdAtt объявлено как String.Объявить как Range.Тогда с помощью оператора set будет работать, поскольку Range является объектом.
  • Попробуйте объявить переменные, в которых они используются , и создать отступ для вашего кода.Это облегчит отслеживание и отладку вашего кода.
  • SKUNUMBER никогда не объявляется (по крайней мере, в предоставленном вами коде).Используйте Option Explicit , чтобы помочь предотвратить это.
  • В вашем блоке With отсутствует End With, что приведет к ошибке компиляции.
  • Ваш вызов ModShort находится в конце вашего If, а также в вашем Else утверждении.Почему бы просто не удалить Else и запустить его после завершения оператора If?
If mdAtt Is Nothing Then
    ' ...
End If
ModShort
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...