2013-10-10 7 views
0

Я пытаюсь по существу написать некоторое условное форматирование с помощью макроса. Я хочу оценить значения в строке E в моей таблице Excel. Для всех значений 1 я хочу изменить всю строку для другого форматирования. Вот что я до сих пор.Очень простой excel vba macro. Укажите значение в ячейке

У меня есть COUNTA, чтобы подсчитать количество строк (отображается в H5). У меня есть COUNTIF (E: E, 1), чтобы подсчитать количество строк с 1 в качестве значения для этого столбца (отображается в G5). Вот мой код.

Sub Macro1() 
'***************** 
'Declare variables 
'***************** 
Dim xlWB, xlApp, xlSheet As Object 
Dim xlTest As Worksheet 
Dim RowNumber, TotalNumber, Count, i, j As Integer 
Dim aCell, aRow As Excel.Range 
Dim oInteger As Object 
Dim oString As Object 
'***************** 
'Set variables 
'***************** 
i = 0 
Range("G5").Select 
Count = ActiveCell.Value 
Range("H5").Select 
TotalNumber = ActiveCell.Value 
'***************** 
'For loop to format 
'***************** 
For i = 2 To TotalNumber 
    If ("E" & i = 1) Then 
     MsgBox ("Doing something") 
    End If 
Next i 
End Sub 

я положил в MsgBox, чтобы найти, что («E» & я) показывает вверх, как «E1», «E2» и т.д. Так что кажется правильным. Эта; однако никогда не соответствует значению 1. Мне нужно сравнить значение в, что ячейка, а не номер ячейки. Я не знаю, как указать значение выбранной ячейки.

Любая помощь приветствуется. Благодарю.

+1

Вам действительно нужен VBA для этого? –

+0

Нет. Это просто поможет мне научиться программировать в VBA. – Negativ

+0

Довольно уверен, что я просто ответил на свой вопрос. Мне просто нужно было сделать «Range (cell)» вместо «Cell». Я не могу опубликовать код, потому что у меня недостаточно репрезентации, но вот фрагмент, где он был разбит раньше: If (Range («E» & i) = 1) Затем MsgBox («Выполнение чего-то для строки» & i) Конец Если – Negativ

ответ

0

Вы должны поставить «E» & я в диапазоне, чтобы обратиться к ячейке, иначе вы просто производить что-то вроде «Е3», которая никогда не будет = 1. Кроме того, постарайтесь не использовать select, он замедляет ваш код и не нужен.

Sub Macro1() 
'***************** 
'Declare variables 
'***************** 
Dim TotalNumber as Integer, Count as Integer, i as Integer 
'***************** 
'Set variables 
'***************** 
Count = Range("G5").Value 
TotalNumber = Range("H5").Value 
'***************** 
'For loop to format 
'***************** 
For i = 2 To TotalNumber 
    If (Range("E" & i).Value = 1) Then 
     MsgBox ("Doing something") 
    End If 
Next i 
End Sub 
+0

стоит отметить, что 'rowNumber, TotalNumber, Count, i, aCell' являются ** все **' Variant'. Только 'j' является' Integer' ([преобразовано в 'Long'] (http://msdn.microsoft.com/en-us/library/office/aa164754 (v = office.10) .aspx)) и' aRow' - это тип «Range» –

+0

, вы правы, я не рассматривал часть декларации ... Я ее отредактировал ... – Manu