Страницы: 1
RSS
Перенос файла для macOS
 
Здравствуйте. Есть файл с макросами на винде работает, а на мак нет. Помогите сделать так что бы и на маке работало. Файл прикрепляю.
 
Мамкин Сынок, приветствую!
Замените словари на коллекции. Думаю, этого будет достаточно.
 
artemkau88, Можете более подробно объяснить?
 
Мамкин Сынок, у Вас в коде используется объект "Словарь" - "Scripting.Dictionary". Нужно его заменить на объект коллекции и внести соответствующие правки в код
 
artemkau88, Если вам не сложно, можете пожалуйста это сделать. У меня еще мало опыта, не очень понимаю.
 
На коллекции
Код
Sub PoiskArtikul()
Dim Rg1 As Range, ImList$, Arr1, i&, j&, kSt%, Tp1, Tp2, Kluh$, CelVst$, Poisk$
Dim Sh As Worksheet, Dic1 As New Collection
CelVst = "АРТИКУЛ": ImList = "Основной"

Do
Poisk = InputBox("", "Введите АРТИКУЛ", "22009876")
    If StrPtr(Poisk) = 0 Then Exit Sub ' Выход из процедуры при нажатии кнопки Cancel
Loop Until Poisk <> vbNullString

Application.ScreenUpdating = False
Set Rg1 = ThisWorkbook.Worksheets(ImList).Cells
For Each Sh In ThisWorkbook.Worksheets
    If VBA.StrComp(Sh.Name, ImList, 1) <> 0 Then
    Arr1 = Sh.Cells(1).CurrentRegion.Value
    If Not VBA.IsArray(Arr1) Then GoTo Ex
    kSt = UBound(Arr1, 2)
    ReDim Tp1(1 To kSt)
        For i = 2 To UBound(Arr1)
            If Arr1(i, 1) = Poisk Then
                For j = 1 To kSt
                Tp1(j) = Arr1(i, j)
                Next j
            Kluh = VBA.Join(Tp1, vbNullChar)
            If Not Exists(Dic1, Kluh) Then Dic1.Add Kluh, Kluh
            End If
        Next i
    End If
Ex:
Next Sh
If Dic1.Count = 0 Then MsgBox CelVst & " " & Poisk & " не найден", vbCritical: Exit Sub

Set Rg1 = Rg1.Find(CelVst, , xlValues, xlWhole, xlByRows)
If Rg1 Is Nothing Then MsgBox "На листе " & ImList & _
" не найдена ячейка для вставки со значением " & CelVst: Exit Sub
ReDim Arr1(kSt - 1, 1 To Dic1.Count): i = 0
For Each Tp1 In Dic1
    i = i + 1
    Tp2 = VBA.Split(Tp1, vbNullChar)
    For j = 0 To UBound(Tp2)
    Arr1(j, i) = Tp2(j)
Next j, Tp1

    With Rg1(, 2).Resize(UBound(Arr1) + 1, UBound(Arr1, 2))
        .Value = Arr1
        .EntireColumn.AutoFit
    End With
End Sub
Private Function Exists(coll As Collection, key$) As Boolean
On Error GoTo EH
coll.Item key: Exists = True
EH:
End Function 'Функция для проверки наличия ключа коллекции

 
Раз уж подправил, тоже выложу код.
Если угадал логику верно, то см. файл
 
artemkau88 Быстро сообразили. Только оператор по моему лишний.
Код
Tp2 = col(col.Count)
Изменено: Евгений Смирнов - 28.02.2024 12:25:49
 
Евгений Смирнов, возможно. Не особо вдавался в логику. Спасибо! :)  
 
artemkau88, на одном макбуке работает (на моем) отправляю на 2-й. выдает ошибку при нажатии на кнопку "Поиск"
 
Мамкин Сынок, я не специалист по МАС, но все же.
Если нажать кнопку "debug" во всплывающем окне ошибки, то какую строку кода подсвечивает в редакторе кода. Можете выложить скрин? И что за ошибка возникает - её имя (тоже можете выложить скрин?)
 
artemkau88,  
 
Цитата
Мамкин Сынок написал:
на одном макбуке работает
Значит проблема не в макросе. По вопросам, связанным с MAC, на форуме есть отдельная ветка. По последнему вопросу создайте тему там
Согласие есть продукт при полном непротивлении сторон
 
artemkau88, не могу прикрепить, пишет слишком большой файл
 
Sanja, прошу прощения, что ответил не в той ветке.
Мамкин Сынок, я имел в виду не файл с макросом, а снимок экрана - снимок ошибки со строкой кода (которая подсвечивается желтым и саму ошибку - всплывающее окно)
 
artemkau88 Ошибка на этой строке
Код
Set Rg1 = ThisWorkbook.Worksheets(ImList).Cells
Может так попробовать
Код
Set Rg1 = ThisWorkbook.Worksheets(ImList).UsedRange
 
artemkau88,
Изменено: Мамкин Сынок - 28.02.2024 13:04:10
 
Евгений Смирнов, возможно, но думаю, что нужно дождаться реакции автора темы на сообщение от Модератора. А то все по "шапке" получим. :)  
 
Цитата
написал:
Может так попробовать
не думаю. Как минимум пара вариантов навскидку:
1. Листа с именем "Основной" просто нет в книге с кодом.
2. MAC не воспринял кириллический текст так, как должен и в переменной ImList невменяемый текст вместо "Основной"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, Можете пожалуйста помочь с решением? при нажатии кнопки "Поиск" Выдает такую ошибку. На втором маке все нормально работает
Изменено: Мамкин Сынок - 28.02.2024 15:13:51
Страницы: 1
Наверх