Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 13.06.2018, 01:01   #1
А л е н а
 
Регистрация: 28.03.2018
Сообщений: 7
Репутация: 10
По умолчанию Перестал работать написанный макрос

Добрый вечер. Есть определенная таблица с данными. Из столбца Е ищу совпадения по столбцам А и В, если такое совпадение есть, то данные из столбца F переносятся в столбец C.
Для этого написан был макрос:
Sub test()
Dim arr(), i&, itxt
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary" )
With Лист1
arr = .Range(.[e2], .[f2].End(xlDown)).Value
For i = 1 To UBound(arr)
dic.Item(CStr(arr(i, 1))) = arr(i, 2)
Next i
Erase arr
arr = .Range(.[c2], .[a2].End(xlDown)).Value
For i = 1 To UBound(arr)
itxt = Trim(arr(i, 1)) & " " & Trim(arr(i, 2))
If dic.exists(itxt) Then arr(i, 3) = dic.Item(itxt)
Next i
.Range("a2").Resize(UBound(arr), UBound(arr, 2)).Value = arr
End With
End Sub

Дело в том, что в столбцы E и C будут подставляться различные данные, например СНИЛС, номер документа ,адрес прописки и надо, чтобы макрос работал при данных изменениях. Но суть поиска по заданным столбцам E, A и B, остается та же. Работал макрос некоторое время, сейчас не работает.
Возможно, я не вижу в чём ошибка. Подскажите, пожалуйста. Вопрос достаточно срочный. Заранее спасибо.
Вложения
Тип файла: xlsx образец.xlsx (12.0 Кб, 2 просмотров)

Последний раз редактировалось А л е н а; 13.06.2018 в 01:29. Причина: Ошибку нашла сама.
А л е н а вне форума   Ответить с цитированием
Старый 13.06.2018, 02:05   #2
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: УКРАЇНА, Київ
Сообщений: 8,993
Репутация: 1710

icq: 7934250
skype: i2x0,5
По умолчанию

Код:

Sub test()
  Dim arr(), i&, itxt
  Dim dic As Object
  Set dic = CreateObject("Scripting.Dictionary")
  With Ëèñò1
    arr = .Range(.[e2], .[f2].End(xlDown)).Value
    For i = 1 To UBound(arr)
      dic.Item(UCase(CStr(arr(i, 1)))) = arr(i, 2)
    Next i
    Erase arr
    arr = .Range(.[c2], .[a2].End(xlDown)).Value
    For i = 1 To UBound(arr)
      itxt = Trim(arr(i, 1)) & " " & Trim(arr(i, 2))
      If dic.exists(itxt) Then
        arr(i, 3) = dic.Item(itxt)
      End If
    Next i
    .Range("a2").Resize(UBound(arr), UBound(arr, 2)).Value = arr
  End With
End Sub

__________________
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO на форуме   Ответить с цитированием
Старый 13.06.2018, 02:13   #3
А л е н а
 
Регистрация: 28.03.2018
Сообщений: 7
Репутация: 10
По умолчанию

IgorGO, спасибо большое. Я уже самостоятельно нашла ошибку.
Прописала Dic.comparemode = 1, чтобы не учитывался регистр.
И всё получилось и работает для всех значений.
Все равно спасибо, что откликнулись.
А л е н а вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестал работать макрос с ADO Connection armati lepori Microsoft Office Excel 1 08.12.2016 21:53
перестал работать макрос, запускающий поиск в Хроме caute Microsoft Office Word 0 26.05.2015 07:48
перестал работать внешник BosunPo Железо 10 10.02.2014 17:00
Перестал работать тестер kanich Помощь студентам 4 15.11.2010 14:02


00:37.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru