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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2011, 16:20   #1
Lexey_fan
 
Регистрация: 09.06.2011
Сообщений: 5
По умолчанию не могу разобраться с макросом

Вот код формы:
Option Compare Text
Private Sth As Boolean
Private LAr() As Variant

Private Sub UserForm_Initialize()
Dim x, i As Long, j As Object
i = ActiveCell.Column
With ActiveSheet
Set j = .Range(.Cells(1, i), .Cells(.Rows.Count, i).End(xlUp)) ' <-- тут можно отсечь "шапку" таблицы
End With
On Error Resume Next
With New Collection
If j.Count = 1 Then x = j.Value
For Each x In j.Value
If VarType(x) = vbString Then x = Trim(x)
If Len(x) > 0 Then
If .Item(CStr(x)) = "" Then
For i = 1 To .Count
If x < .Item(i) Then
.Add x, CStr(x), Before:=i: Exit For
End If
Next
.Add x, CStr(x)
End If
End If
Next
ReDim LAr(1 To .Count)
For i = 1 To .Count: LAr(i) = .Item(i): Next
End With
Set j = ActiveCell
With FDDL
.Caption = "Всего элементов: " & i - 1
.Left = .Width - j.Left + j.Width
.Top = .Height * 2 + j.Top - j.Height
.ComboBox1.List = LAr()
.ComboBox1.DropDown
End With
End Sub

Private Sub ComboBox1_Change()
If Sth Then Exit Sub
Dim x, mask As String
mask = "*" & Me.ComboBox1.Value & "*"
With CreateObject("Scripting.Dictionary" )
For Each x In LAr
If x Like mask Then .Add x, x
Next
Me.Caption = "Всего элементов: " & .Count: Me.ComboBox1.List = .Items
Me.ComboBox1.DropDown
End With
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Sth = False
Select Case KeyCode
Case vbKeyReturn: ActiveCell.Value = Me.ComboBox1.Value: Unload Me: Exit Sub
Case vbKeyEscape: Unload Me: Exit Sub
Case vbKeyDown: Sth = True
Case vbKeyUp: Sth = True
End Select
End Sub

Private Sub UserForm_Terminate(): Unload Me: End Sub

Что она делает: при нажати сочетания клавиш ctrl+enter открывается форма в которой есть некий список для вбора значения, макрос написан таким образом, что он формирует список из текущего столбца (т.е из того столбца, в котором была активна ячейка при нажатии сочетания клавиш)! чего хочется добиться, что бы список формировался из конкретного столбца с другого листа книги, если кто поправит код или подскажет как это реализовать буду признатеоен!
Lexey_fan вне форума Ответить с цитированием
Старый 29.10.2011, 16:32   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

замените это:
i = ActiveCell.Column
With ActiveSheet

на:
i = Номер_Колонки_с_Данными
With WorkSheet("Имя_листа с данными")

где вместо
Номер_Колонки_с_Данными можете вписать конкретное число
"Имя_листа с данными" - напишите имя листа (то что на ярлыке указано)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.10.2011, 16:33   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Давайте пример в файле.
Что-то очень напоминает код из http://www.planetaexcel.ru/forum.php...hread_id=33137
Если у Вас другое - посмотрите в той теме - там два похожих варианта рассматривали (и делали).
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.10.2011, 16:40   #4
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

ну-ну
http://www.planetaexcel.ru/forum.php...llnum_forum=52

Hugo121, спасибо

Судя по всему придется обращаться к модераторам, а то сейчас код пойдет гулять по форумам : )
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 29.10.2011, 17:18   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Всё, слово выпустил - не поймаешь
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 31.10.2011, 13:45   #6
Ne prosto Masha
Новичок
Джуниор
 
Регистрация: 31.10.2011
Сообщений: 1
По умолчанию

Нужна помощь: формулы "ЕСЛИ", формулы отвечающие за диапазоны, ну и возврат к листу содержащему значения.... к ГОТОВОЙ программе - необходимо дополнение!!! сама владею знаниями только с определенными формулами. Немножечко позолочу Вашу ручку)))по договоренности конечно.
Ne prosto Masha вне форума Ответить с цитированием
Старый 31.10.2011, 14:07   #7
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

А в чем вопрос то? Это только мне кажется, или Ваше сообщение мимо темы?
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться feesta Помощь студентам 0 10.04.2011 20:19
Не могу разобраться!!! Яна Сафронова Помощь студентам 11 12.05.2010 17:56
не могу разобраться Var17 Общие вопросы Delphi 6 27.03.2010 01:21
[C++] Не могу разобраться ... AquaticSoul Общие вопросы C/C++ 8 24.03.2010 16:23
Не могу разобраться Lokin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.03.2010 22:45