Макрос личной книги не запущен - PullRequest
0 голосов
/ 31 октября 2018

Я записал макрос и сохранил его в своей личной книге, следуя инструкциям Microsoft . Затем я добавил этот макрос на панель быстрого доступа. Однако, когда я нажимаю на нее, ничего не происходит. Странная часть в том, что если я назначу точно такой же код нажатию кнопки, все будет хорошо.

Код, вероятно, не имеет значения сейчас, но я просто включил его на случай, если он может стать актуальным.

Вот код:

Option Explicit

Public Sub test(metric, greenNum, orangeNum, ws)
Dim metricName As Range                                                                             
Dim rowsCounter As Long                                                                             ' Rows loop counter
Dim numOfRows As Long                                                                               ' Number of rows
Dim numOfColumns As Long                                                                            ' Number of columns
Dim baseline As Double                                                                              ' Baseline to compute against
Dim newCellValue As Double                                                                          ' Each cell after baseline to make computations on
Dim columnsCounter As Long                                                                          ' Columns loop counter

Dim greenCell As Double
Dim orangeCell As Double

Dim regEx As New RegExp
Dim strPattern As String: strPattern = "[^0-9.]"                                                    
Dim strReplace As String: strReplace = ""
With regEx
        .Global = True
        .Pattern = strPattern
End With

numOfRows = Range("A" & Rows.Count).End(xlUp).Row                                                   
numOfColumns = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column                                  

For rowsCounter = 1 To numOfRows
    Set metricName = Range("A" & rowsCounter)                                                       

    If metricName.Value = metric Then

        For columnsCounter = 3 To numOfColumns

             If IsNumeric(ws.Cells(rowsCounter, 2)) Then                                            
                baseline = Math.Abs(ws.Cells(rowsCounter, 2))                                       
             Else
                If ws.Cells(rowsCounter, 2) <> "NA" And Not IsEmpty(ws.Cells(rowsCounter, 2)) Then
                    baseline = Math.Abs(regEx.Replace(ws.Cells(rowsCounter, 2), strReplace))
                End If
             End If

             If IsNumeric(ws.Cells(rowsCounter, columnsCounter)) Then                                ' Check if cell value is number
                 newCellValue = Math.Abs(ws.Cells(rowsCounter, columnsCounter))                     
             Else
                 If ws.Cells(rowsCounter, columnsCounter) <> "NA" And Not IsEmpty(ws.Cells(rowsCounter, columnsCounter)) Then
                     newCellValue = Math.Abs(regEx.Replace(ws.Cells(rowsCounter, columnsCounter), strReplace))
                 End If
             End If

             greenCell = baseline * greenNum
             orangeCell = baseline * orangeNum

             If newCellValue >= 0 And newCellValue < greenCell And Not IsEmpty(ws.Cells(rowsCounter, columnsCounter)) Then
                 ws.Cells(rowsCounter, columnsCounter).Interior.Color = RGB(0, 255, 0)
             ElseIf newCellValue >= greenCell And newCellValue <= orangeCell Then
                 ws.Cells(rowsCounter, columnsCounter).Interior.Color = RGB(255, 165, 0)
             ElseIf IsEmpty(ws.Cells(rowsCounter, columnsCounter)) Then
                 ws.Cells(rowsCounter, columnsCounter).Interior.Color = RGB(255, 255, 255)
             Else
                 ws.Cells(rowsCounter, columnsCounter).Interior.Color = RGB(255, 0, 0)
             End If
        Next columnsCounter
    End If
Next rowsCounter
End Sub

Затем я вызываю этот код в другом подпункте:

Public Sub runAll()
Application.EnableEvents = False
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    Const a = "test"
    Const b = 1.05
    Const c = 1.2
    Call test(a, b, c, ws)
Next ws
Application.EnableEvents = True
End Sub

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

Однако, когда я копирую этот код в модуль данной Рабочей книги и нажимаю кнопку test(), все работает отлично.

Как запустить макрос, сохраненный в личной книге, без кнопки?

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