Я хочу создать макрос-файл Excel, который поможет мне ускорить мои основные вычисления и попрактиковаться с ним - PullRequest
0 голосов
/ 13 января 2019

Я хочу создать этот лист макроса так, чтобы для любой активной ячейки, если бы я добавил заданные значения строки и столбца (как в прикрепленной ссылке на изображение) и ввел правильное суммирование, он сохранил белый цвет, или же стал зеленым.

https://imgur.com/chJUmho

Я на самом деле NOOB в Excel VBA, поэтому код может иметь неправильный формат. Это также дает 'ошибку 5' в структуре ввода переменной 'r', поэтому я застрял.

Sub Add_Nos()

Dim r As Integer
Dim c As Integer
Dim active As Integer


r = Worksheets("Sheet1").Cells("A" & (ActiveCell.Row)).Value


c = Worksheets("Sheet1").Cells((ActiveCell.Column) & 1).Value

active = Range(ActiveCell).Value

If active = r + c Then
Range(ActiveCell).Interior.ColorIndex = 0
Else
Range(ActiveCell).Interior.ColorIndex = 4
End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Count = 1 Then
Call Add_Nos
End If

End Sub

1 Ответ

0 голосов
/ 13 января 2019

Ошибка времени выполнения 5:

Вы перепутали Range и Cells запись.

  • Range подходит для справки в стиле A1 : .Range("A" & ActiveCell.Row).

  • Cells использует индекс строки и столбца: .Cells(ActiveCell.Row, 1). Или вы можете использовать букву столбца: .Cells(ActiveCell.Row, "A").

Обратите внимание, что у вас та же проблема в следующей строке, которая должна быть:

c = Worksheets("Sheet1").Cells(1, ActiveCell.Column).Value

Другие очки:

  • ActiveCell - это объект Range - не заключайте его в Range. Итак:

    1. active = ActiveCell.Value
    2. ActiveCell.Interior.ColorIndex = 0
    3. ActiveCell.Interior.ColorIndex = 4
  • Call можно опустить.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...