Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 13:10   #11
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
...знать не последняя ли она...
Это уже другой вопрос
Вариант 1:
Код:
If Selection.Cells(1).Next Is Nothing Then MsgBox "Конец таблицы"
Вариант 2:
Код:
With Selection.Cells(1).Range
        If .End >= .Tables(1).Range.End - 1 Then MsgBox "Конец таблицы"
End With
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 28.03.2012, 20:06   #12
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

Спасибо!!!!
Ципихович Эндрю вне форума Ответить с цитированием
Старый 01.04.2012, 23:26   #13
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Вот файл с формой статистики выделенной ячейки.
Запускаете макрос NumCell.
При клике на правую кнопку мыши в выбранной ячейке таблицы в форме отобразится общий номер ячейки из общего количества ячеек и номера строки и столбца
Вложения
Тип файла: doc Doc37.doc (56.5 Кб, 29 просмотров)
Пименов Александр вне форума Ответить с цитированием
Старый 02.04.2012, 05:26   #14
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

спасибо, посмотрю
Ципихович Эндрю вне форума Ответить с цитированием
Старый 02.04.2012, 09:35   #15
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

посмотрел, всё время одно и то же
Изображения
Тип файла: jpg Безымянный таблицы Ворда.jpg (30.4 Кб, 130 просмотров)
Ципихович Эндрю вне форума Ответить с цитированием
Старый 02.04.2012, 10:07   #16
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Да все работает откройте Doc37.doc, запустите NumCell и щелкайте правым кликом по таблице
Пименов Александр вне форума Ответить с цитированием
Старый 02.04.2012, 11:55   #17
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

ну вот код:
Код:
Private WithEvents appWD As Word.Application
Public Tbl As Table
Public rngAll As Range

Private Sub appWD_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
    Cancel = True
    On Error Resume Next
    If Sel.Range.Cells.Count = 1 Then
        If Err.Number = 0 Then
            Set Me.Tbl = Sel.Tables(1)
            Set Me.rngAll = ActiveDocument.Range(Me.Tbl.Range.Start, Sel.Range.Cells(1).Range.End)
            With Me
                .lbl_NumCell.Visible = True
                .lbl_NumCell = .rngAll.Cells.Count
                .lblCountCells.Visible = True
                .lblCountCells = .Tbl.Range.Cells.Count
                .lblNumRow.Visible = True
                .lblNumRow = Sel.Range.Cells(1).RowIndex
                .lblNumCol.Visible = True
                .lblNumCol = Sel.Range.Cells(1).ColumnIndex
            End With
        Else
            MsgBox Err.Description, vbCritical
            With Me
                .lbl_NumCell.Visible = False
                .lblCountCells.Visible = False
                .lblNumRow.Visible = False
                .lblNumCol.Visible = False
            End With
        End If
    End If
End Sub

Private Sub UserForm_Initialize()
    Set appWD = ActiveDocument.Application
End Sub
если сделать:

Код:
Private Sub UserForm_Initialize()
    Set appWD = ActiveDocument.Application
MsgBox$ Sel.Range.Cells.Count
End Sub
получаю сообщение Объект reguried
Ципихович Эндрю вне форума Ответить с цитированием
Старый 07.04.2012, 09:18   #18
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Код:
Private Sub UserForm_Initialize()
    Set appWD = ActiveDocument.Application
MsgBox$ Sel.Range.Cells.Count
End Sub
Естественно что у Вас возникает ошибка в выделенной строке кода, т.к. в данном коде не объявлен объект Sel. Если написать код так, то MsgBox будет выводиться нормально, но при условии что выделение находится в таблице, в противном случее опять будет выводится ошибка.
Код:
Private Sub UserForm_Initialize()
Dim Sel As Selection
    Set appWD = ActiveDocument.Application
    Set Sel = Selection
MsgBox$ Sel.Range.Cells.Count
End Sub
Пименов Александр вне форума Ответить с цитированием
Старый 07.04.2012, 11:20   #19
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

не понимаю зачем нужна строка
Код:
 Set appWD = ActiveDocument.Application
формы, для понимания вопроса не нужны, делаю проще
Код:
'условие если выделенное, курсор находится в таблице, тогда ...
        If Selection.Information(wdWithInTable) = False Then
                MsgBox$ "Курсор поставьте в любом месте внутри таблицы"
    Else
Dim Sel As Selection
Set Sel = Selection
MsgBox$ Sel.Range.Cells.Count
End If
Всё время 1 получаю
??
Ципихович Эндрю вне форума Ответить с цитированием
Старый 07.04.2012, 11:43   #20
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Отвечаю по порядку.
Так как в коде мы используем События объекта Application в данном случае
Private Sub appWD_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean) мы объявили это в начале кода
Код:
Private WithEvents appWD As Word.Application
Нам при иницилизации формы необходимо объявить appWD как Application
Код:
Set appWD = ActiveDocument.Application
Теперь по строке кода
Код:
Sel.Range.Cells.Count
Она выдает результат, как количество выделенных ячеек и соответственно если у Вас курсор стоит в какой-либо из ячеек таблицы и не выделено ни одной ячейки результат будет всегда 1.
Для того чтобы получить реальный номер ячейки надо набрать код
Код:
i = ActiveDocument.Range(Sel.Tables(1).Range.Start, Sel.Range.End).Cells.Count
Данная строка считает количество ячеек в диапазоне от начала таблицы до конца выделения, что и является порядковым номером выделенной ячейки в таблице
Пименов Александр вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Номер символа, после которого находится курсор. Delphi -Yevgeniy- Помощь студентам 8 28.03.2011 10:53
Как програмно можно узнать где находится программа Vol666 Общие вопросы Delphi 11 30.07.2009 20:58
Как установить курсор на добавленную запись в таблице tarakan1983 БД в Delphi 4 05.04.2009 17:13
Как узнать номер строки на который поставлен курсор? Bravo Общие вопросы C/C++ 0 27.10.2008 00:29
Как узнать в Делфи координаты в котором находится курсор мыши? SVS Win Api 3 08.02.2007 13:34