2016-12-22 5 views
1

У меня возникла проблема с тем, что мои макросы совместимы с OSX, где он работает в Windows.Ошибка компиляции: не удается найти проект или библиотеку (OSX)

У меня есть следующий вопрос:

Compile error: Can't find project or library error when running the macro on Office 2016 on a MAC

Код/функция используется для изменения определенных диапазонов в верхнем регистре/Proper случая. Отладчик выделяет "UCase(Cell)" и "Cell"

Sub ChkSheet() 
'========================================================================= 
' Format the cell boarders when the info needs to be corrected or updated 
'========================================================================= 
Dim historyWks As Worksheet 
Set historyWks = Worksheets("Namelist") 
Dim lRow As Long 
Dim emailRng As Range 
Dim Cell As Range 

With historyWks 

' Flags cells where the Email fieldcontains invalid characters 
lRow = Range("G" & Rows.Count).End(xlUp).Row 
Set emailRng = Range("Q2:Q" & lRow) 

    For Each Cell In emailRng 
     If Cell.Value = "," _ 
      Or Cell.Value = " " _ 
      Or Cell.Value = "wd" _ 
      Or Cell.Value = "" _ 
      Or Cell.Find("@") Is Nothing Then 
      Cell.Interior.Color = vbRed 

      Else: 
      Cell.Interior.ColorIndex = 0 

     End If 
    Next 

    'Change the text case 
    With Application 
     .ScreenUpdating = False 
     .EnableEvents = False 
    End With 

     For Each Cell In Range("NListUpper") 
     Select Case True 
     Case Application.IsText(Cell) = True 
      Cell = UCase(Cell) 
     End Select 
    Next Cell 
    With Application 
     .ScreenUpdating = True 
     .EnableEvents = True 
    End With 

    'Change the case to proper 
    With Application 
     .ScreenUpdating = False 
     .EnableEvents = False 
    End With 
    For Each Cell In Range("NListProp") 
     Select Case True 
     Case Application.IsText(Cell) = True 
      Cell = StrConv(Cell, vbProperCase) 
     End Select 
    Next Cell 
    With Application 
     .ScreenUpdating = True 
     .EnableEvents = True 
    End With 

End With 

End Sub 

Я заметил, что некоторые библиотеки не хватает на Excel 2016 на OSX и я знаю, что MS упала много библиотек из Excel для OSX.

Любые советы по этому вопросу были бы замечательными.

+0

Какие ссылки вы проверили? Почти наверняка один из них недоступен на Mac, и это вызывает вашу проблему. – Rory

+0

@Rory Я удалил отсутствующий ref, и я больше не получаю ошибку, но excel полностью зависает –

+0

Просто их удаление не обязательно поможет - они могут понадобиться! – Rory

ответ

1

Вы можете попытаться избежать, используя свойства Range объекта по умолчанию - они могут отличаться между ОС Windows и OSX:

Таким образом, вместо того, чтобы:

Select Case True 
    Case Application.IsText(Cell) = True 
     Cell = UCase(Cell) 
End Select 

Вы можете просто попробовать:

If Application.IsText(Cell.Value) Then 
    Cell.Value = UCase(Cell.Value) 
End If 
+0

Привет, спасибо. Позвольте мне попробовать ваше предложение и узнать что-то новое :-). С моей точки зрения, я использую 'Application.IsText' для проверки ячейки для текстового значения и применяется к Excel 2016, Excel 2013, Excel 2011 для Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000. –

+0

Не было в моем VBE intellisense - идиосинкратии, о которой я говорил, был в любом случае «Select Case True ... End Select». Мой основной ответ заключается в конкретном использовании свойства 'Value' объекта Range. Я действительно не думал, что метод '.IsText' был проблемой в вашем вопросе. В любом случае я отредактировал, чтобы удалить эту «субъективность». HTH –

+0

Я понимаю, что вы имеете в виду, спасибо за это. Я удалил недостающие библиотеки и обнаружил, что процесс работал до некоторой степени, но оставил Excel зависанием. Я хочу повторить ваше редактирование. Это здорово, как я могу это сделать по-разному. Спасибо за это! –

Смежные вопросы