Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите написать маленькую функцию на VB / 16 сообщений из 16, страница 1 из 1
05.04.2006, 14:35:14
    #33646373
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Я создал в редакторе VB маленькую формочку - на ней есть поле со списком, текстовое поле и кнопка. Нужно сделать так чтоб при нажатии на эту кнопку в текстовое поле выводилось количество ячеек в столбце(Excel), где значение ячейки соответствует значению поля со списком.
Помогите пожалуйста решить такую задачку, т.к. в VB я не силен.
e-mail: zergik_w@mail.ru
...
Рейтинг: 0 / 0
05.04.2006, 14:53:30
    #33646466
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
... и еще - как запуск этой самой формы прицепить на комбинацию клавиш?
...
Рейтинг: 0 / 0
05.04.2006, 17:15:01
    #33647086
121
121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Я создал в редакторе VB маленькую формочку (c)
В каком VB? VB6, VB7, VBA?
Как связаны форма и книга Excel?
Нет однозначно понимаемого вопроса- нет ответа.
...
Рейтинг: 0 / 0
05.04.2006, 21:42:24
    #33647576
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Я полагаю автор имеет ввиду форму, созданную в редакторе VBA.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub CommandButton1_Click()
    Dim r As Range
    Dim rng As Range
    Dim intI As Integer
    Dim intCount As Integer

    TextBox1.Text = ""

    If ComboBox1.ListIndex = - 1  Then Exit Sub
    
    Set rng = ThisWorkbook.Worksheets("Лист1").Range("A1:A20")
    
    ' Поиск совпадений.
    For Each r In rng.Cells
        If ComboBox1.List(ComboBox1.ListIndex) = r.Value Then
            intCount = intCount +  1 
        End If
    Next r
    
    TextBox1.Text = intCount
End Sub
...
Рейтинг: 0 / 0
06.04.2006, 10:55:54
    #33648253
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
спасибо, все работае.
... и попутно еще такой вопросик - как в поле со списком добавить неповторяющиеся значения, т.е. чтобы было так:

в столбце значения:
1
2
4
1
1
6
2
3
4
3
6

... а в поле со списком было:
1
2
4
6
3
...
Рейтинг: 0 / 0
06.04.2006, 11:50:00
    #33648523
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Private Sub CommandButton1_Click()
    Dim r As Range
    Dim rng As Range
    Dim intI As Integer
    Dim blnFlag As Boolean
    
    Set rng = ThisWorkbook.Worksheets("Лист1").Range("A1:A11")
    
    For Each r In rng.Cells
        blnFlag = False
        
        If ComboBox1.ListCount =  0  Then
            ComboBox1.AddItem r.Value
        Else
            For intI =  0  To ComboBox1.ListCount -  1 
                If CLng(r.Value) = CLng(ComboBox1.List(intI)) Then
                    blnFlag = True
                    Exit For
                End If
            Next intI
            
            If Not blnFlag Then
                ComboBox1.AddItem r.Value
            End If
        End If
    Next r
End Sub

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

Код: plaintext
1.
2.
    If ComboBox1.List(ComboBox1.ListIndex) = r.Value Then
        intCount = intCount +  1 
    End If

Если же сравниваешь числа, то необходио явно преобразовать к определенному формату, для корректного сравнения, например:

Код: plaintext
1.
2.
    If CLng(ComboBox1.List(ComboBox1.ListIndex)) = CLng(r.Value) Then
        intCount = intCount +  1 
    End If
...
Рейтинг: 0 / 0
06.04.2006, 12:01:26
    #33648576
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
нет, я сравниваю просто текст.
и еще вопрос - можно ли как-то обойти регистр букв.

...т.е. чтоб например оба слова "макрос" и "маКрос" давали true при подсчете кол-ва совпадающих значений
...
Рейтинг: 0 / 0
06.04.2006, 12:09:07
    #33648604
Logayn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Ф-я UCase(строка) преобразует "строка" в верхний регистр
...
Рейтинг: 0 / 0
06.04.2006, 12:11:57
    #33648614
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
zergikи еще вопрос - можно ли как-то обойти регистр букв.
Да, можно, например.

Код: plaintext
1.
2.
3.
4.
5.
6.
?UCase("макрос")=UCase("маКрос")
True

' Или.

?LCase("макрос")=LCase("маКрос")
True
...
Рейтинг: 0 / 0
06.04.2006, 12:19:32
    #33648641
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
... на счет добавления значений в поле со списком:

если в столбце значений числа - то все работает нормально, а если ввожу текст, то -
Run-time error '13:'
Type mismatch
...
Рейтинг: 0 / 0
06.04.2006, 12:27:06
    #33648666
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Убери CLng() из этого фрагмента:

Код: plaintext
1.
2.
3.
    If CLng(r.Value) = CLng(ComboBox1.List(intI)) Then
        blnFlag = True
        Exit For
    End If
...
Рейтинг: 0 / 0
06.04.2006, 12:33:16
    #33648681
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
сделал как ты сказал, - так теперь в поле выводятся все значения, а не уникальные???
...
Рейтинг: 0 / 0
06.04.2006, 12:38:01
    #33648694
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Прикрепи свой файлик.
...
Рейтинг: 0 / 0
06.04.2006, 14:01:42
    #33649015
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
...с уникальностью значений я уже разобрался, а теперь помогите пожалуйста реализовать еще такую функцию: чтобы расчет количества значений соответствующих условию велся с учетом даты (см. прикрепленный файл)... т.е. в поле со списком я выбрал нужное условие отбора, потом в поля ниже ввел дату (с ... по...) и после нажатия на кнопку "Рассчитать" было выведено кол-во значений.
...
Рейтинг: 0 / 0
06.04.2006, 14:55:21
    #33649228
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Посмотри.
...
Рейтинг: 0 / 0
06.04.2006, 15:15:12
    #33649323
zergik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать маленькую функцию на VB
Как раз то, что нужно.
Большое спасибо.
Отделное спасибо Ashton-у, ты вообще супер!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите написать маленькую функцию на VB / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]