Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает ActiveCell.Worksheet is ActiveSheet / 10 сообщений из 10, страница 1 из 1
06.09.2017, 13:56
    #39516456
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает ActiveCell.Worksheet is ActiveSheet
Здравствуйте.

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


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

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

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

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

Вопрос не про активное, а про Range на Worksheet.
...
Рейтинг: 0 / 0
06.09.2017, 15:09
    #39516534
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает ActiveCell.Worksheet is ActiveSheet
Сын вождяНикакой ошибки мне не выдает
А вот встроенная документация полагает, что
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
06.09.2017, 15:49
    #39516573
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает ActiveCell.Worksheet is ActiveSheet
[quot Akina]Сын вождя...А вот встроенная документация полагает, что...
При чем тут скрытые листы? Нажали кнопку [+] и создали лист макросов. Заметили, о не скрыт :) Смотрим его ActiveCell...

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

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

Пока, мы только обсуждаем, почему же оно не работает :)
...
Рейтинг: 0 / 0
06.09.2017, 17:04
    #39516635
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает ActiveCell.Worksheet is ActiveSheet
Сын вождяВ дебаггере, я их всех вижу как WorksheetЯ с этим не спорю. Дебаггер порой и не такое может показать, однако это не мешает появляться ошибкам :)
Akina выше показал, как можно произвести сравнение без учета типа листов: по имени. Это вполне приемлемый вариант.
...
Рейтинг: 0 / 0
07.09.2017, 05:11
    #39516870
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает ActiveCell.Worksheet is ActiveSheet
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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает ActiveCell.Worksheet is ActiveSheet / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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