Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
Word

Не могу объединить пустые ячейки таблицы

08.03.2018, 05:33. Показов 2336. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача в таблице Word объединить пустые ячейки
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
q10 = 0
    nb = 0
    Do While q10 < tb9.Rows.Count 'объединение в 4-й колонке
    q10 = q10 + 1
    sss = tb9.Cell(q10, 4).Range.Text 'чтение ячейки
    If Len(sss) = 0 Then  'определение начала участка пустых ячеек
    u = q10: nb = 1
    End If
    If Len(sss) <> 0 And nb = 1 Then 'определение конца участка пустых ячеек
    u2 = q10 - 1
    tb9.Cell(u, 4).Merge MergeTo:=tb9.Cell(u2, 4) 'объединение участка пустых ячеек
    nb = 0: u = 0: u2 = 0
    End If
    Loop
не работает условие определения простой ячейки, пробовал разное....
Прошу помощи!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2018, 05:33
Ответы с готовыми решениями:

Разбить ячейки и удалить образовавшиеся пустые ячейки
И снова я. В приложенном файле имеем в столбцах &quot;Дата&quot; и &quot;Номер&quot; содержимое. Нужно перебрать 3...

В одном столбце таблицы БД заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки
Добрый день. Есть таблица .dbf и надо в одном столбце заменить все пустые ячейки на содержимое...

Вставить определенный текст в пустые ячейки таблицы word, поправить макрос
Добрый день, ребята выручайте! Часа 3 пытаюсь найти не получается. Задача - есть таблица word,...

12
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
08.03.2018, 06:26
sss каким типом объяленно ?
0
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
08.03.2018, 06:31  [ТС]
как объект
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
08.03.2018, 06:33
я к чему спросил
Vatiant и string возвратит 0
а числовые типы могут совсем другое показать
Visual Basic
1
2
3
4
Sub qwerty()
    Dim sss As Double
    MsgBox "Длина sss = " & Len(sss)
End Sub
Изображения
 
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
08.03.2018, 07:01
Цитата Сообщение от all_angarsk Посмотреть сообщение
как объект
Если как объект и если этот объект не пуст, значит будет длину показывать
длину чего, я не знаю тебе лучше знать.

Возможно cell - зарезервированна под числовой тип

вот еще...
Длина=24
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Type qwe
    qwe1 As String
    qwe2 As Long
    qwe3 As Double
    qwe4 As Currency
End Type
 
Sub qwerty()
    Dim sss As qwe
    MsgBox "Длина sss = " & Len(sss)
End Sub


Попробуй уловие поменять. не использовать Len (обычно это длина байт в указанной переменной)
а например isempty
для объектов If sss is nothing then ...
0
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
08.03.2018, 08:19  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim lsss As Integer
    Dim ss2 As String
    q10 = 0
    nb = 0
    Do While q10 < tb9.Rows.Count 'объединение в 4-й колонке
    q10 = q10 + 1
    ss2 = tb9.Cell(q10, 4).Range.Text
    lsss = Len(ss2)
    If lsss = 0 Then
    u = q10: nb = 1
    End If
    If Len(ss2) <> 0 And nb = 1 Then
    u2 = q10 - 1
    tb9.Cell(u, 4).Merge MergeTo:=tb9.Cell(u2, 4)
    nb = 0: u = 0: u2 = 0
    End If
    Loop
в совершенно пустой ячейке word выдает длину 2, как с этим бороться?
Миниатюры
Не могу объединить пустые ячейки таблицы  
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
08.03.2018, 08:54
Если ss2 объявлена текстовым типом, а она именно так она и объявленна...
то нужно смотреть какие 2 байта попадают в эту переменную после:
ss2 = tb9.Cell(q10, 4).Range.Text

найдите способ это узнать, что попадает в присвоении, если в ss2 длина = 2
значит там 2 байта чего-то, хотите чтобы я разбирался что там ?

Добавлено через 10 минут
Подобные ошибки возникают у "специалистов" которые считают
что переменные вообще не надо объявлять, их логика проста
пока это работает значит пускай работает пока не возникнет таких
геморов, без документа в котором это происходит трудно делать выводы

по кусочку текста из кода я могу только изучить объявленные типы
и как сама сетка вставленна, тоже надо смотреть
0
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
08.03.2018, 09:10  [ТС]
Я в шоке. Как пастая ячейка может выдавать какой-то значок в виде точки.
Вы направили мысль, что переменные определить строго, но это не дало результата.
Я думал, что не верный код. Есть наработанный вариант у профессионалов.
Я пробовал даже функцию IsEmpty тоже нет результата.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
08.03.2018, 09:17
Цитата Сообщение от all_angarsk Посмотреть сообщение
ячейка может выдавать какой-то значок в виде точки.
Там не точка, а какие-то служебные знаки
если ты говоришт что ячейка пустая, значит там форматирование попадает в присвоение
а отображается в виде точки. это может быть юникодный символ (тоже служебный) он тоже может состоять из двух байт

Добавлено через 1 минуту
Тут ничего шокового нет, примени свой код к обычной таблице без форматирования
и посмотри чо будет
1
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
08.03.2018, 09:38  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim lsss As Integer
    Dim ss2 As String
    q10 = 0
    nb = 0
    Do While q10 < tb9.Rows.Count 
    q10 = q10 + 1
    ss2 = tb9.Cell(q10, 4).Range.Text
    lsss = Len(ss2)
    If lsss = 2 And nb = 0 Then
    u = q10 + 1: nb = 1
    End If
    If lsss > 2 And nb = 1 Then
    u2 = q10 '- 1
    tb9.Cell(u, 4).Merge MergeTo:=tb9.Cell(u2, 4)
    nb = 0: u = 0: u2 = 0
    End If
    Loop
переделал и учитываю что из пустой длина 2, а из заполненной больше и двинулась работа. Осталось отрегулировать диапазон объединения останавливается в двух местах
0
90 / 84 / 42
Регистрация: 27.09.2015
Сообщений: 316
08.03.2018, 11:41
Цитата Сообщение от all_angarsk Посмотреть сообщение
учитываю что из пустой длина 2
ясно
Цитата Сообщение от all_angarsk Посмотреть сообщение
останавливается в двух местах
как вариант - там где, теперь, минус два
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
10.03.2018, 15:48
Лучший ответ Сообщение было отмечено all_angarsk как решение

Решение

all_angarsk, может так - для 1-й таблицы текущего документа?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub bb()
Dim c As Cell, c1 As Cell, cp As Cell
  For Each c In ActiveDocument.Tables(1).Columns(4).Cells
    If Len(c.Range.Text) = 2 Then 'ячейка пустая
      If c1 Is Nothing Then Set c1 = c
    Else
      If Not c1 Is Nothing Then If Not c1 Is cp Then c1.Merge cp
      Set c1 = Nothing
    End If
    Set cp = c
  Next
  If Not c1 Is Nothing Then If Not c1 Is cp Then c1.Merge cp
End Sub
0
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
11.03.2018, 06:00  [ТС]
Огромное спасибо я настроил под таблицу 9 и все пошло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2018, 06:00
Помогаю со студенческими работами здесь

Как объединить ячейки таблицы в Word, обращаясь к ним по свойству Cell (n, m)
Т.е. есть ячейки в таблице ActiveDocument.Tables(1).Cell(3,7) и ActiveDocument.Tables(1).Cell(4,7)...

Пустые ячейки и условие If Not IsEmpty(.Cells(i, 1)) Then
не могу понять в чем дело в программе стоит условие If Not IsEmpty(.Cells(i, 1)) Then в первом...

Если все ячейки диапазона пустые, выдать сообщение
Всем привет! Подскажите как осуществить: у нас есть диапазон ячеек. если в нем все ячейки пустые=...

Нужно удалить пустые ячейки из выбронного столбца
Пожалуйста, помогите. Я только учись писать макросы. Вот написала один, а он некоректно работает....

Чтобы Excel при вставке не удалял пустые ячейки
копирую таблицу из интернета в ней есть иногда полностью пустые строчки Excel при вставке удаляет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru