Страницы: 1
RSS
Как выделить строку в условном форматировании
 
Подскажите пожалуйста такую вещь. В прилагаемом файле, в столбце Е генерируются числа в диапазоне от 1 по 52. Мне необходимо быстро видеть местонахождение в этом ряду того или иного числа, допустим 14. Я применил условное форматирование - зелёный цвет и полужирный шрифт. Но мне нужно сразу видеть и номер строки. Приходится выделять мышкой эту ячейку. Неудобно. Можно ли что-то подправить в макросе, чтобы при возникновении числа с полужирным шрифтом сразу выделялсь вся строка ?

Макрос и файл прилагаю.
Код
Sub К52_не_повторяются()
Dim x%(1 To 52, 1 To 1), j%, i%
With New Collection
For i = 1 To 52
If i <> 111 Then .Add i
Next
Randomize
For i = 1 To 52
j = CInt((52 - i) * Rnd + 1)
x(i, 1) = .Item(j)
.Remove (j)
Next
[E1].Resize(52) = x

End With
End Sub
 
По какому критерию выбрали значение "14"?
 
Это отражение некоей системы в которой 52 элемента и где каждому элементу дан порядковый номер. В данном случае меня интересует случайное поведение объекта под номером 14
Изменено: иванов иван - 28.07.2013 14:15:07
 
иванов иван, сообщений больше 30, а оформлять код тэгами не научились.
 
Точно, извините, теперь буду более внимателен.
 
Код
Sub ttt()
Columns(5).Find("14").EntireRow.Select
End Sub
 
k61, именно то, что нужно, большое вам спасибо :)
 
k61, добрый день. У меня к вам просьба, а нельзя ли универсализировать ваш макрос, чтобы он выделял не только именно значение 14, а вообще любое число на листе выделенное полужирным шрифтом, причём их может быть несколько ?
Изменено: иванов иван - 30.07.2013 05:36:47
 
Добрый день Иван, но я на сайте не один  :)
Сейчас население живущее в других часовых поясах проснётся...
Код
Sub ttt_1()
Set ss = Nothing
For Each s In Range("E1:E52")
  If s.Font.Bold Then
    If ss Is Nothing Then
    Set ss = s
    Else
    Set ss = Union(s, ss)
    End If
  End If
Next
ss.EntireRow.Select
End Sub
 
Добрый день, вставил макрос, а он почему-то упирается  :)  и пишет "Сant execute code in break mode" выделяет в жёлтым цветом "ss.EntireRow.Select". Я ничего не напутал ?)
 
Начнем с того, что если текст делается жирным через УФ - макрос не сработает. Если быть точнее - он не найдет совпадения.
"Сant execute code in break mode" означает, что какой-то код уже запущен и находится в режиме отладки. А во время выполнения одного кода, второй не может быть выполнен параллельно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, спасибо вам, я это и подозревал. Когда-то я испытывал похожие трудности с УФ.  А есть какое либо иное решение, чтобы выделялась строка или подсвечивался номер строки ?
 
Вы же макросом значения формируете - в нем же и выделяйте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вы имеете в виду заложить в макрос критерии выбора ? Но дело в том, что в данном случае, ситуация быстро меняется и, допустим, мне нужно сейчас выделить для исследования числа 14, 27, 33. Но через полчаса, исходя из прежних результатов приоритеты поменяются и необходимо будет выделить уже числа 12, и 37. и придётся снова углубляться в макрос и переписывать критерии?. Если я правильно вас понял. Если так, то это несколько некомфортно :). И кстати, вы правы - УФ достаточно виртуально. Я выделил через УФ критерий -число 4 - вижу жирное число 4, но на панели инструментов кнопка жирности в неактивном состоянии. Странно. Я его вижу, а Эксель нет.
 
Не буду углубляться в тонкости УФ. Добавьте перед выполнением кода Inputbox для ввода нужных чисел и все.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Понял, спасибо :)
 
А нельзя ли в этом коде сделать, чтобы выделялась строка тогда, когда критерий был полным - допустим если качестве критерия стоит "4", то макрос ищет все числа в которых есть "4" и выделяет, допустим, ненужное число "14".

Код
Sub А1()
Columns(1).Find("4").EntireRow.Select
End Sub
Изменено: иванов иван - 31.07.2013 04:32:02
 
Код
Sub А1_1()
Set w = Columns(1).Find(What:="4", LookAt:=xlWhole)
If Not w Is Nothing Then w.EntireRow.Select
End Sub
 
Отлично !!! Большое спасибо :)
Страницы: 1
Наверх