Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Скрипт для автоматического скрытия столбцов

Автор All3xus, 02.11.2023, 12:16:05

« назад - далее »

All3xus

Доброго дня.
Есть таблица с флажками и формула с условием, если флажек = ИСТИНА, то ячейка принимает значение другой ячейки с другого листа.
Т.е. на листе должны отображаться только те столбцы, которые были выбраны (поставлены флажки), остальные нужно скрыть.

Скрипт ниже работает только если ячейка пустая, но т.к. у нас стоит формула, скрипт не работает.

Может возможно привязать скрипт к флажку, есть B2 = ИСТИНА, то столбец 4 - скрыть, к примеру :o

function onEdit(e) {  
 const specificSheet = "Лист2"   // имя листа, на котором будет отслеживание изменения значений ячеек  
 const specificCellColumn = 4    // номер столбца для отслеживания изменений  
 
 let sheetCheck = (e.range.getSheet().getName() == specificSheet)  
 let cellCheck = (e.range.getColumn() == specificCellColumn)  
 
 if (!(sheetCheck && cellCheck)) {  
   return  
 }  
 else {  
   var cellVal = e.range.getValue();  
   if (cellVal == "") {  
     e.range.getSheet().hideColumns(e.range.getColumn());}  
 }  
}

Дмитрий Щербаков(The_Prist)

Цитата: All3xus от 02.11.2023, 12:16:05const specificCellColumn = 4    // номер столбца для отслеживания изменений
Изменение формулой не отслеживается. Но если у Вас флажки - они же завязаны на ячейки. Вот их и отслеживайте. Т.е. столбец В, а не D.
Т.е. по событию столбца В запускаете скрипт, а далее уже просматриваете все нужные столбцы и их ячейки на предмет выполнения условия.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

All3xus

Цитата: Дмитрий Щербаков(The_Prist) от 02.11.2023, 14:42:16
Изменение формулой не отслеживается. Но если у Вас флажки - они же завязаны на ячейки. Вот их и отслеживайте. Т.е. столбец В, а не D.
Т.е. по событию столбца В запускаете скрипт, а далее уже просматриваете все нужные столбцы и их ячейки на предмет выполнения условия.


Не разбираюсь в кодинге.
Как это поправить в самом коде?

Дмитрий Щербаков(The_Prist)

#3
Цитата: All3xus от 02.11.2023, 17:02:52Не разбираюсь в кодинге
у-у-у...Это сложнее будет для Вас. Вам получается готовое решение нужно, а не направление решения.
function onEdit(e) {
 const specificSheet = "Лист2"   // имя листа, на котором будет отслеживание изменения значений ячеек    
 const specificCellColumn = 2    // номер столбца для отслеживания изменений    

 var sheet = e.range.getSheet();
 let sheetCheck = sheet.getName();
 if (specificSheet != sheetCheck) {    
   return    
 }  
 
 var cellCol = e.range.getColumn();  
 if (cellCol != specificCellColumn) {    
   return    
 }    
 
 var lCurRow = e.range.getRow();
 var cellVal = sheet.getRange(2,lCurRow+3).getValue();  
 
  if (cellVal == "") {   
      e.range.getSheet().hideColumns(lCurRow+3);
  }   
  else {sheet.showColumns(lCurRow+3);}
}

Т.к. ссылку на файл Вы не приложили и что к чему можно только по скрину гадать - то и скрипт на этом основан :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Яндекс.Метрика Рейтинг@Mail.ru