Страницы: 1
RSS
Как определить границы видимой части листа, исключая закрепленную область
 
Доброго времени суток всем.

Ответьте если кто разбирается в этой непростой проблеме.
Как макросом - определить границы видимой части листа, исключая закрепленную область - занеся параметры границ в ячейки G1,G2,J1,J2 ?

В ячейках G1,G2 - по идее должны отобразится номера строк (которые являются крайними границами видимой области - по вертикали).
В ячейках J1,J2 -  номера столбцов (которые являются крайними границами видимой области - по горизонтали).

Текущую границу обозначил желтым цветом в файле.
 
Цитата
SkyGreen написал: определить границы видимой части листа
Что имеете ввиду под выражением 'видимой части'? Непонятно, потому что в файле, на мониторе моего ноутбука диапазон, ограниченный желтым цветом, весь не вмещается. Или имеется ввиду диапазон видимый на каком-то конкретном мониторе? В таком случае для разных мониторов/разрешений/масштабов видимая область будет различной.
Вы лучше задайте вопрос по ЗАДАЧЕ, а не по СПОСОБУ, которым ее пытаетесь решить. Не думаю, что определение видимой части экрана, является самоцелью, для чего-то Вы же ее определяете :) . Возможно Ваша задача решатся совсем другими, более простыми способами.
По этому конкретному вопросу - почитайте про ActiveWindow.VisibleRange
Например
Изменено: Sanja - 28.01.2019 07:42:23
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
на мониторе моего ноутбука диапазон, ограниченный желтым цветом, весь не вмещается.
Ну так мониторы у всех разные - у вас видимая часть будет другой.

Насчет ActiveWindow.VisibleRange - получился вот такой макрос:
Код
Sub Макрос1()
Dim rng As Range
Set rng = ActiveWindow.VisibleRange
X = rng.Left
Y = rng.Top

[O1] = X
[O2] = Y

X2 = rng.Left + rng.Width
Y2 = rng.Top + rng.Height

[R1] = X2
[R2] = Y2

End Sub
Но этот макрос возвращает численные координаты, а мне нужны номера строк и названия столбцов - соответствующие этим координатам.
Как их получить ?
 
Ну если вас эти координаты устраивают, то временно поставить маленький обьект и потом, взяв его топлефтцелл удалить. Не проверял.
По вопросам из тем форума, личку не читаю.
 
БМВ, я спрашивал - как определить названия столбцов и номера строк.
Вы про какой объект говорите ?
Изменено: SkyGreen - 28.01.2019 08:39:24
 
Вариант: rng.Address вы получите диапазон в виде текста и тяните из него что вам нужно с помощью MID
 
Я про такой вариант
Код
Set con = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, X2, Y2, X2, Y2)
Debug.Print con.TopLeftCell.Offset(-1, -1).Address
con.Delete


Все зависит от того что вы хотите, как написал V может и просто rng.address устроит.
Изменено: БМВ - 28.01.2019 09:22:46
По вопросам из тем форума, личку не читаю.
 
БМВ, да это я понял.
Я думал просто более легкий способ есть.
 
Цитата
V написал:
rng.Address вы получите диапазон в виде текста и тяните из него что вам нужно с помощью MID
А как это сделать ?
Вот я получил адрес ячейки:

Adres1 = shp1.TopLeftCell.Address(0, 0)

Как из нее извлечь название столбца и номер строки ?
Там же количество символов может быть разным - как в обозначении строки, так и в обозначении столбца.
 
Цитата
SkyGreen написал:
Там же количество символов может быть разным
да это усложнит MID
тогда такой подход
Код
[G1] = Split(Replace(rng.Address, ":", ""), "$")(2)
[G2] = Split(rng.Address, "$")(4)
[J1] = Split(rng.Address, "$")(1)
[J2] = Split(rng.Address, "$")(3)
 
V,это что-то очень мудреное.

Вот смотрите я определяю таким образом:
Код
   MsgBox Range(Range("O1")).Row
   MsgBox Range(Range("O1")).Column
Но Range(Range("O1")).Column   выдает название столбца - цифрой.
Как сделать так, чтобы он выдавал название столбца - буквой ?
 
V, все я понял.
Ваше решение - удобнее.
Спасибо за совет.
 
Код
With ActiveWindow.VisibleRange
    Debug.Print .Offset(.Rows.Count, .Columns.Count).Resize(1, 1).Address
End With

ну а отделить столбец не сложно

Range("O1").address(,false) и все что до двоеточия взять
По вопросам из тем форума, личку не читаю.
 
БМВ, а обычной формулой как можно отделить столбец от адреса ?
 
В общем - во всем разобрался.
Всем помогающим - спасибо за помощь.
 
Цитата
SkyGreen написал:
а обычной формулой как можно отделить столбец от адреса ?
=ПОДСТАВИТЬ(АДРЕС(СТРОКА();СТОЛБЕЦ();4);СТОЛБЕЦ();"")
Страницы: 1
Наверх