Подскажите, please, почему происходит ошибка при отмене разбиения или при нажатии Esc?
Задумывалось так, чтобы при нахождении курсора в таблице, было предложено разбить ячейку, в которой курсор. Если же было выделено несколько ячеек, то сначала должно быть предложение их слить, а при ответе "НЕТ" — опять же разбить. Но если отказаться от разбиения, то выскакивает ошибка.
Sub ЯчейкиОбъединитьИлиРазбить() If Selection.Cells.Count <= 1Then
Razbivka:
Application.Run MacroName:="TableSplitCells" GoTo Vykhod Else If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
Application.Run MacroName:="TableMergeCells" Else GoTo Razbivka EndIf EndIf
Vykhod: EndSub
Какой должен быть правильный код?
Подскажите, please, почему происходит ошибка при отмене разбиения или при нажатии Esc?
Задумывалось так, чтобы при нахождении курсора в таблице, было предложено разбить ячейку, в которой курсор. Если же было выделено несколько ячеек, то сначала должно быть предложение их слить, а при ответе "НЕТ" — опять же разбить. Но если отказаться от разбиения, то выскакивает ошибка.
Sub ЯчейкиОбъединитьИлиРазбить() If Selection.Cells.Count <= 1Then
Razbivka:
Application.Run MacroName:="TableSplitCells" GoTo Vykhod Else If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
Application.Run MacroName:="TableMergeCells" Else GoTo Razbivka EndIf EndIf
Vykhod: EndSub
Сформулирую по-другому. Курсор в таблице. Если на ленте Word выполнить команду Макет/Объединение/Разделить ячейки (а это будет SplitCells), то появится окно "Разбиение ячеек". Если нажать Esc или Отмена, то команда прервется и все. Если же выполнить: Разработчик/Код/Макросы/Макросы из: Команд Word/TableSplitCells (макроса SplitCells среди встроенных не обнаруживается), то также появится окно "Разбиение ячеек". Но если в этом случае нажать Отмена или Esc, то команда прервется с ошибкой, и откроется Visusl Basic для отладки. Как исправить мой код? Что сделать?
Сформулирую по-другому. Курсор в таблице. Если на ленте Word выполнить команду Макет/Объединение/Разделить ячейки (а это будет SplitCells), то появится окно "Разбиение ячеек". Если нажать Esc или Отмена, то команда прервется и все. Если же выполнить: Разработчик/Код/Макросы/Макросы из: Команд Word/TableSplitCells (макроса SplitCells среди встроенных не обнаруживается), то также появится окно "Разбиение ячеек". Но если в этом случае нажать Отмена или Esc, то команда прервется с ошибкой, и откроется Visusl Basic для отладки. Как исправить мой код? Что сделать?auto-teacher
А вы в блокноте этот макрос выполнить не пробовали? Или вы считаете, что блокнот может не знать о существовании макросов Excel, но Excel просто обязан знать встроенные команды Word'a?
А вы в блокноте этот макрос выполнить не пробовали? Или вы считаете, что блокнот может не знать о существовании макросов Excel, но Excel просто обязан знать встроенные команды Word'a?RAN
Pelena, при отказе от команды TableMergeCells ничего страшного не происходит: просто идет переход на метку Razbivka. Ошибка (см. фото) появляется при отказе от команды TableSplitCells. Вот в этой ветке чего-нибудь бы исправить на случай отмены команды (Отмена) и на случай выхода из команды (Escape):
Чем (каким другим кодом) можно заменить TableSplitCells, чтобы начался диалог "Разбиение ячеек"?
Pelena, при отказе от команды TableMergeCells ничего страшного не происходит: просто идет переход на метку Razbivka. Ошибка (см. фото) появляется при отказе от команды TableSplitCells. Вот в этой ветке чего-нибудь бы исправить на случай отмены команды (Отмена) и на случай выхода из команды (Escape):
При отказе от выполнения команды аргументы не передаются, что и приводит к ошибке. При этом сам метод Split совершенно спокойно относится к отсутствию оных. Лечится же это простым добавлением On Error Resume Next
Sub ЯчейкиОбъединитьИлиРазбить() If Selection.Cells.Count <= 1Then
Razbivka: OnErrorResumeNext
Application.Run MacroName:="TableSplitCells" GoTo Vykhod Else If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
Application.Run MacroName:="TableMergeCells" Else GoTo Razbivka EndIf EndIf
Vykhod: EndSub
При отказе от выполнения команды аргументы не передаются, что и приводит к ошибке. При этом сам метод Split совершенно спокойно относится к отсутствию оных. Лечится же это простым добавлением On Error Resume Next
Sub ЯчейкиОбъединитьИлиРазбить() If Selection.Cells.Count <= 1Then
Razbivka: OnErrorResumeNext
Application.Run MacroName:="TableSplitCells" GoTo Vykhod Else If MsgBox("Слить выделенные ячейки в одну?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "СЛИЯНИЕ ИЛИ РАЗБИВКА КЛЕТОК") = vbYes Then
Application.Run MacroName:="TableMergeCells" Else GoTo Razbivka EndIf EndIf
Vykhod: EndSub