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

Вход

Регистрация

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

 

= Мир MS Excel/Создание надстройки с поиском в диапазоне и заменой - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Создание надстройки с поиском в диапазоне и заменой
Hugo Дата: Среда, 29.08.2012, 10:13 | Сообщение № 21
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Да, проставить да/нет/учёт так будет быстро. А вот чтоб данные скопировать - всё равно нужен цикл. И массив тут тоже не поможет...Разве что с двумя заморачиваться...
Или можно эти данные сразу собирать в словарь, и брать уже из словаря в массив из столбца-получателя.
Но думаю не стОит так заморачиваться - сколько там может быть в среднем совпадений на одну выбранную персону?


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДа, проставить да/нет/учёт так будет быстро. А вот чтоб данные скопировать - всё равно нужен цикл. И массив тут тоже не поможет...Разве что с двумя заморачиваться...
Или можно эти данные сразу собирать в словарь, и брать уже из словаря в массив из столбца-получателя.
Но думаю не стОит так заморачиваться - сколько там может быть в среднем совпадений на одну выбранную персону?

Автор - Hugo
Дата добавления - 29.08.2012 в 10:13
Hugo Дата: Среда, 29.08.2012, 10:25 | Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Забыл сказать - код в файле Private Sub Worksheet_Change(ByVal Target As Range) уже был, он к моему функционалу отношения не имеет.
Просто раз был, то пусть будет для ТС.
Если кто сохранил себе как пример - можете этот код удалить, чтоб с толку не сбивал smile


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЗабыл сказать - код в файле Private Sub Worksheet_Change(ByVal Target As Range) уже был, он к моему функционалу отношения не имеет.
Просто раз был, то пусть будет для ТС.
Если кто сохранил себе как пример - можете этот код удалить, чтоб с толку не сбивал smile

Автор - Hugo
Дата добавления - 29.08.2012 в 10:25
Лехаа Дата: Среда, 29.08.2012, 15:21 | Сообщение № 23
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Огромное СПАСИБО!!! сейчас буду тестить, , по результатам отпишу обязательно!!!
 
Ответить
СообщениеОгромное СПАСИБО!!! сейчас буду тестить, , по результатам отпишу обязательно!!!

Автор - Лехаа
Дата добавления - 29.08.2012 в 15:21
Лехаа Дата: Среда, 29.08.2012, 16:17 | Сообщение № 24
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Почему то не получается перенести работоспособность на мой файл (у него формат xlsm) , копирую макрос , вставляю в свой файл (открываю исходный текст лист1 (учет)) далее в режиме конструктора выделяю 4 формы копирую в буфер обмена, вставляю в свой файл на страницу "учет" - выходит ошибка 400 в чем подвох может быть?
 
Ответить
СообщениеПочему то не получается перенести работоспособность на мой файл (у него формат xlsm) , копирую макрос , вставляю в свой файл (открываю исходный текст лист1 (учет)) далее в режиме конструктора выделяю 4 формы копирую в буфер обмена, вставляю в свой файл на страницу "учет" - выходит ошибка 400 в чем подвох может быть?

Автор - Лехаа
Дата добавления - 29.08.2012 в 16:17
Лехаа Дата: Среда, 29.08.2012, 16:24 | Сообщение № 25
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Прошу прощения! РАБОТАЕТ! smile на другую букву повесил исполнение и все заработало clap clap hands heart
 
Ответить
СообщениеПрошу прощения! РАБОТАЕТ! smile на другую букву повесил исполнение и все заработало clap clap hands heart

Автор - Лехаа
Дата добавления - 29.08.2012 в 16:24
Hugo Дата: Среда, 29.08.2012, 16:30 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Трудно сказать... Горячие клавиши задали? Это прописывается вручную в свой ствах макроса по Alt+F8 (т.е. я делал вручную).
Если это не помогло (хотя тогда бы просто ничего не работало) - покажите форуму свой файл - удалите лишние листы и лишние данные - оставьте примерно то, что уже было в примере выше.
Правдя я xlsm тут посмотреть не смогу (т.е. смогу, но только через конвертер, а у меня после него элементы обычно не работают).


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеТрудно сказать... Горячие клавиши задали? Это прописывается вручную в свой ствах макроса по Alt+F8 (т.е. я делал вручную).
Если это не помогло (хотя тогда бы просто ничего не работало) - покажите форуму свой файл - удалите лишние листы и лишние данные - оставьте примерно то, что уже было в примере выше.
Правдя я xlsm тут посмотреть не смогу (т.е. смогу, но только через конвертер, а у меня после него элементы обычно не работают).

Автор - Hugo
Дата добавления - 29.08.2012 в 16:30
Лехаа Дата: Среда, 29.08.2012, 16:53 | Сообщение № 27
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Еще если не очень сложно, можно ли добавить в код, что бы показывало количество найденых повторений?
 
Ответить
СообщениеЕще если не очень сложно, можно ли добавить в код, что бы показывало количество найденых повторений?

Автор - Лехаа
Дата добавления - 29.08.2012 в 16:53
Hugo Дата: Среда, 29.08.2012, 17:46 | Сообщение № 28
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Там в коде есть такой блок:

[vba]
Code
            For Each el In Split(oDic.Item(Me.TextBox1.Text))
                 .Cells(el + 1, 18) = test
                 If test = "да" Then .Cells(el + 1, 31) = .Cells(el + 1, 16)
             Next
[/vba]Так вот, количество совпадений - это
Ubound(Split(oDic.Item(Me.TextBox1.Text)))+1
или можно сделать счётчик и на каждый el его увеличивать.
Число получили - и что с ним делать?


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеТам в коде есть такой блок:

[vba]
Code
            For Each el In Split(oDic.Item(Me.TextBox1.Text))
                 .Cells(el + 1, 18) = test
                 If test = "да" Then .Cells(el + 1, 31) = .Cells(el + 1, 16)
             Next
[/vba]Так вот, количество совпадений - это
Ubound(Split(oDic.Item(Me.TextBox1.Text)))+1
или можно сделать счётчик и на каждый el его увеличивать.
Число получили - и что с ним делать?

Автор - Hugo
Дата добавления - 29.08.2012 в 17:46
Лехаа Дата: Четверг, 30.08.2012, 12:43 | Сообщение № 29
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Полученное число отобразить на панельке, примерно такой надписью "Всего: 3" коротко и ясно smile - нужно это для проверки, потому как вносится это с бумажного носителя и было бы наглядно исправили три совпадения как и на бумаге , а то так как то в слепую получается smile но так вообще легче жить стало! Спасибо еще раз огромное !


Сообщение отредактировал Лехаа - Четверг, 30.08.2012, 12:46
 
Ответить
СообщениеПолученное число отобразить на панельке, примерно такой надписью "Всего: 3" коротко и ясно smile - нужно это для проверки, потому как вносится это с бумажного носителя и было бы наглядно исправили три совпадения как и на бумаге , а то так как то в слепую получается smile но так вообще легче жить стало! Спасибо еще раз огромное !

Автор - Лехаа
Дата добавления - 30.08.2012 в 12:43
Hugo Дата: Четверг, 30.08.2012, 13:10 | Сообщение № 30
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Тогда лучше сразу при выборе клиента показать, сколько его записей в таблице - если что-то подозрительно, то кнопку можно не нажимать smile
Вечером посмотрю - там нужно ещё и "панельку" добавлять...
Или может прямо на кнопке и написать, вместо ОК?
Всё равно файл только из дома смогу показать.
Может пока сами попробуете сделать?
Как поменять надпись на кнопке - запишите процесс рекордером, потом используйте полученный код.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеТогда лучше сразу при выборе клиента показать, сколько его записей в таблице - если что-то подозрительно, то кнопку можно не нажимать smile
Вечером посмотрю - там нужно ещё и "панельку" добавлять...
Или может прямо на кнопке и написать, вместо ОК?
Всё равно файл только из дома смогу показать.
Может пока сами попробуете сделать?
Как поменять надпись на кнопке - запишите процесс рекордером, потом используйте полученный код.

Автор - Hugo
Дата добавления - 30.08.2012 в 13:10
Лехаа Дата: Четверг, 30.08.2012, 13:28 | Сообщение № 31
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Да можно сразу вместо ок найденое кол-во указать так тоже хорошо будет smile
(сам наверное не смогу...попробую)
 
Ответить
СообщениеДа можно сразу вместо ок найденое кол-во указать так тоже хорошо будет smile
(сам наверное не смогу...попробую)

Автор - Лехаа
Дата добавления - 30.08.2012 в 13:28
Hugo Дата: Пятница, 31.08.2012, 10:04 | Сообщение № 32
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Не получилось вчера заняться кнопкой...
Поэтому сегодня просто код, без файла:
1. эту процедуру замените на такую:

[vba]
Code
Private Sub ListBox1_Click()
      flag = True
      TextBox1 = ListBox1.List(ListBox1.ListIndex, 1)
      Me.CommandButton1.Caption = UBound(Split(oDic.Item(Me.TextBox1.Text))) + 1
      Me.ListBox1.Visible = False
      Me.ComboBox1.Visible = True
      Me.CommandButton1.Visible = True
End Sub
[/vba]
2. Ну а тут обнаружилось 4 лишних строки (немного от этого страдал функционал), замените всё на это:

[vba]
Code
Private Sub TextBox1_Change()
      Dim X As Long, i&, kk
      If Not flag Then
          Me.ListBox1.Clear
          If Len(Me.TextBox1) <> 0 Then
              Me.ListBox1.Visible = True
              X = 0
              With ListBox1
                  For Each kk In oDic.keys
                      If UCase(kk) Like "*" & UCase(Me.TextBox1) & "*" Then
                          .AddItem ""
                          .List(X, 1) = kk
                          X = X + 1
                      End If
                  Next
              End With
          Else
              Me.ListBox1.Visible = False
          End If
      End If
      flag = False
End Sub
[/vba]

Вроде бы всё...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНе получилось вчера заняться кнопкой...
Поэтому сегодня просто код, без файла:
1. эту процедуру замените на такую:

[vba]
Code
Private Sub ListBox1_Click()
      flag = True
      TextBox1 = ListBox1.List(ListBox1.ListIndex, 1)
      Me.CommandButton1.Caption = UBound(Split(oDic.Item(Me.TextBox1.Text))) + 1
      Me.ListBox1.Visible = False
      Me.ComboBox1.Visible = True
      Me.CommandButton1.Visible = True
End Sub
[/vba]
2. Ну а тут обнаружилось 4 лишних строки (немного от этого страдал функционал), замените всё на это:

[vba]
Code
Private Sub TextBox1_Change()
      Dim X As Long, i&, kk
      If Not flag Then
          Me.ListBox1.Clear
          If Len(Me.TextBox1) <> 0 Then
              Me.ListBox1.Visible = True
              X = 0
              With ListBox1
                  For Each kk In oDic.keys
                      If UCase(kk) Like "*" & UCase(Me.TextBox1) & "*" Then
                          .AddItem ""
                          .List(X, 1) = kk
                          X = X + 1
                      End If
                  Next
              End With
          Else
              Me.ListBox1.Visible = False
          End If
      End If
      flag = False
End Sub
[/vba]

Вроде бы всё...

Автор - Hugo
Дата добавления - 31.08.2012 в 10:04
Лехаа Дата: Пятница, 31.08.2012, 13:50 | Сообщение № 33
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

все работает, огромное спасибо!
 
Ответить
Сообщениевсе работает, огромное спасибо!

Автор - Лехаа
Дата добавления - 31.08.2012 в 13:50
Лехаа Дата: Вторник, 18.09.2012, 09:34 | Сообщение № 34
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Hugo, добрый день! обнаружил что если выставлять "да" не копируется значение из ячейки "P" в я чейку "AE" такое есть в макросе или такое сложно прикрутить?
(в начальной задачке такое указывал: в тех ячейках в которых проставилось "да" нужно скопировать содержимое ячейки P в ячейку AE)
 
Ответить
СообщениеHugo, добрый день! обнаружил что если выставлять "да" не копируется значение из ячейки "P" в я чейку "AE" такое есть в макросе или такое сложно прикрутить?
(в начальной задачке такое указывал: в тех ячейках в которых проставилось "да" нужно скопировать содержимое ячейки P в ячейку AE)

Автор - Лехаа
Дата добавления - 18.09.2012 в 09:34
Hugo Дата: Вторник, 18.09.2012, 09:58 | Сообщение № 35
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Здравствуйте.
Т.е. 31.08.2012, 13:50 "все работает", а 18.09.2012 09:34 перестало?
В коде Private Sub CommandButton1_Click() была (есть?) такая строка:
[vba]
Code
If test = "да" Then .Cells(el + 1, 31) = .Cells(el + 1, 16)
[/vba]
Так что что-то копируется.
Другой вопрос - что и куда? Может быть в 16-ом столбце нет данных, или формат таблицы изменился и вместо "+1" нужно писать иначе?
Но тогда и тут "да" будет в другой строке:
[vba]
Code
.Cells(el + 1, 18) = test
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЗдравствуйте.
Т.е. 31.08.2012, 13:50 "все работает", а 18.09.2012 09:34 перестало?
В коде Private Sub CommandButton1_Click() была (есть?) такая строка:
[vba]
Code
If test = "да" Then .Cells(el + 1, 31) = .Cells(el + 1, 16)
[/vba]
Так что что-то копируется.
Другой вопрос - что и куда? Может быть в 16-ом столбце нет данных, или формат таблицы изменился и вместо "+1" нужно писать иначе?
Но тогда и тут "да" будет в другой строке:
[vba]
Code
.Cells(el + 1, 18) = test
[/vba]

Автор - Hugo
Дата добавления - 18.09.2012 в 09:58
Лехаа Дата: Вторник, 18.09.2012, 12:43 | Сообщение № 36
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 4 ±
Замечаний: 0% ±

Прошу прощения, Работает!
 
Ответить
СообщениеПрошу прощения, Работает!

Автор - Лехаа
Дата добавления - 18.09.2012 в 12:43
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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