Sub go2(): Dim r As Range, d As Range, Zelle As Range, c As Range Set d = Application.Selection d.EntireColumn.Select Set r = Application.Selection: For Each c In r On Error Resume Next For Each Zelle In c If Zelle.Value <> "" Then Zelle.Value = 1 * Zelle.Value End If Next c.NumberFormat = "#,##0.0" If c <> "" Then If c <= 8.5 And c >= 8 Then c.Interior.ColorIndex = 4 If c < 8 Then c.Interior.ColorIndex = 3 If c > 8.5 Then c.Interior.ColorIndex = 8 End If Next c:
End Sub
[/vba]
Макрос должен в столбце, на который встанет пользователь (в примере, это столбец 6), все числа, которые являются текстом, преобразовать в число и выделить их различным цветом по условию (условие в макросе). Как сделать так, чтобы дойдя до конца таблицы макрос прерывал своё действие и не обсчитывал весь столбец до конца?
Здравствуйте. Сделал такой вот макрос: [vba]
Код
Sub go2(): Dim r As Range, d As Range, Zelle As Range, c As Range Set d = Application.Selection d.EntireColumn.Select Set r = Application.Selection: For Each c In r On Error Resume Next For Each Zelle In c If Zelle.Value <> "" Then Zelle.Value = 1 * Zelle.Value End If Next c.NumberFormat = "#,##0.0" If c <> "" Then If c <= 8.5 And c >= 8 Then c.Interior.ColorIndex = 4 If c < 8 Then c.Interior.ColorIndex = 3 If c > 8.5 Then c.Interior.ColorIndex = 8 End If Next c:
End Sub
[/vba]
Макрос должен в столбце, на который встанет пользователь (в примере, это столбец 6), все числа, которые являются текстом, преобразовать в число и выделить их различным цветом по условию (условие в макросе). Как сделать так, чтобы дойдя до конца таблицы макрос прерывал своё действие и не обсчитывал весь столбец до конца?superpsih
superpsih, здравствуйте. Я подсократила Ваш макрос. У Вас, кстати, вместо выделения одного столбца, выделяется все столбцы таблицы (в моем файле окрашивается только активный столбец).
Ну а по теме: последнюю ячейку можно так определить[vba]
Код
lr = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
[/vba]
superpsih, здравствуйте. Я подсократила Ваш макрос. У Вас, кстати, вместо выделения одного столбца, выделяется все столбцы таблицы (в моем файле окрашивается только активный столбец).
Ну а по теме: последнюю ячейку можно так определить[vba]
Код
lr = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
Sub sdf() Dim r As Range, c As Range Set r = ActiveCell.EntireColumn r.Interior.Color = xlNone Set r = r.SpecialCells(xlCellTypeConstants, 3) r.Replace ",", ".", xlPart r.NumberFormat = "#,##0.0" For Each c In r If IsNumeric(c) Then Select Case c.Value Case Is < 8: c.Interior.ColorIndex = 3 Case Is > 8.5: c.Interior.ColorIndex = 8 Case Else: c.Interior.ColorIndex = 4 End Select End If Next c End Sub
[/vba]
superpsih, попробуйте так [vba]
Код
Sub sdf() Dim r As Range, c As Range Set r = ActiveCell.EntireColumn r.Interior.Color = xlNone Set r = r.SpecialCells(xlCellTypeConstants, 3) r.Replace ",", ".", xlPart r.NumberFormat = "#,##0.0" For Each c In r If IsNumeric(c) Then Select Case c.Value Case Is < 8: c.Interior.ColorIndex = 3 Case Is > 8.5: c.Interior.ColorIndex = 8 Case Else: c.Interior.ColorIndex = 4 End Select End If Next c End Sub