Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2012, 14:43   #51
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Рано закрывать. Попробую свой вариант на другом принципе сделать. Чуть позже...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.02.2012, 15:20   #52
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вот например так, без открытия файла:

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    'If Target.Value = Empty Then Exit Sub 'думаю это лишнее
    Application.ScreenUpdating = False
    If Not Intersect(Target, [D6:D101]) Is Nothing Then    'тут можно указать диапазон побольше
        Application.EnableEvents = False
        If CreateObject("scripting.filesystemobject").FileExists("D:\TMP\3\slone\2.xls") Then
            Target.Offset(, 3).Formula = "=IF(ISNA(VLOOKUP(" & _
            Target.Address & ",'D:\TMP\3\slone\[2.xls]Лист1'!$D:$E,2,0)),"""",VLOOKUP(" & _
            Target.Address & ",'D:\TMP\3\slone\[2.xls]Лист1'!$D:$E,2,0))"
            Target.Offset(, 3).Value = Target.Offset(, 3).Value
        Else
            Target.Offset(, 3).Value = Empty 'стираем если нет файла, т.е. нет точных данных
        End If
        Application.EnableEvents = True
    End If
    Application.ScreenUpdating = True
End Sub
Поменяйте всюду пути на свои, только аккуратно!
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 07.02.2012 в 15:23.
Hugo121 вне форума Ответить с цитированием
Старый 07.02.2012, 15:28   #53
slone2179
Форумчанин
 
Аватар для slone2179
 
Регистрация: 22.04.2011
Сообщений: 155
По умолчанию

Спасибо попробую, после ковра, теперь пробую присваивать ячейке нуль. Т.е. если я ввожу новую запись, то в ячейке Price должно быть нуль.
slone2179 вне форума Ответить с цитированием
Старый 07.02.2012, 15:48   #54
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

С нулями так:

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    'If Target.Value = Empty Then Exit Sub 'думаю это лишнее
    Application.ScreenUpdating = False
    If Not Intersect(Target, [D6:D101]) Is Nothing Then    'тут можно указать диапазон побольше
        Application.EnableEvents = False
        If CreateObject("scripting.filesystemobject").FileExists("D:\TMP\3\slone\2.xls") Then
            Target.Offset(, 3).Formula = "=IF(ISNA(VLOOKUP(" & _
            Target.Address & ",'D:\TMP\3\slone\[2.xls]Лист1'!$D:$E,2,0)),0,VLOOKUP(" & _
            Target.Address & ",'D:\TMP\3\slone\[2.xls]Лист1'!$D:$E,2,0))"
            Target.Offset(, 3).Value = Target.Offset(, 3).Value
        Else
            Target.Offset(, 3).Value = 0
        End If
        Application.EnableEvents = True
    End If
    Application.ScreenUpdating = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.02.2012, 15:55   #55
slone2179
Форумчанин
 
Аватар для slone2179
 
Регистрация: 22.04.2011
Сообщений: 155
По умолчанию

С нулями сделал, спасибо. Но почему когда ввожу к примеру сс у меня выходит какая-то цена, которая предназначена к примеру CTA-10. Попробуй введи cc и выйдет цифра 3,75. С помощью len я это сделал >=4, а если я захочу такое наименование из двух букв? Можно ли сделать фильтр?
slone2179 вне форума Ответить с цитированием
Старый 07.02.2012, 16:03   #56
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В каком коде - на Find?
Там нужно так:
Код:
Set myF = Sh.Cells.Find(ThisWorkbook.Sheets(1).Range("D" & myR), , , xlWhole)
Ну а код на формуле ищет точно.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.02.2012, 16:17   #57
slone2179
Форумчанин
 
Аватар для slone2179
 
Регистрация: 22.04.2011
Сообщений: 155
По умолчанию

Короче обнаружил ошибку. Функция Find у меня не ищет до полного совпадения. К примеру у меня есть в файле 2.xls CMC-6M-12G цена 9,6. Теперь в главном файле я ввожу CMC-6M (без 12G) и у меня тоже появляется цена 9.6
slone2179 вне форума Ответить с цитированием
Старый 07.02.2012, 16:20   #58
slone2179
Форумчанин
 
Аватар для slone2179
 
Регистрация: 22.04.2011
Сообщений: 155
По умолчанию

Получается я забыл добавить xlWhole)? и теперь у меня все заработало
slone2179 вне форума Ответить с цитированием
Старый 08.02.2012, 08:45   #59
slone2179
Форумчанин
 
Аватар для slone2179
 
Регистрация: 22.04.2011
Сообщений: 155
По умолчанию

Hugo 121, тут по ходу еще один глюк обнаружил. Когда вводишь например цифру 1 в столбце Price появляется цена 1. Откуда берется это число?
slone2179 вне форума Ответить с цитированием
Старый 08.02.2012, 10:20   #60
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию


Куда вводишь? Где появляется? Где поставить запятую?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа в Delphi с Excel файлами! Leximus Общие вопросы Delphi 5 02.10.2010 11:37
связи между файлами excel redfield Microsoft Office Excel 0 04.05.2010 16:22
Резервное копирование папки с файлами xls (Excel 2003) vfv Microsoft Office Excel 11 12.03.2010 17:05
Работа с файлами из Excel axell_pnz Microsoft Office Excel 4 16.11.2009 11:10
работа с excel файлами через Delphi Winss Помощь студентам 6 08.09.2007 17:54