Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Прерывание макроса при окончании столбца. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Прерывание макроса при окончании столбца. (Макросы/Sub)
Прерывание макроса при окончании столбца.
superpsih Дата: Вторник, 14.04.2015, 11:43 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.
Сделал такой вот макрос:
[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), все числа, которые являются текстом, преобразовать в число и выделить их различным цветом по условию (условие в макросе). Как сделать так, чтобы дойдя до конца таблицы макрос прерывал своё действие и не обсчитывал весь столбец до конца?
К сообщению приложен файл: 11.xls (42.5 Kb)
 
Ответить
СообщениеЗдравствуйте.
Сделал такой вот макрос:
[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
Дата добавления - 14.04.2015 в 11:43
Manyasha Дата: Вторник, 14.04.2015, 12:34 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
superpsih, здравствуйте. Я подсократила Ваш макрос. У Вас, кстати, вместо выделения одного столбца, выделяется все столбцы таблицы (в моем файле окрашивается только активный столбец).

Ну а по теме: последнюю ячейку можно так определить[vba]
Код
lr = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
[/vba]
К сообщению приложен файл: 11_1.xls (50.0 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеsuperpsih, здравствуйте. Я подсократила Ваш макрос. У Вас, кстати, вместо выделения одного столбца, выделяется все столбцы таблицы (в моем файле окрашивается только активный столбец).

Ну а по теме: последнюю ячейку можно так определить[vba]
Код
lr = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
[/vba]

Автор - Manyasha
Дата добавления - 14.04.2015 в 12:34
superpsih Дата: Вторник, 14.04.2015, 12:42 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Да, теперь работает! Спасибо вам большое!
 
Ответить
СообщениеДа, теперь работает! Спасибо вам большое!

Автор - superpsih
Дата добавления - 14.04.2015 в 12:42
krosav4ig Дата: Вторник, 14.04.2015, 13:01 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
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
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 14.04.2015, 13:16
 
Ответить
Сообщение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
[/vba]

Автор - krosav4ig
Дата добавления - 14.04.2015 в 13:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Прерывание макроса при окончании столбца. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!