1

В Excel 2007 я могу добавить проверку данных в ячейку и предоставить список допустимых значений.

Однако эксперимент показывает, что раскрывающийся список проверки данных никогда не будет отображаться с шириной, меньшей первоначальной ширины его ячейки (в момент открытия рабочей книги).

Так что, если столбец ячейки был слишком большим, и пользователь изменил его размер, вы получите такую вещь:

выпадающий шире, чем столбец

Есть ли способ улучшить это? Можно ли сделать ширину выпадающего меню соответствующей ширине столбца, не закрывая и не открывая книгу заново? Написание некоторого VBA - вариант.

2 ответа2

2

Вы правы, это может происходить, когда вы изменяете ширину после создания выпадающего меню, но иногда также и при наличии объединенных ячеек. VBA является единственным вариантом. Поместите это в объект листа и измените номер столбца на столбец, в котором находится ваш список:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
   If Target.Column = 4 Then
       Target.Columns.ColumnWidth = 20
   End If
End Sub

Он будет искать изменения в вашем списке и подстраиваться под указанную ширину.

1

Я не могу сказать, будет ли это работать для Excel 2007, но я только что столкнулся с этой же проблемой в Excel 2013 и определил одну возможную причину этой ситуации, которая, естественно, привела к решению.

TL; DR: щелкните один раз в ячейке с слишком широким раскрывающимся списком, сохраните книгу, затем снова откройте раскрывающийся список.


Справочная информация: Я сделал для себя рабочую тетрадь, потому что мой отдел отслеживает рабочие часы по проектам и задачам, поэтому у меня есть дюжина строк в моем табеле учета. Раньше я просто писал в Блокноте всякий раз, когда начинал и прекращал работу над конкретной задачей, но, поскольку у некоторых задач было несколько коротких промежутков в течение дня, я создал эту книгу, в которую помещал бы ту же информацию, но в таблицу, каждый день с отдельной рабочей таблицей, а затем используйте сводную таблицу, чтобы объединить эти пять рабочих таблиц в одну, расположенную в том же макете, что и расписание, которое я должен представить. На каждой из ежедневных рабочих таблиц в таблице есть проверка времени окончания (время начала равно времени окончания предыдущей строки) и имени задачи, каждая из которых предназначена для диапазона ячеек на другом листе для списка допустимых записей. Столбцы времени, очевидно, намного уже столбца задач.


Обычно выпадающие окна проверки соответствуют ширине столбца, в котором они лежат, но однажды я заметил, что только на листе вторника выпадающий список был смехотворно широким. Первоначально я был в замешательстве, потому что я создавал каждый лист со вторника по пятницу, просто копируя понедельник; не должно было быть никаких причин для разницы между вторником и средой.

Мне потребовалось несколько недель, прежде чем я наконец понял, что это вызвало (первая подсказка состояла в том, что лист, который дал мне слишком широкие выпадающие списки, изменился в один момент), но в конце концов я понял:
На каждом листе, в котором ячейка в более широком столбце «Задача» была активной ячейкой, когда я последний раз сохранял книгу, более узкий столбец «Время окончания» дал бы мне очень широкий раскрывающийся список - в частности, такую же ширину, как и раскрывающийся список столбца «Задача»!

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

(В ходе дальнейших экспериментов я обнаружил, что сохранение с активной ячейкой без проверки работало одинаково хорошо.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .