Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2009, 17:18   #1
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию поле со списком - уж больно шрифт мелковат

Нельзя ли как нибудь в поле со списком /данные-проверка-список/ сделать шрифт покрупнее? А то юзеры при выборе значений из списка зателепались масштаб менять туда-сюда. Может, еще что-нибудь можно придумать?
Bezdar вне форума Ответить с цитированием
Старый 26.03.2009, 17:57   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Могу посоветовать лишь такой макрос:

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next: res = ActiveCell.Validation.Type
    ActiveWindow.Zoom = IIf(res = 3, 300, 100)
End Sub
При выделении ячейки с выпадающим списком автоматически ставится масштаб 300%, при выделении любой другой ячейки - 100%

Для использования макроса щелкаем правой кнопкой на ярлычке листа, и выбираем пункт Исходный текст. В открывшееся окно вставляем код.

Цитата:
Нельзя ли как нибудь в поле со списком /данные-проверка-список/ сделать шрифт покрупнее?
Можно, но очень сложно. Лучше даже не пытаться
EducatedFool вне форума Ответить с цитированием
Старый 27.03.2009, 10:15   #3
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Могу посоветовать лишь такой макрос:

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next: res = ActiveCell.Validation.Type
    ActiveWindow.Zoom = IIf(res = 3, 300, 100)
End Sub
При выделении ячейки с выпадающим списком автоматически ставится масштаб 300%, при выделении любой другой ячейки - 100%
Может, чего не догоняю, но у меня устанавливается масштаб 100% и все на этом замирает.
И еще: объясните, пожалуйста, на пальцах "чайнику" что такое res = ActiveCell.Validation.Type и IIf(res = 3, 300, 100)/ну это я думаю, и есть масштаб -> 300->100, а "3" что значит? И как определить ячейку, которая со списком?
А то я кроме Zoom ничего не поняла...
Заранее благодарю!
Bezdar вне форума Ответить с цитированием
Старый 27.03.2009, 11:12   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
у меня устанавливается масштаб 100% и все на этом замирает
А Вы пробовали после добавления макроса щелкать на ячейках с выпадающим списком?
У меня в Excel 2003 всё работает...

Цитата:
объясните, пожалуйста, на пальцах "чайнику"
Вкратце будет так:
При щелчке на ячейке с выпадающим списком (организованным через /данные-проверка-список/ ) устанавливается масштаб 300%
При выделении любой другой ячейки - 100%

res = ActiveCell.Validation.Type - в переменную res заносится тип проверки данных в выделенной ячейке. Если для данные-проверка установлен режим список, то значение типа равно 3
Если в ячейке не включен режим данные-проверка-список, то Excel генерирует ошибку, и переменная res остаётся пустой.

ActiveWindow.Zoom = IIf(res = 3, 300, 100) - устанавливает масштаб в зависимости от значения переменной res

А зачем Вам все эти подробные объяснения?
Работает, да и ладно
EducatedFool вне форума Ответить с цитированием
Старый 27.03.2009, 12:13   #5
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

EducatedFool
Спасибо огромнейшее! Вот теперь все ясно и понятно (чего-откуда-и куда).
А то я "экспериментировала" с пустым листом/без списка/.

Восхищаюсь Вашими знаниями!

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А зачем Вам все эти подробные объяснения?
Работает, да и ладно
Как же я буду "расти", если не задумываясь копировать чужие идеи?
Bezdar вне форума Ответить с цитированием
Старый 06.06.2013, 07:25   #6
Demkin_V
Новичок
Джуниор
 
Регистрация: 06.06.2013
Сообщений: 1
По умолчанию

Спасибо, пригодилось)
Не сильно разбираюсь в VBA но была потребность в доработке: чтобы не просто при выделении выпадающего списка увеличивался масштаб, но и возвращался к ранее выбранному пользователем. Вот что получилось:

Код:
Public zoom1 As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next: res = ActiveCell.Validation.Type
    
    If ActiveWindow.Zoom < 150 Then zoom1 = ActiveWindow.Zoom 
        If res = 3 Then
        ActiveWindow.Zoom = 150 
        Else
        ActiveWindow.Zoom = zoom1 
    End If
 End Sub
вроде работает.
МОжет пригодится тоже кому
Demkin_V вне форума Ответить с цитированием
Старый 06.06.2013, 08:15   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
    If ActiveWindow.Zoom < 150 Then zoom1 = ActiveWindow.Zoom 
        If res = 3 Then
        ActiveWindow.Zoom = 150 
        Else
        ActiveWindow.Zoom = zoom1 
    End If
можно в одну строчку:

Код:
With ActiveWindow : .Zoom = IIf((.Zoom < 150) And (Res = 3), 150, .Zoom) : End With
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 06.06.2013 в 08:20.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание в VBA "поле с выпадающем списком" tae1980 Microsoft Office Excel 2 30.03.2009 12:22
Шрифт Claster Помощь студентам 6 29.11.2008 19:17
Шрифт beginner JavaScript, Ajax 2 04.07.2008 23:52
Шрифт Балда Общие вопросы Delphi 3 16.12.2007 19:19