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

Вход

Регистрация

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

 

= Мир MS Excel/Окрашиваение только одной искомой цифры - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Окрашиваение только одной искомой цифры (Макросы/Sub)
Окрашиваение только одной искомой цифры
Nostex Дата: Понедельник, 17.03.2014, 16:07 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Господа,
нужна Ваша экспертная помощь. Суть дела в следущем:
1) вся видимая область таблицы заполняется случайными числами от 1 до 100 (выполнил)
2) InputBox'ом спрашивается цифра от 0 до 9 (выполнил)
3) и затем нужно, чтобы только эта цифра (а не вся ячейка) во всех рандомно введеных ячейках покрасилась в красный. (Не получается, нужна помощь)

В приложении мой макрос, который окрашивает не только одну цифру, а всю ячейку, если там есть искомая цифра.
На снимке экрана в столбце А - ошибочная окраска. В столбцах B, C, D - правильная. Но даже этот результат возможен только если числа введены ы ручную и ячейки имеют формат текста. Если же числа вводятся программно (рандомно от 1-100) и даже если формат ячеек меняется на текст одну цифру покрасить не получается.

Есть идеи?
Прикрепляю файл, в котором все еще раз наглядно продемонстрированно.
К сообщению приложен файл: 2098015.jpg (26.6 Kb) · Visible_Area.xlsm (29.4 Kb)
 
Ответить
СообщениеГоспода,
нужна Ваша экспертная помощь. Суть дела в следущем:
1) вся видимая область таблицы заполняется случайными числами от 1 до 100 (выполнил)
2) InputBox'ом спрашивается цифра от 0 до 9 (выполнил)
3) и затем нужно, чтобы только эта цифра (а не вся ячейка) во всех рандомно введеных ячейках покрасилась в красный. (Не получается, нужна помощь)

В приложении мой макрос, который окрашивает не только одну цифру, а всю ячейку, если там есть искомая цифра.
На снимке экрана в столбце А - ошибочная окраска. В столбцах B, C, D - правильная. Но даже этот результат возможен только если числа введены ы ручную и ячейки имеют формат текста. Если же числа вводятся программно (рандомно от 1-100) и даже если формат ячеек меняется на текст одну цифру покрасить не получается.

Есть идеи?
Прикрепляю файл, в котором все еще раз наглядно продемонстрированно.

Автор - Nostex
Дата добавления - 17.03.2014 в 16:07
ikki Дата: Понедельник, 17.03.2014, 17:57 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Есть идеи?
а то как же!
в макросе генерируете в цикле случайные числа, преобразуете в текст, делаете формат ячеек текстрвым и сохраняете числа на лист как текст.
после этого красите нужную цифру.

конечно, минут 10 уйдёт на такой код, но ради такой важной задачи не жалко.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Есть идеи?
а то как же!
в макросе генерируете в цикле случайные числа, преобразуете в текст, делаете формат ячеек текстрвым и сохраняете числа на лист как текст.
после этого красите нужную цифру.

конечно, минут 10 уйдёт на такой код, но ради такой важной задачи не жалко.

Автор - ikki
Дата добавления - 17.03.2014 в 17:57
Nostex Дата: Среда, 19.03.2014, 09:53 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
@ ikki: Спасибо ikki!!!
генерируете в цикле случайные числа, преобразуете в текст, делаете формат ячеек текстрвым и сохраняете числа на лист как текст.

Но разве все эти действия, что ты перечисляешь не выполнены у меня в файле с примером? Я заполняю там видимую область случайными числави, затем преобразую эти ячейки в формат текста и окрашивание должно касаться только одной цифры, введеной в InputBox, но красится по-прежнему вся ячейка, хоть эти и текстовый формат. В чем же дело? Я же так и пытался сделать, но не получилось!
И еще раз большое спасибо за отклик! =)
 
Ответить
Сообщение@ ikki: Спасибо ikki!!!
генерируете в цикле случайные числа, преобразуете в текст, делаете формат ячеек текстрвым и сохраняете числа на лист как текст.

Но разве все эти действия, что ты перечисляешь не выполнены у меня в файле с примером? Я заполняю там видимую область случайными числави, затем преобразую эти ячейки в формат текста и окрашивание должно касаться только одной цифры, введеной в InputBox, но красится по-прежнему вся ячейка, хоть эти и текстовый формат. В чем же дело? Я же так и пытался сделать, но не получилось!
И еще раз большое спасибо за отклик! =)

Автор - Nostex
Дата добавления - 19.03.2014 в 09:53
ikki Дата: Среда, 19.03.2014, 10:42 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
нет, вы делаете иначе, чем предлагаю я.
прочитайте внимательно - где у меня заполнение ячеек числами?
только текстом.

а как хотите вы - простая смена формата ячеек, увы, не делает их содержимое текстом.
(кстати, и в обратную сторону - тоже).


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Среда, 19.03.2014, 10:43
 
Ответить
Сообщениенет, вы делаете иначе, чем предлагаю я.
прочитайте внимательно - где у меня заполнение ячеек числами?
только текстом.

а как хотите вы - простая смена формата ячеек, увы, не делает их содержимое текстом.
(кстати, и в обратную сторону - тоже).

Автор - ikki
Дата добавления - 19.03.2014 в 10:42
KuklP Дата: Среда, 19.03.2014, 10:49 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Внимательней надо советы читать.
[vba]
Код
Sub VisibleArea()
     ActiveWindow.VisibleRange.Select
     Dim aCell As Range, mR As Range
     Set mR = Selection
     Dim x As Integer
     x = InputBox("Введи число от 0 до 9")
     Dim iInt As Integer
     For Each aCell In Selection.Cells
         aCell = CInt(1 + 99 * Rnd)
         aCell.NumberFormat = "@"
         aCell.Value = CStr(aCell.Value)
         If InStr(1, aCell, x) > 0 Then
             For i = 1 To Len(aCell.Value)
                 If Mid(aCell, i, 1) = x Then
                     aCell.Characters(i, 1).Font.ColorIndex = 3
                 Else
                     aCell.Characters(i, 1).Font.ColorIndex = xlAutomatic
                 End If
             Next
         End If
     Next
     Set mR = Nothing
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВнимательней надо советы читать.
[vba]
Код
Sub VisibleArea()
     ActiveWindow.VisibleRange.Select
     Dim aCell As Range, mR As Range
     Set mR = Selection
     Dim x As Integer
     x = InputBox("Введи число от 0 до 9")
     Dim iInt As Integer
     For Each aCell In Selection.Cells
         aCell = CInt(1 + 99 * Rnd)
         aCell.NumberFormat = "@"
         aCell.Value = CStr(aCell.Value)
         If InStr(1, aCell, x) > 0 Then
             For i = 1 To Len(aCell.Value)
                 If Mid(aCell, i, 1) = x Then
                     aCell.Characters(i, 1).Font.ColorIndex = 3
                 Else
                     aCell.Characters(i, 1).Font.ColorIndex = xlAutomatic
                 End If
             Next
         End If
     Next
     Set mR = Nothing
End Sub
[/vba]

Автор - KuklP
Дата добавления - 19.03.2014 в 10:49
ikki Дата: Среда, 19.03.2014, 10:52 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
[vba]
Код
Sub test()
      With Sheets(3)
          .UsedRange.Clear
          .[a1:c20].NumberFormat = "@"
          For Each c In .[a1:c20].Cells
              c.Value = CStr(CInt(Rnd(1) * 1000))
          Next
          s = "5"
          For Each c In .[a1:c20].Cells
              For i = 1 To Len(c.Text)
                  If Mid(c.Text, i, 1) = s Then c.Characters(i, 1).Font.ColorIndex = 3
              Next
          Next
      End With
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Среда, 19.03.2014, 10:52
 
Ответить
Сообщение[vba]
Код
Sub test()
      With Sheets(3)
          .UsedRange.Clear
          .[a1:c20].NumberFormat = "@"
          For Each c In .[a1:c20].Cells
              c.Value = CStr(CInt(Rnd(1) * 1000))
          Next
          s = "5"
          For Each c In .[a1:c20].Cells
              For i = 1 To Len(c.Text)
                  If Mid(c.Text, i, 1) = s Then c.Characters(i, 1).Font.ColorIndex = 3
              Next
          Next
      End With
End Sub
[/vba]

Автор - ikki
Дата добавления - 19.03.2014 в 10:52
Nostex Дата: Среда, 19.03.2014, 16:39 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
@ ikki: Офигенно! Просто шикарно! Спасибо!
Я немного дополнил под свои надобности, но работает превосходно! ikki, да вы просто повелитель VBA =)
У мееня еще один вопросик: А что это за синтаксис такой для написания областей? .[a1:c20]. ? Он эквивалентен Range("A1:C20") только без лишних символов?

hands Браво! и спасибо!
 
Ответить
Сообщение@ ikki: Офигенно! Просто шикарно! Спасибо!
Я немного дополнил под свои надобности, но работает превосходно! ikki, да вы просто повелитель VBA =)
У мееня еще один вопросик: А что это за синтаксис такой для написания областей? .[a1:c20]. ? Он эквивалентен Range("A1:C20") только без лишних символов?

hands Браво! и спасибо!

Автор - Nostex
Дата добавления - 19.03.2014 в 16:39
Nostex Дата: Среда, 19.03.2014, 16:50 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
KuklP, Спасибо большое! Я не так давно занимаюсь VBA и программированием вообще, но этот урок обязательно выучу!
Спасибо, KuklP! victory
 
Ответить
СообщениеKuklP, Спасибо большое! Я не так давно занимаюсь VBA и программированием вообще, но этот урок обязательно выучу!
Спасибо, KuklP! victory

Автор - Nostex
Дата добавления - 19.03.2014 в 16:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Окрашиваение только одной искомой цифры (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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