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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 08:23   #11
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Круто!!! Огромное Вам спасибо!
Flangini вне форума Ответить с цитированием
Старый 17.05.2010, 10:04   #12
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Код:
Private Sub Combo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then Me.Combo.TopLeftCell = Me.Combo.Value: HideCombo: ActiveCell.Offset(1).Activate
    If KeyCode = 27 Then Me.Combo.Value = ""
End Sub
Подскажите, пожалуйста, что нужно допистаь чтобы после нажатия ESC корретка оставалась в Combo (была активной)?
Flangini вне форума Ответить с цитированием
Старый 17.05.2010, 10:52   #13
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Private Sub Combo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then Me.Combo.TopLeftCell = Me.Combo.Value: HideCombo: ActiveCell.Offset(1).Activate
    If KeyCode = 27 Then Me.Combo.Value = "": KeyCode = 0 ' отменяем ввод символа
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 17.05.2010, 11:53   #14
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Код:
Sub ShowCombo()
    Me.Combo.Top = ActiveCell.Top: Me.Combo.Left = ActiveCell.Left
    Me.Combo.Width = ActiveCell.Width + 1: Me.Combo.Height = ActiveCell.Height + 1
    Me.Combo.Activate
    Me.Combo.Value = ActiveCell.Offset(0).Value
End Sub
Но при этом каретка встаёт в конец строки и из-за этого первые пару символов не видно (спрятаны за левой гранью ComboBox), а как перевести каретку в начало строки и чтобы текст был выделен (чтобы при вводе он затирался)?
Flangini вне форума Ответить с цитированием
Старый 17.05.2010, 14:05   #15
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Код:
Sub ShowCombo()
    Me.Combo.Top = ActiveCell.Top: Me.Combo.Left = ActiveCell.Left
    Me.Combo.Width = ActiveCell.Width + 1: Me.Combo.Height = ActiveCell.Height + 1
    Me.Combo.Activate
    Me.Combo.Value = ActiveCell.Offset(0).Value
    Me.Combo.BackColor = ActiveCell.Interior.Color
    Me.Combo.SelStart = 0
End Sub
Вот как придумал Осталось сделать чтобы текст сразу был выделеным
Flangini вне форума Ответить с цитированием
Старый 17.05.2010, 14:48   #16
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Код:
Private Sub Combo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then Me.Combo.TopLeftCell = Me.Combo.Value: HideCombo: ActiveCell.Offset(0, 1).Activate
    If KeyCode = 27 Then Me.Combo.Value = "": KeyCode = 0
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Application.ScreenUpdating = False:
    HideCombo
    Me.Combo.Value = ActiveCell.Offset(0).Value
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("I2:I65536")) Is Nothing Then Exit Sub
    ShowCombo
End Sub

Sub ShowCombo()
    
    Me.Combo.Top = ActiveCell.Top: Me.Combo.Left = ActiveCell.Left
    Me.Combo.Width = ActiveCell.Width + 1: Me.Combo.Height = ActiveCell.Height + 1
    'Me.Combo.Value = ActiveCell.Offset(0).Value
    Me.Combo.BackColor = ActiveCell.Interior.Color
    Me.Combo.SelStart = 0
    Me.Combo.Activate
End Sub

Sub HideCombo()
    Me.Combo.Top = 0: Me.Combo.Left = 0: Me.Combo.Width = 0: Me.Combo.Height = 0
End Sub
Иногда при выделени происходит какой-то сбой (см. вложение). Из-за чего такое странное выделение? Заметил, что при использовании прокрутки на листе она начитает так выделяться.
Изображения
Тип файла: jpg 1_2.JPG (18.0 Кб, 102 просмотров)
Flangini вне форума Ответить с цитированием
Старый 18.05.2010, 08:11   #17
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Из-за чего ошибка? Никто не знает?
Flangini вне форума Ответить с цитированием
Старый 18.05.2010, 13:49   #18
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Ап (up)
Flangini вне форума Ответить с цитированием
Старый 17.01.2011, 12:50   #19
drgdr
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 1
По умолчанию

здравствуйте, уважаемый
вопрос такой: в макросе не нашел места, где указывается область со всеми вариантами подстановки. Подскажите пожалуйста где искать
drgdr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоподстановка Fezdipekla Microsoft Office Access 2 20.04.2010 18:10
Автоподстановка Nightwolf Microsoft Office Access 3 19.04.2009 12:11
DBMemo автоподстановка John_chek Компоненты Delphi 3 25.01.2007 13:41