Версия для слабовидящих
Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

 

= Мир MS Excel/Скрипт скроллинга - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин, DrMini  
Скрипт скроллинга
Dimansh Дата: Суббота, 07.10.2017, 19:27 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Google Docs
в соседней теме есть скрипт: http://www.excelworld.ru/forum/23-23613-186790-16-1463496093 для скроллинга к конкретной ячейке.

у меня вопрос: А можно как-то переписать скрипт, чтобы скроллинг шел к самой нижней заполненной ячейке (или первой сверху незаполненной) ???
 
Ответить
Сообщениев соседней теме есть скрипт: http://www.excelworld.ru/forum/23-23613-186790-16-1463496093 для скроллинга к конкретной ячейке.

у меня вопрос: А можно как-то переписать скрипт, чтобы скроллинг шел к самой нижней заполненной ячейке (или первой сверху незаполненной) ???

Автор - Dimansh
Дата добавления - 07.10.2017 в 19:27
Gustav Дата: Воскресенье, 08.10.2017, 10:33 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2843
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Цель какая такого скроллинга? Быстро переместиться в конец данных и начать вводить новую строку? Если да, то чем не устраивает Ctrl-стрелка вниз? Если нет, то где по замыслу должна после скроллинга появляться последняя/новая строка - вверху или внизу экрана?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЦель какая такого скроллинга? Быстро переместиться в конец данных и начать вводить новую строку? Если да, то чем не устраивает Ctrl-стрелка вниз? Если нет, то где по замыслу должна после скроллинга появляться последняя/новая строка - вверху или внизу экрана?

Автор - Gustav
Дата добавления - 08.10.2017 в 10:33
Gustav Дата: Воскресенье, 08.10.2017, 21:44 | Сообщение № 3
Группа: Админы
Ранг: Участник клуба
Сообщений: 2843
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Цитата Gustav, 08.10.2017 в 10:33, в сообщении № 2 ( писал(а)):
где по замыслу должна после скроллинга появляться последняя/новая строка - вверху или внизу экрана?

А впрочем, не дожидаясь ответа, держите оба варианта скрипта - и внизу, и вверху:

function scroll2top() {
// экран прокручивается так, что последняя занятая строка данных
// становится первой (ВВЕРХУ) видимой строкой на экране;
// курсор становится в колонку A на следующей (второй, пустой) строке
var sheet = SpreadsheetApp.getActiveSheet();
    
sheet.setActiveSelection(sheet.getRange(sheet.getMaxRows(), 1));
sheet.setActiveSelection(sheet.getRange(sheet.getLastRow(), 1));
sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, 1));
}

function scroll2bottom() {
// экран прокручивается так, что последняя занятая строка данных
// становится предпоследней (ВНИЗУ) видимой строкой на экране;
// курсор становится в колонку A на следующей (последней, пустой) строке
var sheet = SpreadsheetApp.getActiveSheet();

sheet.setActiveSelection(sheet.getRange(1, 1));
sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, 1));
}


Разумеется, указанное в комментариях поведение скролла будет выполняться при количестве заполненных строк в таблице более, чем на один экран по высоте. И при условии, что пустых строк внизу таблицы имеется ("зарезервировано") также в достаточном количестве (более одного экрана). Если данных будет меньше полного экрана, то поведение курсора по понятной причине будет несколько отличаться от описанного.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Цитата Gustav, 08.10.2017 в 10:33, в сообщении № 2 ( писал(а)):
где по замыслу должна после скроллинга появляться последняя/новая строка - вверху или внизу экрана?

А впрочем, не дожидаясь ответа, держите оба варианта скрипта - и внизу, и вверху:
[vba]
function scroll2top() {  // экран прокручивается так, что последняя занятая строка данных  // становится первой (ВВЕРХУ) видимой строкой на экране;  // курсор становится в колонку A на следующей (второй, пустой) строке  var sheet = SpreadsheetApp.getActiveSheet();      sheet.setActiveSelection(sheet.getRange(sheet.getMaxRows(), 1));  sheet.setActiveSelection(sheet.getRange(sheet.getLastRow(), 1));  sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, 1));}  function scroll2bottom() {  // экран прокручивается так, что последняя занятая строка данных  // становится предпоследней (ВНИЗУ) видимой строкой на экране;  // курсор становится в колонку A на следующей (последней, пустой) строке  var sheet = SpreadsheetApp.getActiveSheet();    sheet.setActiveSelection(sheet.getRange(1, 1));  sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, 1));}
[/vba]
Разумеется, указанное в комментариях поведение скролла будет выполняться при количестве заполненных строк в таблице более, чем на один экран по высоте. И при условии, что пустых строк внизу таблицы имеется ("зарезервировано") также в достаточном количестве (более одного экрана). Если данных будет меньше полного экрана, то поведение курсора по понятной причине будет несколько отличаться от описанного.

Автор - Gustav
Дата добавления - 08.10.2017 в 21:44
Dimansh Дата: Воскресенье, 08.10.2017, 22:44 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Google Docs
Цитата Gustav, 08.10.2017 в 10:33, в сообщении № 2 ( писал(а)):
Цель какая такого скроллинга?

много строк и есть необходимость скакать по таблице - куда-то, а потом дописывать снизу.

Цитата Gustav, 08.10.2017 в 10:33, в сообщении № 2 ( писал(а)):
чем не устраивает Ctrl-стрелка вниз

Первая колонка содержит лишь дату и между датами есть по несколько пустых ячеек (первых в каждой строке) и надо нажать раз 20-30 чтобы в конце месяца попасть вниз. проще уж колесиком

Цитата Gustav, 08.10.2017 в 21:44, в сообщении № 3 ( писал(а)):
держите оба варианта скрипта - и внизу, и вверху

не совсем понятно, как запускать его. при добавлении скрипта - в подменю СКРИПТЫ - его нет.
 
Ответить
Сообщение
Цитата Gustav, 08.10.2017 в 10:33, в сообщении № 2 ( писал(а)):
Цель какая такого скроллинга?

много строк и есть необходимость скакать по таблице - куда-то, а потом дописывать снизу.

Цитата Gustav, 08.10.2017 в 10:33, в сообщении № 2 ( писал(а)):
чем не устраивает Ctrl-стрелка вниз

Первая колонка содержит лишь дату и между датами есть по несколько пустых ячеек (первых в каждой строке) и надо нажать раз 20-30 чтобы в конце месяца попасть вниз. проще уж колесиком

Цитата Gustav, 08.10.2017 в 21:44, в сообщении № 3 ( писал(а)):
держите оба варианта скрипта - и внизу, и вверху

не совсем понятно, как запускать его. при добавлении скрипта - в подменю СКРИПТЫ - его нет.

Автор - Dimansh
Дата добавления - 08.10.2017 в 22:44
Gustav Дата: Воскресенье, 08.10.2017, 23:18 | Сообщение № 5
Группа: Админы
Ранг: Участник клуба
Сообщений: 2843
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Цитата Dimansh, 08.10.2017 в 22:44, в сообщении № 4 ( писал(а)):

не совсем понятно, как запускать его. при добавлении скрипта - в подменю СКРИПТЫ - его нет.

Ну, ёлка-палка! Заметьте, я работаю вслепую - не вижу ни Вашей таблицы-примера, ни Вашего пункта меню СКРИПТЫ. А также не знаю о том, что Вы не умеете добавлять функцию в меню, хотя могли бы - элементарно по аналогии с тем, как это сделано в той другой теме по Вашей же ссылке выше. Примерно вот так надо:

function onOpen() {

var ui = SpreadsheetApp.getUi();
ui.createMenu('USER MENU')
    .addItem("Скроллинг ВВЕРХ", 'scroll2top')
    .addItem("Скроллинг ВНИЗ", 'scroll2bottom')
    .addToUi();
}



МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Цитата Dimansh, 08.10.2017 в 22:44, в сообщении № 4 ( писал(а)):

не совсем понятно, как запускать его. при добавлении скрипта - в подменю СКРИПТЫ - его нет.

Ну, ёлка-палка! Заметьте, я работаю вслепую - не вижу ни Вашей таблицы-примера, ни Вашего пункта меню СКРИПТЫ. А также не знаю о том, что Вы не умеете добавлять функцию в меню, хотя могли бы - элементарно по аналогии с тем, как это сделано в той другой теме по Вашей же ссылке выше. Примерно вот так надо:
[vba]
function onOpen() {  var ui = SpreadsheetApp.getUi();ui.createMenu('USER MENU')    .addItem("Скроллинг ВВЕРХ"; 'scroll2top')    .addItem("Скроллинг ВНИЗ"; 'scroll2bottom')    .addТoUi();}
[/vba]

Автор - Gustav
Дата добавления - 08.10.2017 в 23:18
Dimansh Дата: Понедельник, 09.10.2017, 00:51 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Google Docs
Цитата Gustav, 08.10.2017 в 23:18, в сообщении № 5 ( писал(а)):
Заметьте, я работаю вслепую

все, что я могу заметить - вы гениальны.

Остался один вопрос. Можно ли "указать" скрипту какую колонку брать за "отчетную"? то есть можно ли скролить до первой пустой ячйеки в какой-то определенной колонке? или же скрипт работает только до первой пустой строки _полностью_ ?
 
Ответить
Сообщение
Цитата Gustav, 08.10.2017 в 23:18, в сообщении № 5 ( писал(а)):
Заметьте, я работаю вслепую

все, что я могу заметить - вы гениальны.

Остался один вопрос. Можно ли "указать" скрипту какую колонку брать за "отчетную"? то есть можно ли скролить до первой пустой ячйеки в какой-то определенной колонке? или же скрипт работает только до первой пустой строки _полностью_ ?

Автор - Dimansh
Дата добавления - 09.10.2017 в 00:51
Gustav Дата: Понедельник, 09.10.2017, 12:25 | Сообщение № 7
Группа: Админы
Ранг: Участник клуба
Сообщений: 2843
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Цитата Dimansh, 09.10.2017 в 00:51, в сообщении № 6 ( писал(а)):
можно ли скролить до первой пустой ячйеки в какой-то определенной колонке?

Увы, это будет достаточно запарно. В таблицах Гугл нет аналога удобного и элегантного экселевского метода Range.End, поэтому скрипту придется в активной колонке вставать на последнюю строку всех имеющихся данных листа (sheet.getLastRow) и подниматься поячеечно вверх по активной колонке до встречи с первой непустой ячейкой. Я не говорю, что это невозможно в принципе, но требуется некоторое время - большее, чем потребовалось на предыдущие скрипты. Как только оно появится - что-нибудь предложу (или кто-нибудь другой раньше сделает).

В качестве же промежуточного варианта пока предлагаю заменить в предыдущих скриптах номер колонки 1 на номер колонки активной ячейки (активной - перед выполнением команды). Это не сложно.

function scroll2top() {
// экран прокручивается так, что последняя занятая строка данных ВСЕГО ЛИСТА
// становится первой (ВВЕРХУ) видимой строкой на экране;
// курсор становится в колонку активной ячейки на следующей (второй, пустой) строке
// (поскольку последняя строка данных определяется по всем колонкам, а не только по текущей,
// то после позиционирования ячейка выше может оказаться также пустой - тогда Ctrl-Up в помощь!)
var sheet = SpreadsheetApp.getActiveSheet();
var activeColumn = sheet.getActiveCell().getColumn();
    
sheet.setActiveSelection(sheet.getRange(sheet.getMaxRows(), activeColumn));
sheet.setActiveSelection(sheet.getRange(sheet.getLastRow(), activeColumn));
sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, activeColumn));
}
    
function scroll2bottom() {
// экран прокручивается так, что последняя занятая строка данных ВСЕГО ЛИСТА
// становится предпоследней (ВНИЗУ) видимой строкой на экране;
// курсор становится в колонку активной ячейки на следующей (последней, пустой) строке
// (поскольку последняя строка данных определяется по всем колонкам, а не только по текущей,
// то после позиционирования ячейка выше может оказаться также пустой - тогда Ctrl-Up в помощь!)  
var sheet = SpreadsheetApp.getActiveSheet();
var activeColumn = sheet.getActiveCell().getColumn();
    
sheet.setActiveSelection(sheet.getRange(1, activeColumn));
sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, activeColumn));
}

И теперь, даже если после позиционирования на последнюю строку данных в этой колонке предыдущая ячейка выше окажется также пустой (одна или несколько), будет достаточно всего лишь ОДНОКРАТНОГО выполнения клавиатурной комбинации Ctrl-стрелка Вверх, чтобы оказаться на последней непустой ячейке текущей колонки.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Цитата Dimansh, 09.10.2017 в 00:51, в сообщении № 6 ( писал(а)):
можно ли скролить до первой пустой ячйеки в какой-то определенной колонке?

Увы, это будет достаточно запарно. В таблицах Гугл нет аналога удобного и элегантного экселевского метода Range.End, поэтому скрипту придется в активной колонке вставать на последнюю строку всех имеющихся данных листа (sheet.getLastRow) и подниматься поячеечно вверх по активной колонке до встречи с первой непустой ячейкой. Я не говорю, что это невозможно в принципе, но требуется некоторое время - большее, чем потребовалось на предыдущие скрипты. Как только оно появится - что-нибудь предложу (или кто-нибудь другой раньше сделает).

В качестве же промежуточного варианта пока предлагаю заменить в предыдущих скриптах номер колонки 1 на номер колонки активной ячейки (активной - перед выполнением команды). Это не сложно.
[vba]
function scroll2top() {  // экран прокручивается так, что последняя занятая строка данных ВСЕГО ЛИСТА  // становится первой (ВВЕРХУ) видимой строкой на экране;  // курсор становится в колонку активной ячейки на следующей (второй, пустой) строке  // (поскольку последняя строка данных определяется по всем колонкам, а не только по текущей,  // то после позиционирования ячейка выше может оказаться также пустой - тогда Ctrl-Up в помощьundefined)  var sheet = SpreadsheetApp.getActiveSheet();  var activeColumn = sheet.getActiveCell().getColumn();       sheet.setActiveSelection(sheet.getRange(sheet.getMaxRows(), activeColumn));  sheet.setActiveSelection(sheet.getRange(sheet.getLastRow(), activeColumn));  sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, activeColumn));}    function scroll2bottom() {  // экран прокручивается так, что последняя занятая строка данных ВСЕГО ЛИСТА  // становится предпоследней (ВНИЗУ) видимой строкой на экране;  // курсор становится в колонку активной ячейки на следующей (последней, пустой) строке  // (поскольку последняя строка данных определяется по всем колонкам, а не только по текущей,  // то после позиционирования ячейка выше может оказаться также пустой - тогда Ctrl-Up в помощьundefined)    var sheet = SpreadsheetApp.getActiveSheet();  var activeColumn = sheet.getActiveCell().getColumn();      sheet.setActiveSelection(sheet.getRange(1, activeColumn));  sheet.setActiveSelection(sheet.getRange(sheet.getLastRow()+1, activeColumn));}
[/vba]И теперь, даже если после позиционирования на последнюю строку данных в этой колонке предыдущая ячейка выше окажется также пустой (одна или несколько), будет достаточно всего лишь ОДНОКРАТНОГО выполнения клавиатурной комбинации Ctrl-стрелка Вверх, чтобы оказаться на последней непустой ячейке текущей колонки.

Автор - Gustav
Дата добавления - 09.10.2017 в 12:25
Dimansh Дата: Понедельник, 09.10.2017, 13:12 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Google Docs
Да, это лучше, чем ничего. попользуемся таким, подождем наличия времени у Вас
 
Ответить
СообщениеДа, это лучше, чем ничего. попользуемся таким, подождем наличия времени у Вас

Автор - Dimansh
Дата добавления - 09.10.2017 в 13:12
Gustav Дата: Среда, 11.10.2017, 00:45 | Сообщение № 9
Группа: Админы
Ранг: Участник клуба
Сообщений: 2843
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Что-то получилось. Увы, не без мыканий. Особенно хлопотной оказалась ситуация с загадочным фрагментом "sheet.getLastRow()*0" (читаем про него в комментариях и, если есть желание, проверяем всё самостоятельно).

По коду. Сначала обновляем функцию onOpen, придавая ей следующий вид - расширяем меню на две новые команды:

function onOpen() {

var ui = SpreadsheetApp.getUi();
ui.createMenu('USER MENU')
.addItem("Скроллинг ВВЕРХ"            , 'scroll2top')
.addItem("Скроллинг ВНИЗ"             , 'scroll2bottom')
.addItem("Скроллинг ВВЕРХ для колонки", 'scroll2top4column')
.addItem("Скроллинг ВНИЗ для колонки" , 'scroll2bottom4column')
.addToUi();
}


И далее добавляем код для обработки двух новых команд - четыре взаимосвязанные функции:

function scroll2top4column() {
// экран прокручивается так, что строка с последней занятой ячейкой в текущем столбце
// становится первой (ВВЕРХУ) видимой строкой на экране;
// курсор становится в первую пустую ячейку ниже последней занятой в текущем столбце
scroll4column(1);
}

function scroll2bottom4column() {
// экран прокручивается так, что строка с последней занятой ячейкой в текущем столбце
// становится предпоследней (ВНИЗУ) видимой строкой на экране;
// курсор становится в первую пустую ячейку ниже последней занятой в текущем столбце,
// т.е. в последнюю видимую строку экрана
scroll4column(0);
}

function scroll4column(top) {
var sheet = SpreadsheetApp.getActiveSheet();
var activeColumn = sheet.getActiveCell().getColumn();

var a = getLastRowInActiveColumn();

if (top) {
    sheet.setActiveRange(sheet.getRange(sheet.getMaxRows(), activeColumn));
    sheet.setActiveRange(sheet.getRange(sheet.getLastRow()*0 + a, activeColumn));
} else {
    sheet.setActiveSelection(sheet.getRange(1, activeColumn));
}
sheet.setActiveRange(sheet.getRange(sheet.getLastRow()*0 + a+1, activeColumn));
    
// выше бессмысленные на первый взгляд фрагменты sheet.getLastRow()*0
// являются эмпирически подобранным средством для правильной отработки прокрутки
// в случае, когда параметр top = 1 (или true);
// если удалить эти фрагменты, то поведение курсора при вызовах этой функции
// вида scroll4column(1) и scroll4column(0) будет одинаковым и соответствовать
// scroll4column(0), т.е. варианту "ВНИЗУ" (как в scroll2bottom4column)
}

function getLastRowInActiveColumn() {
var sheet = SpreadsheetApp.getActiveSheet();
var activeColumn = sheet.getActiveCell().getColumn();
    
// "половинное деление"
var a = 1;
var b = sheet.getLastRow();
while (a != b) {
    var range = sheet.getRange(a, activeColumn, b-a+1);
    if (range.isBlank()) { // диапазон полностью пустой - будем смотреть выше
    b = a;
    a = Math.round((1+a)/2);
    } else { // диапазон частично заполнен
    a = Math.round((a+b)/2);
    // b - остается тем же снизу, пытаемся сузиться до пустого диапазона внизу
    }
}
    
// доводка мелкими шажками вверх от ранее вычисленного "грубого" номера строки
a++;
do {
    range = sheet.getRange(--a, activeColumn);
} while (range.isBlank() && a > 1);

return a; // номер строки последней (самой нижней) непустой ячейки в активной колонке
}



P.S.И напоминаю про восстановление форматирования кода скриптов после копирования к себе:
Цитата Gustav, 12.05.2017 в 02:03, в сообщении № 2 ( писал(а)):
НА ЗАМЕТКУ: Форум пока не дает нормально форматировать текст скрипта, пробельные отступы в начале строк съедаются. Чтобы восстановить отступы надо после копирования кода к себе в Редактор скриптов выделить там скопированный текст (или сразу весь текст редактора - по Ctrl+A) и нажать комбинацию SHIFT+TAB.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 11.10.2017, 00:59
 
Ответить
СообщениеЧто-то получилось. Увы, не без мыканий. Особенно хлопотной оказалась ситуация с загадочным фрагментом "sheet.getLastRow()*0" (читаем про него в комментариях и, если есть желание, проверяем всё самостоятельно).

По коду. Сначала обновляем функцию onOpen, придавая ей следующий вид - расширяем меню на две новые команды:
[vba]
function onOpen() {    var ui = SpreadsheetApp.getUi();  ui.createMenu('USER MENU')  .addItem("Скроллинг ВВЕРХ"            ; 'scroll2top')  .addItem("Скроллинг ВНИЗ"             ; 'scroll2bottom')  .addItem("Скроллинг ВВЕРХ для колонки"; 'scroll2top4column')  .addItem("Скроллинг ВНИЗ для колонки" ; 'scroll2bottom4column')  .addТoUi();}
[/vba]
И далее добавляем код для обработки двух новых команд - четыре взаимосвязанные функции:
[vba]
function scroll2top4column() {  // экран прокручивается так, что строка с последней занятой ячейкой в текущем столбце  // становится первой (ВВЕРХУ) видимой строкой на экране;  // курсор становится в первую пустую ячейку ниже последней занятой в текущем столбце  scroll4column(1);}  function scroll2bottom4column() {  // экран прокручивается так, что строка с последней занятой ячейкой в текущем столбце  // становится предпоследней (ВНИЗУ) видимой строкой на экране;  // курсор становится в первую пустую ячейку ниже последней занятой в текущем столбце,  // т.е. в последнюю видимую строку экрана  scroll4column(0);}  function scroll4column(top) {  var sheet = SpreadsheetApp.getActiveSheet();  var activeColumn = sheet.getActiveCell().getColumn();    var a = getLastRowInActiveColumn();    if (top) {    sheet.setActiveRange(sheet.getRange(sheet.getMaxRows(), activeColumn));    sheet.setActiveRange(sheet.getRange(sheet.getLastRow()*0 + a, activeColumn));  } else {    sheet.setActiveSelection(sheet.getRange(1, activeColumn));  }  sheet.setActiveRange(sheet.getRange(sheet.getLastRow()*0 + a+1, activeColumn));      // выше бессмысленные на первый взгляд фрагменты sheet.getLastRow()*0  // являются эмпирически подобранным средством для правильной отработки прокрутки  // в случае, когда параметр top = 1 (или true);  // если удалить эти фрагменты, то поведение курсора при вызовах этой функции  // вида scroll4column(1) и scroll4column(0) будет одинаковым и соответствовать  // scroll4column(0), т.е. варианту "ВНИЗУ" (как в scroll2bottom4column)}function getLastRowInActiveColumn() {  var sheet = SpreadsheetApp.getActiveSheet();  var activeColumn = sheet.getActiveCell().getColumn();      // "половинное деление"  var a = 1;  var b = sheet.getLastRow();  while (a undefined= b) {    var range = sheet.getRange(a, activeColumn, b-a+1);    if (range.isBlank()) { // диапазон полностью пустой - будем смотреть выше      b = a;      a = Math.round((1+a)/2);    } else { // диапазон частично заполнен      a = Math.round((a+b)/2);      // b - остается тем же снизу, пытаемся сузиться до пустого диапазона внизу    }  }      // доводка мелкими шажками вверх от ранее вычисленного "грубого" номера строки  a++;  do {    range = sheet.getRange(--a, activeColumn);  } while (range.isBlank() && a > 1);    return a; // номер строки последней (самой нижней) непустой ячейки в активной колонке}
[/vba]

[p.s.]И напоминаю про восстановление форматирования кода скриптов после копирования к себе:
Цитата Gustav, 12.05.2017 в 02:03, в сообщении № 2 ( писал(а)):
НА ЗАМЕТКУ: Форум пока не дает нормально форматировать текст скрипта, пробельные отступы в начале строк съедаются. Чтобы восстановить отступы надо после копирования кода к себе в Редактор скриптов выделить там скопированный текст (или сразу весь текст редактора - по Ctrl+A) и нажать комбинацию SHIFT+TAB.

Автор - Gustav
Дата добавления - 11.10.2017 в 00:45
Dimansh Дата: Среда, 11.10.2017, 11:54 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 53
Репутация: 0 ±
Замечаний: 0% ±

Google Docs
Это просто бесподобно! то что нужно
 
Ответить
СообщениеЭто просто бесподобно! то что нужно

Автор - Dimansh
Дата добавления - 11.10.2017 в 11:54
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!