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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос не обрабатывает список результата формулы - Мир MS Excel

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

Добрый день!
Когда то давно взял файл с макросом по поиску нужного значения в заданном столбце и переходу на другой столбец, найденной строки.
Вот код:
[vba]
Код
Public stolb As Integer
Public stolbV As Integer
Public strokaFirst As Integer

Private Sub UserForm_Initialize()
     stolb = 1       'задаем столбец для поиска А-1 В-2 С-3 и тд
     stolbV = 7      'задаем столбец для выбора А-1 В-2 С-3 и тд
     strokaFirst = 2 'задаем номер верхней строки, начиная с которой осуществляем поиск
End Sub

Private Sub TextBox1_Change()
'очистка списка найденых элементов
     ListBox1.Clear
'при отсутствии символов для поиска - выход
     If Len(TextBox1.Value) = 0 Then Exit Sub
'вычисляем номер последней строки, до которой осуществляем поиск
     strokaLast = Cells(Rows.Count, stolb).End(xlUp).Row
'задаем индекс первого элемента списка ListBox1
     j = 0
'переводим искомый текст в вверхний регистр
     textS = UCase(TextBox1.Value)

  For i = strokaFirst To strokaLast
   'для одного символа
      If Len(TextBox1.Value) = 1 Then
         If UCase(Left(Cells(i, stolb), 1)) = textS Then
           'при совпадении добавляем элемент в список
            ListBox1.AddItem i
            ListBox1.List(j, 1) = Cells(i, stolb)
           'задаем индекс для следующего элемента списка
            j = j + 1
         End If
   'для двух и более символов
      Else
         If InStr(1, UCase(Cells(i, stolb)), textS) > 0 Then
           'при совпадении добавляем элемент в список
            ListBox1.AddItem i
            ListBox1.List(j, 1) = Cells(i, stolb)
           'задаем индекс для следующего элемента списка
            j = j + 1
         End If
      End If
  Next
   
'если найден только один эл-т, то переходим к нему
      If j = 1 Then Cells(ListBox1.List(0, 0), stolbV).Select
End Sub

Private Sub ListBox1_Click()
'если не выбран элемент списка - выход
    If ListBox1.ListIndex = -1 Then Exit Sub
'переход к ячейке листа, содержащей выбранный элемент списка
    Cells(ListBox1.Value, stolbV).Select
End Sub
[/vba]
Возникла проблема с поиском по столбцу не с забитыми данными (числами), а с результатами формулы (данные из другого листа), я так понимаю в ходе работы кода обрабатываются не результаты формулы, а мне нужны именно они. Переформатировать столбец с формулами в значения не хочется, так как постоянно добавляются новые данные, в данный момент я их ввожу на одном листе, они дублируются на другом. На первом листе макрос ищет по столбцу с этими значениями, на втором нифига.
Как мне кажется нужно применить какую-то функцию vba со значением Cells(i, stolb) кода, типа как в стандартном поиске в параметрах переключается область поиска с формулы, на значения. Хотя и там и так текстовые ячейки, когда руками заполнены отлично по ним ищет, а по формулам нет.
Прошу подсказать.

В файле примере не работает второй поиск на вкладке Исходящих, если это непонятно.
[moder]Для обтегивания кода макроса нужно топать не кнопочку #
Поправил Вам[/moder]
К сообщению приложен файл: 1018642.xlsm (68.8 Kb)


Сообщение отредактировал _Boroda_ - Четверг, 15.12.2016, 10:49
 
Ответить
СообщениеДобрый день!
Когда то давно взял файл с макросом по поиску нужного значения в заданном столбце и переходу на другой столбец, найденной строки.
Вот код:
[vba]
Код
Public stolb As Integer
Public stolbV As Integer
Public strokaFirst As Integer

Private Sub UserForm_Initialize()
     stolb = 1       'задаем столбец для поиска А-1 В-2 С-3 и тд
     stolbV = 7      'задаем столбец для выбора А-1 В-2 С-3 и тд
     strokaFirst = 2 'задаем номер верхней строки, начиная с которой осуществляем поиск
End Sub

Private Sub TextBox1_Change()
'очистка списка найденых элементов
     ListBox1.Clear
'при отсутствии символов для поиска - выход
     If Len(TextBox1.Value) = 0 Then Exit Sub
'вычисляем номер последней строки, до которой осуществляем поиск
     strokaLast = Cells(Rows.Count, stolb).End(xlUp).Row
'задаем индекс первого элемента списка ListBox1
     j = 0
'переводим искомый текст в вверхний регистр
     textS = UCase(TextBox1.Value)

  For i = strokaFirst To strokaLast
   'для одного символа
      If Len(TextBox1.Value) = 1 Then
         If UCase(Left(Cells(i, stolb), 1)) = textS Then
           'при совпадении добавляем элемент в список
            ListBox1.AddItem i
            ListBox1.List(j, 1) = Cells(i, stolb)
           'задаем индекс для следующего элемента списка
            j = j + 1
         End If
   'для двух и более символов
      Else
         If InStr(1, UCase(Cells(i, stolb)), textS) > 0 Then
           'при совпадении добавляем элемент в список
            ListBox1.AddItem i
            ListBox1.List(j, 1) = Cells(i, stolb)
           'задаем индекс для следующего элемента списка
            j = j + 1
         End If
      End If
  Next
   
'если найден только один эл-т, то переходим к нему
      If j = 1 Then Cells(ListBox1.List(0, 0), stolbV).Select
End Sub

Private Sub ListBox1_Click()
'если не выбран элемент списка - выход
    If ListBox1.ListIndex = -1 Then Exit Sub
'переход к ячейке листа, содержащей выбранный элемент списка
    Cells(ListBox1.Value, stolbV).Select
End Sub
[/vba]
Возникла проблема с поиском по столбцу не с забитыми данными (числами), а с результатами формулы (данные из другого листа), я так понимаю в ходе работы кода обрабатываются не результаты формулы, а мне нужны именно они. Переформатировать столбец с формулами в значения не хочется, так как постоянно добавляются новые данные, в данный момент я их ввожу на одном листе, они дублируются на другом. На первом листе макрос ищет по столбцу с этими значениями, на втором нифига.
Как мне кажется нужно применить какую-то функцию vba со значением Cells(i, stolb) кода, типа как в стандартном поиске в параметрах переключается область поиска с формулы, на значения. Хотя и там и так текстовые ячейки, когда руками заполнены отлично по ним ищет, а по формулам нет.
Прошу подсказать.

В файле примере не работает второй поиск на вкладке Исходящих, если это непонятно.
[moder]Для обтегивания кода макроса нужно топать не кнопочку #
Поправил Вам[/moder]

Автор - rJIynbIuKOT
Дата добавления - 15.12.2016 в 09:50
K-SerJC Дата: Четверг, 15.12.2016, 10:31 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
а он у вас в примере совсем неработает, ни на одной кнопке...

два скрытых столбца было, поэтому задать столбец поиска надо 12

p/s/ насчет не работает неправ был...
К сообщению приложен файл: rJIynbIuKOT.xlsm (49.7 Kb)


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Четверг, 15.12.2016, 10:43
 
Ответить
Сообщениеа он у вас в примере совсем неработает, ни на одной кнопке...

два скрытых столбца было, поэтому задать столбец поиска надо 12

p/s/ насчет не работает неправ был...

Автор - K-SerJC
Дата добавления - 15.12.2016 в 10:31
rJIynbIuKOT Дата: Четверг, 15.12.2016, 10:38 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

K-SerJC, скачал прикрепленный файл, первые три кнопки поиска работают отлично, как по цифрам, так и по тексту, последняя не работает. Думаю вы или не разрешили содержимое или заблокировали работу макросов.

Прошу отписаться ешё кого-нибудь, работает или не работает файл.
 
Ответить
СообщениеK-SerJC, скачал прикрепленный файл, первые три кнопки поиска работают отлично, как по цифрам, так и по тексту, последняя не работает. Думаю вы или не разрешили содержимое или заблокировали работу макросов.

Прошу отписаться ешё кого-нибудь, работает или не работает файл.

Автор - rJIynbIuKOT
Дата добавления - 15.12.2016 в 10:38
K-SerJC Дата: Четверг, 15.12.2016, 10:46 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Прошу отписаться ешё кого-нибудь, работает или не работает файл.

смотрите, исправил текст свой


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Четверг, 15.12.2016, 10:46
 
Ответить
Сообщение
Прошу отписаться ешё кого-нибудь, работает или не работает файл.

смотрите, исправил текст свой

Автор - K-SerJC
Дата добавления - 15.12.2016 в 10:46
_Boroda_ Дата: Четверг, 15.12.2016, 10:47 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
ListBox1.Value - это текст, а Вы пытаетесь засунуть его в номер строки.
Преобразуйте в число
Это я про переход из Листбокса на ячейку - у меня не работал в Вашем коде

А по поводу второй кнопки - Вы пытаетесь работать с 10-м столбцом, а нужно с 12-м (у Вас 2 столбца скрыты)
К сообщению приложен файл: 1018642_1.xlsm (48.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеListBox1.Value - это текст, а Вы пытаетесь засунуть его в номер строки.
Преобразуйте в число
Это я про переход из Листбокса на ячейку - у меня не работал в Вашем коде

А по поводу второй кнопки - Вы пытаетесь работать с 10-м столбцом, а нужно с 12-м (у Вас 2 столбца скрыты)

Автор - _Boroda_
Дата добавления - 15.12.2016 в 10:47
rJIynbIuKOT Дата: Четверг, 15.12.2016, 11:02 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

K-SerJC, спасибо большое, вся проблема была в том, что искал в пустом скрытом столбце и естественно ничего не находил. Скрыл его сам, дурак, ибо не умел раньше редактировать код макроса.
_Boroda_, из-за своей необразованности в плане темы не понял вашего совета, лично у меня все работает согласно комментариям в коде, переходы к ячейкам верны.
Спасибо за оперативную помощь, тему можно закрыть.
 
Ответить
СообщениеK-SerJC, спасибо большое, вся проблема была в том, что искал в пустом скрытом столбце и естественно ничего не находил. Скрыл его сам, дурак, ибо не умел раньше редактировать код макроса.
_Boroda_, из-за своей необразованности в плане темы не понял вашего совета, лично у меня все работает согласно комментариям в коде, переходы к ячейкам верны.
Спасибо за оперативную помощь, тему можно закрыть.

Автор - rJIynbIuKOT
Дата добавления - 15.12.2016 в 11:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос не обрабатывает список результата формулы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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