Вопрос по вызову файла

Программирование на Visual Basic for Applications
Michelin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.04.2004 (Вс) 12:30

Вопрос по вызову файла

Сообщение Michelin » 18.04.2004 (Вс) 13:47

Такая проблема(Excel):
Создал в файле 1.xls на листе кнопку и написал код для неё в VBA.При нажатии на неё эта небольшая программка должна в файле PS051203.xls на листе PS051203 найти ячейку со словом "Баркод" и выдать на экран сообщение о номере строки, где она находится.Всего-то.Запускаю и выдаёт ошибку Run-time error '9':Subscript out of range.Нажимаю Debug и выделяется жёлтым строка начинающаяся на Set Ячейка....,и при этом выскакивает ещё одно окно сообщения:Can't execute code in break mode.Самое главное этот код я взял из примера в книге,там,правда,чуточку по другому,но различие только в том,что там ищется максимальное значение.И вот ещё что,вчера мой код работал и я был доволен дальше некуда.Сегодня же запускаю-не пашет.Мистика какая-то.

Sub CommandButton1_Click()
For Строка = 1 To 65536
Set Ячейка = Workbooks("PS051203.xls").Worksheets("PS051203").Range("A1").Offset(Строка - 1, 0)
If Ячейка.Value = "Баркод" Then
MsgBox "Строка=" & Строка
Exit For
End If
Next Строка
End Sub

Понял,почему эта программа вчера работала.Вместе с файлом 1.xls был открыт файл PS051203.xls.Когда они оба открыты,то кнопка работает как надо,но стоит закрыть файл PS051203.xls и всё,начинается всё описанное выше.Выходит надо как-то в коде открывать файл PS051203.xls.Как это сделать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.04.2004 (Вс) 14:42

workbooks.open "PS051203.xls"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Michelin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.04.2004 (Вс) 12:30

Сообщение Michelin » 18.04.2004 (Вс) 23:25

GSerg

Попробовал сделать так,VBA говорит что не могу найти такого файла.Тогда написал полностью путь,вот после этого всё заработало.Но тогда получается,что у меня жёстко привязано к местоположению на диске и в папках.А можно сделать как-нибудь так,чтоб эти файлы были в одной директории и не важно на каком диске и папке?

AndreyV
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 13.02.2004 (Пт) 16:16

Сообщение AndreyV » 19.04.2004 (Пн) 7:36

как вариант можно указывать путь по которому расположена книга, выполняющая макрос ThisWorkbook.Path

Michelin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.04.2004 (Вс) 12:30

Сообщение Michelin » 19.04.2004 (Пн) 21:06

У меня программа просматривает 16000 записей в файле PS051203.xls,и не понятно сколько он просмотрел,сколько осталось.Можно как-нибудь сделать штуку типа как при инсталляции программ - ползунок.И если нет времени ждать до конца как прервать цикл и выйти из него.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.04.2004 (Вт) 9:35

Ключевые слова:
dim StopExecution as boolean
application.statusbar
doevents
commandbutton1_click
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Michelin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.04.2004 (Вс) 12:30

GSerg

Сообщение Michelin » 20.04.2004 (Вт) 22:14

Обьясните пожалуйста.Т.е. этот код нужно поместить в листинг той кнопки,которой я запускаю проверку и этот кусок кода будет следить за событием нажата ли кнопка Прервать или нет?А в самой кнопке Прервать сделать условие если нажали на кнопку то прервать цикл?Попробовал,запускаю на исполнение кнопка запуска утапливается,а на кнопке Прервать сколько не нажимай - она как каменная,не шелохнётся даже.Пробовал по другому и модуль помещал и в ЭтаКнига всякими комбинациями,чё та бесполезно.Вот морока.

Кстати,можно сделать экзешник в VBA,чтоб окно Excel не запускался,т.к. я все формы на VBA сделал.Чтоб кликнул на файл.exe и работать только с формами.

AndreyV
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 13.02.2004 (Пт) 16:16

Сообщение AndreyV » 21.04.2004 (Ср) 8:14

exe файл вряд ли получится сделать их xls, разве что переименовать его в RunMe.exe.xls :D
а в модуле книги прописать
private sub Workbook_Open()
Application.Visible=False
frmMain.Show
Application.Quit
end sub

Michelin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.04.2004 (Вс) 12:30

Сообщение Michelin » 21.04.2004 (Ср) 21:03

Жаль.Вообще,создаётся впечатление,что VBA в Excele недоделанный какой-то.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.04.2004 (Чт) 9:30

Я вас попрошу птичку нашу не обижать...
"VBA exe" - это xla с залоченным VB project, засунутая в startup.
К прочтенью мануала приступить...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Michelin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 18.04.2004 (Вс) 12:30

Сообщение Michelin » 22.04.2004 (Чт) 20:20

Да я бы с удовольствием почитал,но никак не найду толковую подробную книжку,а help В VBA на вражеском.
:)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109

    TopList