Передача объекта рабочего листа другому подчиненному объекту с получением «объект не поддерживает это свойство или метод» - PullRequest
0 голосов
/ 24 апреля 2019

Я пишу макрос, который наряду с другими вещами форматирует кучу больших листов, одна написанная мной подпрограмма должна принять объект листа, который я определил и использовал ранее. Когда я пытаюсь вызвать подпрограмму с объектом рабочего листа в качестве параметра, я получаю «объект не поддерживает это свойство или метод»

Option Explicit

Public wb As Workbook

Public data, summary_month, summary_item, summary_charge, summary_pro As Worksheet

Public i, n, x, y, z As Variant

Public libName(), itype(), tcharge(), tprofile() As Variant

Public profile, pay_lib, item_auth, total_paid, month, item_type, chr_type As Variant

Public Sub main()

Set wb = ThisWorkbook
Set data = wb.Sheets(1)
Set summary_month = wb.Sheets(2)
Set summary_item = wb.Sheets(3)
Set summary_charge = wb.Sheets(4)
Set summary_pro = wb.Sheets(5)

With data
    Set pay_lib = .Range( _
                    .Cells(2, 2), _
                    .Cells(2, 2).End(xlDown))
    Set item_auth = .Range( _
                    .Cells(2, 4), _
                    .Cells(2, 4).End(xlDown))
    Set month = .Range( _
                    .Cells(2, 3), _
                    .Cells(2, 3).End(xlDown))
    Set total_paid = .Range( _
                    .Cells(2, 10), _
                    .Cells(2, 10).End(xlDown))
    Set item_type = .Range( _
                    .Cells(2, 5), _
                    .Cells(2, 5).End(xlDown))
    Set chr_type = .Range( _
                    .Cells(2, 6), _
                    .Cells(2, 6).End(xlDown))
    Set profile = .Range( _
                    .Cells(2, 8), _
                    .Cells(2, 8).End(xlDown))

End With


'''''''''''''''''''''''''''''''''''''''''''''
''''''''''some other stuff'''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''


change_colors (summary_month)

End Sub
Sub change_colors(wksheet As Worksheet)

With wksheet
    For Each i In .Range(.Cells(2, 1), .Cells(2, 1).End(xlDown))
        If i.Row Mod 2 = 0 Then
            .Range(.Cells(i.Row, i.Column), .Cells(i.Row, i.Column).End(xlToRight)).Interior.ColorIndex = 31
        Else
            .Range(.Cells(i.Row, i.Column), .Cells(i.Row, i.Column).End(xlToRight)).Interior.ColorIndex = 2
        End If
    Next i
End With

когда подпрограмма вызывается, оператор 'with' должен чередовать цвета, основанные на строке, и из моего тестирования, кажется, нет ничего круглого с этим, я получаю ошибку, когда вызывается подпрограмма. оба сабвуфера находятся в одном модуле.

Очевидно, что есть кое-что, что я не до конца понимаю, как работают объекты листа, любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 апреля 2019

объявлял рабочие листы отдельно, а не как встроенный

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