Два вопроса относительно макросов Excel - PullRequest
0 голосов
/ 20 декабря 2018

Первый вопрос: я хочу запускать макрос автоматически при изменении определенного значения ячейки, однако при изменении значения ячейки он не запускается.Единственный способ, которым он запускается - это когда я захожу в раздел «Макросы» на вкладке разработчика и вручную запускаю макрос.

Второй вопрос: у меня есть ячейка, отформатированная как текст и отображающая «somenumber% / someothernumber»% ", и я хочу, чтобы отрицательные значения были окрашены в красный цвет, а положительные значения - в зеленый.Проблема в том, что он регистрирует только первое значение, поэтому, если оно положительное, все значения ячеек отображаются зеленым, и наоборот - отрицательным.Вот конкретное форматирование текста: = TEXT(AS4,"[>0]+#,###0.000%;[<0]-#,###0.000%")&" "&"/"&" "&TEXT(AS6,"[>0]+#,###0.000%;[<0]-#,###0.000%").

Вот моя попытка обоих решений:

Sub TextColorChange()

Dim xWs As Worksheet
Set xWs = Sheets("Trading Statistics")

For Row = 10 To 13

    vall = xWs.Cells(Row, 51).Value

        CheckPlus = InStr(1, vall, "+")
        CheckMinus = InStr(1, vall, "-")
        CheckDash = InStr(1, vall, "/")
        part = Len(vall) - CheckDash + 1

        If CheckMinus <> 0 Then
            xWs.Cells(Row, 51).Characters(Start:=CheckMinus, Length:=part).Font.ColorIndex = 3
        End If

        If CheckPlus <> 0 Then
            xWs.Cells(Row, 51).Characters(Start:=CheckPlus, Length:=part).Font.ColorIndex = 10
        End If

Next Row

End Sub
--------------------------------    
Private Sub Worksheet_Calculate()
    Dim Xrg As Range
    Set Xrg = Me.Range("AY6")
    If Not Intersect(Xrg, Me.Range("AY6")) Is Nothing Then
       Call TextColorChange
    End If
End Sub

1 Ответ

0 голосов
/ 20 декабря 2018

У меня есть файл Excel, который делает это, код, который я использую для активации моего макроса, когда пользователь вставляет данные в лист:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    Set KeyCells = Range("A2")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
                Call Sorting
                Call Pic
    End If


MsgBox "Data updated"

End Sub

Сортировка и Pic - это вызываемые макросы, и вышекод должен быть помещен в фактический лист, где должен срабатывать макрос (т.е. не в модуле)

РЕДАКТИРОВАТЬ : это ответ на ваш первый вопрос.Пожалуйста, отметьте это как полезное, если это было так, а затем оставьте свой второй вопрос в новом сообщении.

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