Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос разбивающий или объединяющий ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Макрос разбивающий или объединяющий ячейки
auto-teacher Дата: Пятница, 26.06.2020, 17:52 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Подскажите, please, почему происходит ошибка при отмене разбиения или при нажатии Esc?

Задумывалось так, чтобы при нахождении курсора в таблице, было предложено разбить ячейку, в которой курсор.
Если же было выделено несколько ячеек, то сначала должно быть предложение их слить, а при ответе "НЕТ" — опять же разбить.
Но если отказаться от разбиения, то выскакивает ошибка.

[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count <= 1 Then
Razbivka:
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
        If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
            Application.Run MacroName:="TableMergeCells"
        Else
            GoTo Razbivka
        End If
    End If
Vykhod:
End Sub
[/vba]
Какой должен быть правильный код?


auto-teacher
 
Ответить
СообщениеПодскажите, please, почему происходит ошибка при отмене разбиения или при нажатии Esc?

Задумывалось так, чтобы при нахождении курсора в таблице, было предложено разбить ячейку, в которой курсор.
Если же было выделено несколько ячеек, то сначала должно быть предложение их слить, а при ответе "НЕТ" — опять же разбить.
Но если отказаться от разбиения, то выскакивает ошибка.

[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count <= 1 Then
Razbivka:
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
        If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
            Application.Run MacroName:="TableMergeCells"
        Else
            GoTo Razbivka
        End If
    End If
Vykhod:
End Sub
[/vba]
Какой должен быть правильный код?

Автор - auto-teacher
Дата добавления - 26.06.2020 в 17:52
RAN Дата: Пятница, 26.06.2020, 23:13 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 26.06.2020, 23:19
 
Ответить
Сообщение.

Автор - RAN
Дата добавления - 26.06.2020 в 23:13
Hugo Дата: Пятница, 26.06.2020, 23:42 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Вроде как должен быть правильный код в TableSplitCells...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВроде как должен быть правильный код в TableSplitCells...

Автор - Hugo
Дата добавления - 26.06.2020 в 23:42
auto-teacher Дата: Суббота, 27.06.2020, 16:37 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Сформулирую по-другому.
Курсор в таблице. Если на ленте Word выполнить команду Макет/Объединение/Разделить ячейки (а это будет SplitCells), то появится окно "Разбиение ячеек". Если нажать Esc или Отмена, то команда прервется и все.
Если же выполнить: Разработчик/Код/Макросы/Макросы из: Команд Word/TableSplitCells (макроса SplitCells среди встроенных не обнаруживается), то также появится окно "Разбиение ячеек". Но если в этом случае нажать Отмена или Esc, то команда прервется с ошибкой, и откроется Visusl Basic для отладки.
Как исправить мой код? Что сделать?


auto-teacher
 
Ответить
СообщениеСформулирую по-другому.
Курсор в таблице. Если на ленте Word выполнить команду Макет/Объединение/Разделить ячейки (а это будет SplitCells), то появится окно "Разбиение ячеек". Если нажать Esc или Отмена, то команда прервется и все.
Если же выполнить: Разработчик/Код/Макросы/Макросы из: Команд Word/TableSplitCells (макроса SplitCells среди встроенных не обнаруживается), то также появится окно "Разбиение ячеек". Но если в этом случае нажать Отмена или Esc, то команда прервется с ошибкой, и откроется Visusl Basic для отладки.
Как исправить мой код? Что сделать?

Автор - auto-teacher
Дата добавления - 27.06.2020 в 16:37
RAN Дата: Суббота, 27.06.2020, 17:07 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Что сделать?

А вы в блокноте этот макрос выполнить не пробовали?
Или вы считаете, что блокнот может не знать о существовании макросов Excel, но Excel просто обязан знать встроенные команды Word'a?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Что сделать?

А вы в блокноте этот макрос выполнить не пробовали?
Или вы считаете, что блокнот может не знать о существовании макросов Excel, но Excel просто обязан знать встроенные команды Word'a?

Автор - RAN
Дата добавления - 27.06.2020 в 17:07
Pelena Дата: Суббота, 27.06.2020, 17:14 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Может так имелось в виду?
[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count <= 1 Then
Razbivka:
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
        s=MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК")
        If s = vbYes Then
            Application.Run MacroName:="TableMergeCells"
        ElseIf s=vbNo Then
            GoTo Razbivka
        End If
    End If
Vykhod:
End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожет так имелось в виду?
[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count <= 1 Then
Razbivka:
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
        s=MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК")
        If s = vbYes Then
            Application.Run MacroName:="TableMergeCells"
        ElseIf s=vbNo Then
            GoTo Razbivka
        End If
    End If
Vykhod:
End Sub
[/vba]

Автор - Pelena
Дата добавления - 27.06.2020 в 17:14
auto-teacher Дата: Суббота, 27.06.2020, 17:52 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, при отказе от команды TableMergeCells ничего страшного не происходит: просто идет переход на метку Razbivka.
Ошибка (см. фото) появляется при отказе от команды TableSplitCells.
Вот в этой ветке чего-нибудь бы исправить на случай отмены команды (Отмена) и на случай выхода из команды (Escape):
[vba]
Код
Razbivka:
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
[/vba]
Чем (каким другим кодом) можно заменить TableSplitCells, чтобы начался диалог "Разбиение ячеек"?
К сообщению приложен файл: 9604736.jpg (9.5 Kb)


auto-teacher
 
Ответить
СообщениеPelena, при отказе от команды TableMergeCells ничего страшного не происходит: просто идет переход на метку Razbivka.
Ошибка (см. фото) появляется при отказе от команды TableSplitCells.
Вот в этой ветке чего-нибудь бы исправить на случай отмены команды (Отмена) и на случай выхода из команды (Escape):
[vba]
Код
Razbivka:
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
[/vba]
Чем (каким другим кодом) можно заменить TableSplitCells, чтобы начался диалог "Разбиение ячеек"?

Автор - auto-teacher
Дата добавления - 27.06.2020 в 17:52
Pelena Дата: Суббота, 27.06.2020, 19:00 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
А так?
[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count > 1 Then
        If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
            Application.Run MacroName:="TableMergeCells"
            Application.Run MacroName:="TableSplitCells"
        ElseIf s=vbNo Then
            Application.Run MacroName:="TableSplitCells"
        End If
    End If
End Sub
[/vba]
Если опять не то, прикладывайте файл с примером и всеми макросами


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеА так?
[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count > 1 Then
        If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
            Application.Run MacroName:="TableMergeCells"
            Application.Run MacroName:="TableSplitCells"
        ElseIf s=vbNo Then
            Application.Run MacroName:="TableSplitCells"
        End If
    End If
End Sub
[/vba]
Если опять не то, прикладывайте файл с примером и всеми макросами

Автор - Pelena
Дата добавления - 27.06.2020 в 19:00
RAN Дата: Суббота, 27.06.2020, 20:16 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не заметил, что вопрос по голимому Woed'у.
почему происходит ошибка

Осмелюсь предположить, что выполнение этой команды из VBA происходит с использованием метода Split
[vba]
Код
Selection.Cells.Split NumRows:=1, NumColumns:=2, MergeBeforeSplit:=False
[/vba]
При отказе от выполнения команды аргументы не передаются, что и приводит к ошибке. При этом сам метод Split совершенно спокойно относится к отсутствию оных.
Лечится же это простым добавлением On Error Resume Next
[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count <= 1 Then
Razbivka:
        On Error Resume Next
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
        If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
            Application.Run MacroName:="TableMergeCells"
        Else
            GoTo Razbivka
        End If
    End If
Vykhod:
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе заметил, что вопрос по голимому Woed'у.
почему происходит ошибка

Осмелюсь предположить, что выполнение этой команды из VBA происходит с использованием метода Split
[vba]
Код
Selection.Cells.Split NumRows:=1, NumColumns:=2, MergeBeforeSplit:=False
[/vba]
При отказе от выполнения команды аргументы не передаются, что и приводит к ошибке. При этом сам метод Split совершенно спокойно относится к отсутствию оных.
Лечится же это простым добавлением On Error Resume Next
[vba]
Код
Sub ЯчейкиОбъединитьИлиРазбить()
    If Selection.Cells.Count <= 1 Then
Razbivka:
        On Error Resume Next
        Application.Run MacroName:="TableSplitCells"
        GoTo Vykhod
    Else
        If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
            Application.Run MacroName:="TableMergeCells"
        Else
            GoTo Razbivka
        End If
    End If
Vykhod:
End Sub
[/vba]

Автор - RAN
Дата добавления - 27.06.2020 в 20:16
auto-teacher Дата: Суббота, 27.06.2020, 21:46 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, вам спасибо, но это не та задумка, что мне надо. Подошел ответ от RAN.


auto-teacher
 
Ответить
СообщениеPelena, вам спасибо, но это не та задумка, что мне надо. Подошел ответ от RAN.

Автор - auto-teacher
Дата добавления - 27.06.2020 в 21:46
auto-teacher Дата: Суббота, 27.06.2020, 21:46 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN, премного благодарен: это как раз то, что я хотел. Спасибо огромное!


auto-teacher
 
Ответить
СообщениеRAN, премного благодарен: это как раз то, что я хотел. Спасибо огромное!

Автор - auto-teacher
Дата добавления - 27.06.2020 в 21:46
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!