powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Type mismatch
25 сообщений из 31, страница 1 из 2
Type mismatch
    #39447923
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, понимаю что вопрос избитый но подскажите что не так
На строке IxlAPP.Selection выходит данная ошибка
Код: vbnet
1.
2.
3.
4.
5.
  IxlAPP.Rows("3:3").Select
    IxlAPP.Selection.Find(What:="ßíâàðü ôàêò", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    adr = IxlAPP.ActiveCell.Address
...
Рейтинг: 0 / 0
Type mismatch
    #39448073
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое IxlAPP?
Что такое ActiveCell в данном контексте?
В какой среде это вообще выполняется и как запускается?
...
Рейтинг: 0 / 0
Type mismatch
    #39448271
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что такое "данная ошибка"?
...
Рейтинг: 0 / 0
Type mismatch
    #39448273
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505Добрый день, понимаю что вопрос избитый но подскажите что не так
На строке IxlAPP.Selection выходит данная ошибка
Код: vbnet
1.
2.
3.
4.
5.
  IxlAPP.Rows("3:3").Select
    IxlAPP.Selection.Find(What:="ßíâàðü ôàêò", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    adr = IxlAPP.ActiveCell.Address



Введи переменную

Код: vbnet
1.
Dim aRng as Range



И посмотри, что она будет содержать (и не вывалится ли ошибка):

Код: vbnet
1.
set aRng = IxlAPP.Selection.Find(What:="ßíâàðü ôàêò", After:=ActiveCell, LookIn:=xlFormulas , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
...
Рейтинг: 0 / 0
Type mismatch
    #39448291
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

IxlAPP - это экземпляр Excel с открытой в нем книгой.
ActiveCell - это активная ячейка в которой был найден текст через Find

Запускается по кнопке в книге Excel.

i45,
Данная ошибка это Type mismatch
...
Рейтинг: 0 / 0
Type mismatch
    #39448302
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил переменную ничего не изменилось, ошибка так же появляется.
...
Рейтинг: 0 / 0
Type mismatch
    #39448309
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дробите оператор на части:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim sel As Selection
Set sel = IxlAPP.Selection
Dim rng As Range
Set rng = ActiveCell
    sel.Find(What:="ßíâàðü ôàêò", After:=rng, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
...
Рейтинг: 0 / 0
Type mismatch
    #39448312
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Добавил ваш пример появляется ошибка Compile error: User-defined type not defined и выделяется синим as Selection
...
Рейтинг: 0 / 0
Type mismatch
    #39448323
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505Запускается по кнопке в книге Excelа зачем тогда ссылка на экземпляр Excel? Код выполняется в экземпляре, отличном от того, в котором ищете?
Попробуйте так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
dim rf as range
set rf = IxlAPP.Rows("3:3").Find(What:="ßíâàðü ôàêò", After:=IxlAPP.ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
if not rf is nothing then
    adr = rf.Address
else
    msgbox "Значение не найдено"
end if
...
Рейтинг: 0 / 0
Type mismatch
    #39448327
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, код выполняется в другом экземпляре.
...
Рейтинг: 0 / 0
Type mismatch
    #39448331
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505появляется ошибка Compile error: User-defined type not defined и выделяется синим as SelectionЯсен пень. Нет такого типа... а вот что Вы не посмотрели в справке, какой он должен быть - плохо. Появление ответа не означает, что надо перестать самому работать над проблемой.
Замените на Range. Или, если может быть выделено ещё что-то - то на Variant (конкретный тип посмотрите в Locals Window).
...
Рейтинг: 0 / 0
Type mismatch
    #39448334
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Менял на Range и на Object, ошибка не пропадает
...
Рейтинг: 0 / 0
Type mismatch
    #39448339
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Variant тоже не работает.
Может быть какая-нибудь библиотека не подключена?
...
Рейтинг: 0 / 0
Type mismatch
    #39448351
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал вот так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
  Dim sel As Range
        Set sel = IxlAPP.Selection
       Dim rng As Range
        Set rng = ActiveCell
                     
     IxlAPP.Rows("3:3").Select
        sel.Find(What:="Январь").Activate


выходит сообщение
object variable or with block variable not set
...
Рейтинг: 0 / 0
Type mismatch
    #39448352
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505Менял на Range и на Object, ошибка не пропадает
То есть по-прежнему
guest0505появляется ошибка Compile error: User-defined type not defined и выделяется синим as Selection
ну только выделяется As Range или As Variant???

Если так - начните с добавления в начало модуля Option Explicit и исправляйте все косяки. А также проконтролируйте отсутствие дублирования имён.
...
Рейтинг: 0 / 0
Type mismatch
    #39448359
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505выходит сообщение
object variable or with block variable not setну на какой строке-то? что вас все время пытать приходится?

guest0505Да, код выполняется в другом экземпляре.Если вы запускаете один эксель из другого экселя, то работать надо в одном контексте.
А то у вас IxlAPP.Selection в одном экселе, ActiveCell в другом экселе, как оно все вместе работать будет???
...
Рейтинг: 0 / 0
Type mismatch
    #39448360
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вообще для начала
раз http://www.sql.ru/faq/faq_topic.aspx?fid=4344
два http://www.sql.ru/faq/faq_topic.aspx?fid=2539

После прочтения и выполнения приведите нормальный тестовый код вместе с инстанцированием, который можно запустить и посмотреть, а не гадать по фотографии.
...
Рейтинг: 0 / 0
Type mismatch
    #39448364
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
object variable or with block variable not set выходит на строке
sel.Find(What:="Январь").Activate

IxlAPP.Selection и ActiveCell относятся к одному экземпляру Excel.

В IxlAPP я выбираю строку со всеми месяцами и ищу нужный мне. Ячейку с нужным месяцем делаю активной и узнаю ее адрес чтобы в последующем выделить диапазон начиная с искомой до последней заполненной
...
Рейтинг: 0 / 0
Type mismatch
    #39448366
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505
Код: vbnet
1.
2.
3.
        Set sel = IxlAPP.Selection
     IxlAPP.Rows("3:3").Select
        sel.Find(What:="Январь").Activate

тут скорее всего проблема в том, что для поиска используется диапазон ДО выбора строки 3. Поэтому Find ничего не находит и Activate выдает ошибку. Так что выпиливайте нафиг все Select и Activate, работайте с конкретно указанными диапазонами.
...
Рейтинг: 0 / 0
Type mismatch
    #39448367
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505В IxlAPP я выбираю строку со всеми месяцами и ищу нужный мне. Ячейку с нужным месяцем делаю активной и узнаю ее адрес чтобы в последующем выделить диапазон начиная с искомой до последней заполненнойЧитаем FAQ и выпиливаем все выделения нафиг, они не нужны. Да и в том, что нужен отдельный экземпляр экселя я тоже сильно сомневаюсь.
...
Рейтинг: 0 / 0
Type mismatch
    #39448372
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы не поверите но в последующем будет еще один экземпляр создаваться, может посоветуете какое-нибудь более лаконичное решение.
Задача состоит в том что из файла А (источник) сформировать новый документ по шаблону который находится в файле Б и выпустить готовый файл В.
Я решил сделать отдельный файл Excel, который позволяет выбирать файл источник, открывая его в невидимом для пользователя экземпляре. Шаблон из файла Б я загнал в свой файл при этом скрыв листы. Алгоритм работы я представляю следующим образом:
Пользователь открыв мой файл выбирает источник и нажимает кнопки формирования файла В. По этой кнопке открывается невидимый экземпляр с А, копируются нужные данные в мой файл на скрытые листы, экземпляр А после копирования закрывается. Создается новый экземпляр Excel и в него копируются скрытые листы из моего файла, данный файл и будет являться файлов В.
...
Рейтинг: 0 / 0
Type mismatch
    #39448385
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505По этой кнопке открывается невидимый экземпляр с А, копируются нужные данные в мой файл на скрытые листы, экземпляр А после копирования закрывается.
А просто получить данные запросом типа
Код: vbnet
1.
2.
3.
SELECT * 
FROM [Лист1$A1:B2] IN 'C:\folder\filename.xls'[Excel 12.0; HDR=No; IMEX=1]
WHERE 'условия отбора'


и вставить в нужное место - не? или вообще сделать в шаблоне обращение к данным внешнего файла и просто корректировать ссылки...
...
Рейтинг: 0 / 0
Type mismatch
    #39448391
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
    Dim sel As Range
    Set sel = IxlAPP.Selection
    IxlAPP.Rows("3:3").Find(What:="Январь").Activate


Вот так вот заработало, но от Activate так и не ушел.
Akina , ссылки не вариант. А вот насчет запроса не знаю даже.Во-первых файл источник каждый месяц будет разный. Во-вторых место положение файла на диске не закреплено, но как вариант наверное можно использовать часть кода где пользователь выбирает файл и путь сохраняется.
...
Рейтинг: 0 / 0
Type mismatch
    #39448395
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505но от Activate так и не ушел
т.е. попробовать тот код, что я привел так и не дошли руки? Активации там нет, проверка на наличие найденного - есть.
guest0505Да, код выполняется в другом экземпляре
guest0505IxlAPP.Selection и ActiveCell относятся к одному экземпляру Excel

Вы вообще сами-то знаете чего, где и как выполняете? То в другом, то в одном. Может надо для начала определиться где чего выполняете?
...
Рейтинг: 0 / 0
Type mismatch
    #39448399
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505Создается новый экземпляр Excel и в него копируются скрытые листы из моего файлаХочу огорчить - копирование листов между разными экземплярами не поддерживается.
Да и вообще затея с отдельным экземпляром в данном случае выглядит весьма бредово. Можно все делать в одном просто отключив обновление экрана. И проблем будет меньше и копировать можно будет все, что угодно между листами и книгами.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Type mismatch
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]