Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с таблицами в VBA  (Прочитано 7837 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Devigerro
Гость
« : 24-07-2007 20:35 » 

Народ, у меня такая проблема: не могу обеденить две ячейки в вордовской таблице.

вот код:

Dim MyRange As Range
Dim MyTable As Table
Set MyRange = ActiveDocument.Range(0, 0)
Set MyTable = MyRange.Tables.Add(MyRange, 4, 4)
MyTable.Cell(1,1).Merge(MyTable.Cell(1,2))

Выдает следующее при запуске макроса: "Type mismatch"

Объясните, что за прикол и как объеденить ячейки

Сорри за тупой вопрос Скромно так...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 25-07-2007 10:14 » 

как проверить/написать макрос говорилось неоднократно

Type mismatch означает что в нет такого типа

Цитата
Optional. Data type of the variable; may be Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (not currently supported), Date, String (for variable-length strings), String * length (for fixed-length strings), Object, Variant, a user-defined type, or an object type. Use a separate As type clause for each variable you declare.


поэтому определение двух массивов не верно.
просто попробуй объяви их не указывая тип.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Devigerro
Гость
« Ответ #2 : 27-07-2007 01:11 » 

Спасибо!!! Отлично
Я прописал следующее и работает:

Dim my As Variant
Set my = MyTable.Cell(1, 2)
MyTable.Cell(1, 1).Merge (my)

Гребаный Басик! Главное merge() принимает тип Cell, а тут ему подавай Variant С ума сойти...
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 30-07-2007 05:22 » 

Спасибо!!! Отлично
Я прописал следующее и работает:

Dim my As Variant
Set my = MyTable.Cell(1, 2)
MyTable.Cell(1, 1).Merge (my)

Гребаный Басик! Главное merge() принимает тип Cell, а тут ему подавай Variant С ума сойти...

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

Код:
    Dim MyRange As Range
    Dim MyTable As Table
    Set MyRange = ActiveDocument.Range(0, 0)
    Set MyTable = MyRange.Tables.Add(MyRange, 4, 4)
    MyTable.Cell(1, 1).Merge MyTable.Cell(1, 2)

т.е если функция не возвращает никаких значений или вы их не принимаете, то параметры в ф-цию передаются без скобок
Записан

I Have Nine Lives You Have One Only
THINK!
Devigerro
Гость
« Ответ #4 : 01-08-2007 00:07 » 

HandKot, спасибо что объяснил. Я в Басике ничего не знаю, но надо кое че сделать, что на Си чевойто тормозит, а WordApplication везде одинаков. Спасибо по мере надобности буду обращаться  Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines