powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает ActiveCell.Worksheet is ActiveSheet
10 сообщений из 10, страница 1 из 1
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516456
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Столкнулся с тем, что на листе макросов xlExcel4MacroSheet (может еще где):
Код: vbnet
1.
ActiveCell.Worksheet is ActiveSheet = False


То есть, таким макаром проверить, что ячейка находится на листе не выйдет. А она там есть :)

Как еще можно проверить, что Range находится на Worksheet?

Придумал только сравнивать полные Address. Intersect это уже перегиб, по-моему.
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516468
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если активное окно содержит НЕ рабочий лист, то ActiveCell даёт ошибку.
Если активное окно содержит рабочий лист, то ActiveCell без указания конкретного листа всегда указывает на активную ячейку активного листа.

Иными словами, показанная проверка не имеет смысла.
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516471
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaЕсли активное окно содержит НЕ рабочий лист, то ActiveCell даёт ошибку
Никакой ошибки мне не выдает, на листе макросов. Спокойно читаются и ячейка, и значение.

Вопрос не про активное, а про Range на Worksheet.
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516534
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождяНикакой ошибки мне не выдает
А вот встроенная документация полагает, что
Excel Developer Reference Application.ActiveCell Property
Returns a Range object that represents the active cell in the active window (the window on top) or in the specified window. If the window isn't displaying a worksheet, this property fails. Read-only.
Абсолютно тот же текст - и в Window.ActiveCell Property.

А если не выдаётся ошибка - то, скорее всего, Вы отключили обработчик ошибок каким-нибудь многозначительным OnError Resume Next...
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516573
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Akina]Сын вождя...А вот встроенная документация полагает, что...
При чем тут скрытые листы? Нажали кнопку [+] и создали лист макросов. Заметили, о не скрыт :) Смотрим его ActiveCell...

Да, зря я упомянул Active всякие. Повторюсь, вопрос о способах проверки нахождения Range на Worksheet. Ну или что Worksheet1 это Worksheet2. Считаем что Worksheet1 is Worksheet2 не работает. А оно и не работает, иногда.
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516592
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождявопрос о способах проверки нахождения Range на Worksheet. Ну или что Worksheet1 это Worksheet2. Считаем что Worksheet1 is Worksheet2 не работает. А оно и не работает, иногда.
Имена листов в пределах книги уникальны. Так что
Код: vbnet
1.
If Range1.Worksheet.Name = WorkSheet2.Name Then
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516598
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождяПри чем тут скрытые листы?Не при чем. Откуда Вы их вообще взяли? Нигде про них намека нет. А вот отличие типа Worksheet от MacroSheet очень даже есть. Поэтому сравнение Worksheet(даже если оно пляшет от ActiveCell) всегда будет давать False, т.к. типы-то разные.
Создайте не лист макросов, а обычный лист и проверьте там. Все будет работать как предполагалось. Именно на это Вам так упорно намекает Akina.
То, что ошибки нет - это может и косяк, но Microsoft упорно вещает, что использование листов макросов более не актуально и оставлено исключительно для совместимости(притом сразу после появления встроенного VBA).
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516623
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist...отличие типа Worksheet от MacroSheet...типы-то разные...
В дебаггере, я их всех вижу как Worksheet. И работает лист макроса как Worksheet. Как только я учел глюк из первого поста, все макросы заработали. Больше ни одной ошибки. Листа макросов, по всему моему коду, обрабатывается как Worksheet.

The_Prist...То, что ошибки нет - это может и косяк...
Так я и хочу учесть этот косяк :) Оптимальным способом. Главное - чтобы работало. А оно НЕ РАБОТАЛО!

Пока, мы только обсуждаем, почему же оно не работает :)
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516635
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождяВ дебаггере, я их всех вижу как WorksheetЯ с этим не спорю. Дебаггер порой и не такое может показать, однако это не мешает появляться ошибкам :)
Akina выше показал, как можно произвести сравнение без учета типа листов: по имени. Это вполне приемлемый вариант.
...
Рейтинг: 0 / 0
Не работает ActiveCell.Worksheet is ActiveSheet
    #39516870
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist...произвести сравнение без учета типа листов: по имени...
Имена уникальны только в пределах книги. Написал такое:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Function WORKSHEET_IsSome(ByRef WSH1 As Worksheet, ByRef WSH2 As Worksheet) As Boolean
    If WSH1.Type = xlWorksheet Then
        If WSH1 Is WSH2 Then WORKSHEET_IsSome = True
    ElseIf StrComp(WSH1.Cells(1).Address(External:=True), WSH2.Cells(1).Address(External:=True), vbBinaryCompare) = 0 Then
        WORKSHEET_IsSome = True
    End If
End Function
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает ActiveCell.Worksheet is ActiveSheet
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]