Страницы: 1 2 След.
RSS
Вывод результата всегда по центру экрана, существует ли способ, чтобы ВСЕГДА результат был в одном и том же месте на экране монитора?
 
Здравстуйте, потому-что вывод последней строки с её активацией при определённом размере таблицы не всегда работает, таблицы могут быть произвольной размерности, и если таблица имеет вот такой размер, примерно 70 строк, то активация последней ячейки не помогает- результаты не прокручиваются:
Изменено: ttolu - 14.10.2019 11:04:44
 
я использую такой код:
Код
 LastRow = Cells(Rows.Count, "G").End(xlUp).Row  ' последняя строка таблици  


 LastRow = Cells(Rows.Count, "G").End(xlUp).Select
Изменено: ttolu - 14.10.2019 11:08:12
 
Код
ActiveWindow.ScrollRow = application.max(1, selection.row-15)
Изменено: МатросНаЗебре - 14.10.2019 11:10:53
 
МатросНаЗебре, если в таблице 190 строк, то выводит сообщение:"нельзя установить свойство ScrollRow класса Window"
https://www.dropbox.com/s/taltec1ks6ha2ue/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.PNG?dl=0
Изменено: ttolu - 14.10.2019 11:29:39
 
Код
If TypeName(Selection) = "Range" Then ActiveWindow.ScrollRow = Application.Max(0, Selection.Row - 15)
Полагаю, был выделен какой-то другой объект не-range.
 
Цитата
МатросНаЗебре написал:
был выделен какой-то другой объект не-range
я только строки добавил строки в таблицу, и после этого стало выдавать сообщение, в данном случае ничего не изменилось, см ссылку:
https://www.dropbox.com/s/gt0j4lofccxkg0m/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.PNG?dl=0
 
Код
Application.Max(1,
А проверьте, поставлена ли 1 в Max.
 
я поставил еденицу,- теперь не крутит ничего.. таблица как была в начале, так и остаётся...
и вообще: неужели нет какого-то универсального кода, который бы возвращал конец таблицы всегда на середину экрана: не важно где конец находится: вверху или внизу??
Изменено: ttolu - 14.10.2019 12:21:41
 
Код
    With ActiveSheet.ListObjects("Таблица1").Range
        Dim y As Long
        y = .Row + .Rows.Count
        ActiveWindow.ScrollRow = Application.Max(1, y - 15)
    End With
Изменено: МатросНаЗебре - 14.10.2019 13:07:07
 
Код
    With ActiveSheet.ListObjects("Таблица1").Range
        Dim y As Long
        y = .Row + .Rows.Count
        ActiveWindow.ScrollRow = Application.Max(1, y - ActiveWindow.VisibleRange.Rows.Count \ 2)
    End With
Так универсальнее.
 
МатросНаЗебре, такой вопрос: Таблица1 что означает??
я пока тоже не могу запустить с такой фразой, и куда её прикрутить не ведаю.
Изменено: ttolu - 14.10.2019 12:57:45
 
Подозреваю, что "умные таблицы" пока Вам неизвестны.
Зайдём с другой стороны. Ниже таблицы, про которую Вы говорите, данных нет?
 
Код
    y = Cells(Rows.Count, 1).End(xlUp).Row
    ActiveWindow.ScrollRow = Application.Max(1, y - ActiveWindow.VisibleRange.Rows.Count \ 2)
1 в первой строке кода - это номер столбца, в котором находится упомянутая таблица.
 
Цитата
МатросНаЗебре написал:
Подозреваю, что "умные таблицы" пока Вам неизвестны.
я вообще не использую эту тему по причине ненадобности,- нам поставщики присылают инвойс , и  погнали.
Цитата
МатросНаЗебре написал:
Ниже таблицы, про которую Вы говорите, данных нет?
есть девять и одиннадцать строчек ниже выводятся суммы(если все совпадает- они будут подсвечены), вот их мне и нужно видеть, чтобы не крутить колёсиком мыши по километру, пример в файле.
 
Код
y = Cells(Rows.Count, 1).End(xlUp).Row    
ActiveWindow.ScrollRow = Application.Max(1, y - ActiveWindow.VisibleRange.Rows.Count \ 2)
Сообщение могло потеряться.
 
А находить и затем активировать ячейку с текстом Кол-во мест: не вариант?
 
-а, не, там есть случай, если примерно 80 строк таблица, то она не двигается никуда,- из-за етого весь сыр -бор

Цитата
МатросНаЗебре написал: Сообщение могло потеряться.
да, теперь всё работает! спасибо!
 
МатросНаЗебре,
-теория: а если таблица смещена будет левее, скажем активный столбец будет CL?  в данном случае Ваш код не работает, а можно сделать чтобы и в этом случае работало??
 
Надо поменять номер столбца в первой строке.
Или, если Вам удобнее указывать ячейку, то код примет вид:
Код
    y = Cells(Rows.Count, Range("CL1").Column).End(xlUp).Row
    ActiveWindow.ScrollRow = Application.Max(1, y - ActiveWindow.VisibleRange.Rows.Count \ 2)

Цитата
ttolu написал:
если таблица смещена будет левее
Левее? В смысле, если смотреть не на монитор, а от монитора? :)
 
А так можно подвинуть и по горизонтали.
Код
    y = Cells(Rows.Count, Range("CL1").Column).End(xlUp).Row
    ActiveWindow.ScrollRow = Application.Max(1, y - ActiveWindow.VisibleRange.Rows.Count \ 2)
    ActiveWindow.ScrollColumn = Range("CL1").Column
 
Цитата
МатросНаЗебре написал:
смотреть не на монитор, а от монитора?
не, смотрим чётко на монитор): если активным будет столбец, например СС, то таблица от него буде находиться левее,  верно? понимаете?
 
Цитата
ttolu написал:
не, там есть случай, если примерно 80 строк таблица, то она не двигается никуда,
Разве строка с найденной ячейкой не будет в зоне видимости?
 
Цитата
МатросНаЗебре написал:
Надо поменять номер столбца в первой строке.
понял... это единственный вариант?? а если универсально как-то реализовать и за отдельную плату, чтобы в код не лазить, не писать номер столбца?? меня уже заинтриговала эта тема.
 
Ага, понятно. Так не будет зависеть от выделения столбца.
Код
y = Cells(Rows.Count, Range("CL1").Column).End(xlUp).Row    
ActiveWindow.ScrollRow = Application.Max(1, y - ActiveWindow.VisibleRange.Rows.Count \ 2)
    ActiveWindow.ScrollColumn = Range("CL1").Column
 
Цитата
ttolu написал:
а если универсально как-то реализовать
Имя ячейке присвоить умеете?
 
Цитата
Юрий М написал:
Разве строка с найденной ячейкой не будет в зоне видимости?
Да Вы правы, я ещё раз проверил, все получается, причём макрос уже есть такой по поиску мест, прям рядом в коде:
Set rCell = Cells.Find("Кол-во мест:")
-чёт сам не смог догодаться, походу Ваш вариант проще получается. И там по-барабану относительно чего находится активная часть экрана- всё чётко возвращает на место.
Изменено: ttolu - 14.10.2019 14:17:31
 
Код
    y = Cells(Rows.Count, Range("опора").Column).End(xlUp).Row
    ActiveWindow.ScrollRow = Application.Max(1, y - ActiveWindow.VisibleRange.Rows.Count \ 2)
    ActiveWindow.ScrollColumn = Range("опора").Column
Вариант, через именованный диапазон.
 
Цитата
МатросНаЗебре написал:
Ага, понятно. Так не будет зависеть от выделения столбца.
не, не так: вместо CL1 может быть любое место правее или левее самой таблицы, сейчас если по столбцу А, работать, то всё чётко, а вот если без привязки ВООБЩЕ???
 
Цитата
ttolu написал:
а вот если без привязки ВООБЩЕ???
Вариант с именованным диапазоном норм? Сообщение #27.
 
я понял- не прокатит(((  так не устраивает, хотя, Вы помогли о чём я просил чётко, спасибо, я везде уже Ваш код прописал.
-мне тогда макросом прописывать это диапазон нужно.. а смысл для меня ничтожный получается....
Изменено: ttolu - 14.10.2019 13:57:49
Страницы: 1 2 След.
Наверх