Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Excel VBA (часть 2)

Автор: AndVGri
Дата сообщения: 30.04.2007 17:14
oadmail
Тебе сюда
Excel FAQ
aks_sv
Тогда используй Dictionary (Tools/References Microsoft Scripting Runtime). Заносишь уникальные ключи Книга1, проверяешь по Exists данные Книга2, если отсутствуют, до добавляешь в Книга1
Автор: oadmail
Дата сообщения: 30.04.2007 17:21
AndVGri

Цитата:
oadmail
Тебе сюда
Excel FAQ [?]

Спасибо :\
Автор: AndVGri
Дата сообщения: 01.05.2007 05:59
Почему в пользовательской функции не срабатывает SpecialCells(xlCellTypeVisible)?

Код:
Public Function TestVisible() As Long
Dim pRange As Range

Set pRange = Range("B2:B7").SpecialCells(xlCellTypeVisible)
TestVisible = pRange.Rows.Count
End Function
Автор: aks_sv
Дата сообщения: 01.05.2007 14:53
AndVGri

Цитата:
Тогда используй Dictionary (Tools/References Microsoft Scripting Runtime). Заносишь уникальные ключи Книга1, проверяешь по Exists данные Книга2, если отсутствуют, до добавляешь в Книга1

Подробней нельзя?
Автор: AndVGri
Дата сообщения: 01.05.2007 15:17
aks_sv
c:\Program Files\Microsoft Office\OFFICE11\1049\VBSCRIP5.CHM вот здесь описание по методам и свойствам Dictionary
Мастер The okk даёт пример использования Dictionary - почти твой случай
Автор: aks_sv
Дата сообщения: 01.05.2007 17:19
AndVGri
Спасибо!


Добавлено:
Что-то я не нашел этого файла у себя в Qffice 2003SP1 только VBSCRIP.XML (

Добавлено:
Доустановил Office и нашел
Автор: slech
Дата сообщения: 01.05.2007 20:25
Всем привет. Понимаю что не совсем в тему, но по ворду нету такой темы.

Есть такая программа
1.Dekart Secrets Keeper - платная
и
2.AxCrypt - бесплатная

Платная в отличие от платной создаёт в Word кнопочку на панели инструментов и там сразу можно сохранить документ и зашифровать и открыть.
Как можно такую кнопочку сделать для бесплатной програмули ?

Заранее спасибо.
Автор: Troitsky
Дата сообщения: 01.05.2007 21:15
slech

Цитата:
Всем привет. Понимаю что не совсем в тему, но по ворду нету такой темы.
<...>
Как можно такую кнопочку сделать для бесплатной програмули ?

Прочитать внимательно шапку и задать вопрос в теме по Word VBA, которая для таких вопросов и предназначена.
Автор: Artcv
Дата сообщения: 01.05.2007 23:35
всем привет!
вопрос:
например, есть ТекстБокс как запрограммировать:
я ввожу какой-то текст нажму Ентер чтоб выполнялось некоторые действие с веденным текстом


Добавлено:
еще
как узнать программно (например, через if) в некоторой процедуре или включен(выбран) ОптионБаттон1 на форме???
Автор: AndVGri
Дата сообщения: 02.05.2007 02:18
Artcv

Код:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode.Value = KeyCodeConstants.vbKeyReturn Then
'...
End If
End Sub
Автор: Artcv
Дата сообщения: 02.05.2007 03:10
AndVGri

большое спасибо
еще, если можно
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim slovE As String
Dim i As Long

If KeyCode.Value = KeyCodeConstants.vbKeyReturn Then
slovE = UserForm1.TextBox1
For i = 1 To n
If slovL = slov1(i) Then
TextBox2.Text = slov2(i)
Exit For
End If
Next i
End If
End Sub

ничего не выводит в ТексБокс2....???где может быть ошыбка???
Автор: AndVGri
Дата сообщения: 02.05.2007 05:05
Artcv

Цитата:

slovE = UserForm1.TextBox1
For i = 1 To n
If slovL = slov1(i) Then

Присваиваешь slovE, а сравниваешь с slovL - где логика? Чему равно slovL? И чем тебя не устроил предложенный The okk Dictionary?
Автор: The okk
Дата сообщения: 02.05.2007 07:12

Цитата:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim slovE As String
Dim i As Long

If KeyCode.Value = KeyCodeConstants.vbKeyReturn Then
slovE = UserForm1.TextBox1
For i = 1 To n
If slovL = slov1(i) Then
TextBox2.Text = slov2(i)
Exit For
End If
Next i
End If
End Sub

ничего не выводит в ТексБокс2....???где может быть ошыбка???

А где у тебя n задается? Это не Static, она нигде не устанавливается и не объявляется. Скорее всего, ты пытаешься сделать цикл от 1 до 0.
Автор: Artcv
Дата сообщения: 02.05.2007 11:09

Цитата:
Присваиваешь slovE, а сравниваешь с slovL

когда печатал сделал ошыбку

Цитата:
А где у тебя n задается?

задаю глобально, это константа

но все равно ничего не выводит:

Цитата:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim slovE As String
Dim i As Long

If KeyCode.Value = KeyCodeConstants.vbKeyReturn Then
slovE = UserForm1.TextBox1
For i = 1 To n
If OptionButton1.Value Then
If slovE = slov1(i) Then
TextBox2.Text = slov2(i)
Exit For
End If
ElseIf OptionButton2.Value Then
If slovE = slov2(i) Then
TextBox2.Text = slov1(i)
Exit For
End If
End If
Next i
End If
End Sub


хоть так все работает


Цитата:
Private Sub CommandButton1_Click()
slovE = UserForm1.TextBox1
For i = 1 To n
If OptionButton1.Value Then
If slovE = slov1(i) Then
TextBox2.Text = slov2(i)
Exit For
End If
ElseIf OptionButton2.Value Then
If slovE = slov2(i) Then
TextBox2.Text = slov1(i)
Exit For
End If
End If
Next i
End Sub
Автор: The okk
Дата сообщения: 02.05.2007 14:03
Artcv

Цитата:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim slovE As String
Dim i As Long

If KeyCode.Value = KeyCodeConstants.vbKeyReturn Then

KeyUp - это не совсем то событие, которое нужно использовать в данной ситуации. Попробуй BeforeUpdate и AfterUpdate.
Автор: AndVGri
Дата сообщения: 02.05.2007 16:23
Artcv
The okk
Проблема в этом, как гласит Office Forms 2

Код:
EnterKeyBehavior Property
...
Remarks

The EnterKeyBehavior and MultiLine properties are closely related. The values described above only apply if MultiLine is True. If MultiLine is False, pressing ENTER always moves the focus to the next control in the tab order regardless of the value of EnterKeyBehavior.
Автор: Artcv
Дата сообщения: 02.05.2007 17:03
The okk


Цитата:
Попробуй BeforeUpdate и AfterUpdate.



Цитата:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim slovE As String
Dim i As Long

If KeyCode.Value = KeyCodeConstants.vbKeyReturn Then


тогда место этого

Цитата:
If KeyCode.Value = KeyCodeConstants.vbKeyReturn Then

что написать, это не подходит под это событие

Добавлено:
все зделал не надо писать, спасибо

Добавлено:
AndVGri
спасибо за пояснение
Автор: NugnaPomosh
Дата сообщения: 02.05.2007 17:07
Такая проблемка, что я никогда не сталкивался с VBA. но пришлось(((
Есть таблица ФИО, год рождения, №цеха, нужно создай макрос, который выбирал от того то года по такой всех, кто принадлежит к указанному цеху. Нарисовал форму, где три текстовых поля 1)год от... 2)год до... 3)номер цеха, ну еще, конечно, командную кнопку, на этом все мои знания и кончились))) Помогите, пожалуйста, не дайте грешной душе пропасть) Очень буду признателен)))
Автор: AndVGri
Дата сообщения: 02.05.2007 17:11
NugnaPomosh
И куда выбирал?
Автор: DYBINA
Дата сообщения: 02.05.2007 17:15
Здравствуйте люди добрые!!!помогите глупенькой девушке-несмышленышу,очень нужна ваша помощь,когда нашла этот форум чуть от счастья не упала,но не об этом,я учусь на 1-ом курсе у меня программирование,т.к. я девушка мне это очень и очень далеко....помогите мне пожалуйста сделать пару лабораторок....я буду вам ооооооооооочччччччееееень благодарна,значит так:
1В основной программе создается файл со значениями фунции y=sin(x) на интервале a<=x<=b с шагом изменения аргумента hx. Функция вычисляет среднее арифметическое элементов файла с номерами от m до n. Файл и результат вычислений печатаются в основной программе.
2Создать процедуру, формирующую матрицу путем умножения элементов исходной матрицы на индекс строки в которой имеется максимальный элемент. Исходная матрица формируется и печатается в основной программе по ее запросу, новая матрица печатается там же.
Заранее спасибо
P.S. т.к. я не шарю в этом практически вообще то очень прошу вас написать поподробн
Автор: NugnaPomosh
Дата сообщения: 02.05.2007 17:22

Цитата:
[/q]
Чтобы все записи, которые подходят под условия, полностью (т.е. ФИО, год рождения, №цеха) копировались на отдельный лист (Скажем Лист2)))).

Добавлено:
AndVGri
[q]И куда выбирал?

Это по предыдущему сообщению)))
Автор: pila007
Дата сообщения: 02.05.2007 18:10
вот что-то написал, но никак не получается правильно сделать.
задача такова:
Вычислить произведение положительных и суммы отрицательных элементов каждого столбца массива A(N,M)
Вот что сделал:
Sub k()
Dim a(10, 2) As Double
For i = 1 To 10
For j = 1 To 2
Cells(i, j) = Int(Rnd * 2-1)
a(i, j) = Cells(i, j)
If a(i, j) <= 0 Then
Cells(12, 1) = a(i, j) + a(i, j)
Else: Cells(14, 1) = a(i, j) * a(i, j)
End If
Next j
Next i
End Sub
как сделать чтобы он отриц числа складывал в ячейку cells(12,1), а положительные умножал и вписывал в ячейку cells(14,1)
Автор: AndVGri
Дата сообщения: 02.05.2007 18:15
NugnaPomosh
Эх, грешник
[more]
Код для кнопки

Код:
Dim pSource As Worksheet, pDest As Worksheet
Dim i As Long, vFirst As Long, vLast As Long, vFirstCol As Long
Dim vBegin As Integer, vEnd As Integer, vCode As Long
Dim vCurrent As Integer, vPos As Long

vBegin = Year(CDate(TextBeginYear.Text))
vEnd = Year(CDate(TextEndYear.Text))
vCode = CLng(TextCode.Text)

Set pSource = ActiveSheet
vFirst = pSource.UsedRange.Row
vFirstCol = pSource.UsedRange.Column

Set pDest = Worksheets.Add
pSource.Activate
pSource.Range(Cells(vFirst, vFirstCol), _
Cells(vFirst, vFirstCol + 2&)).Copy pDest.Cells(1&, 1&)

vLast = pSource.UsedRange.Rows.Count + vFirst - 1&
vFirst = vFirst + 1&: vPos = 1&
For i = vFirst To vLast
vCurrent = Year(CDate(pSource.Cells(i, vFirstCol + 1&).Value))
If (vCurrent >= vBegin) And (vCurrent <= vEnd) And _
(vCode = CLng(pSource.Cells(i, vFirstCol + 2&).Value)) Then
vPos = vPos + 1&
pSource.Range(Cells(i, vFirstCol), _
Cells(i, vFirstCol + 2&)).Copy pDest.Cells(vPos, 1&)
End If
Next i
Автор: NugnaPomosh
Дата сообщения: 02.05.2007 18:33
AndVGri
Спасибо большое))) Буду молиться за нас обоих)))
Автор: Artcv
Дата сообщения: 02.05.2007 22:21
AndVGri
ты мне писал но я не все понял

значит ситуация такая когда я нажимаю Ентер в ТекстБоксе1 то фокус переходит на ЛистБокс, но это не чего но когда я хочу переключить на другой язык(ОптионБаттон) то выходит ошибка, хоть в процедуре

Цитата:
Private Sub TextBox1_AfterUpdate()
' мой код
UserForm1.TextBox1.SetFocus
End Sub

я фокус указал на текстбокс1

где грабли???

Добавлено:
ще
например, я хочу сделать чтоб с ЛистБокса тоже мог выбирать слова выделивши и нажавши Ентер
каким событием это можно сделать???
Автор: AndVGri
Дата сообщения: 03.05.2007 01:11
Artcv

Цитата:
Private Sub TextBox1_AfterUpdate()
' мой код
UserForm1.TextBox1.SetFocus
End Sub

Не совсем правильно. Ты же вводишь в TextBox1 слово для поиска, после Enter фокус передаётся TextBox2 (если не так, то настрой на форме порядок перхода). Чтоб можно было вводить следующее слово, нужно вернуть фокус в TextBox1 (или щёлкнуть в нём мышкой. Но зачем лишние телодвижения?)

Код:
Private Sub TextBox1_AfterUpdate()
'Ваш код
End Sub

Private Sub TextBox2_AfterUpdate()
TextBox1.SetFocus
End Sub
Автор: Vitus_Bering
Дата сообщения: 03.05.2007 10:27
To All
Как программно задать формат даты вида: Чт. 03 Май 2007?
Автор: AndVGri
Дата сообщения: 03.05.2007 10:48
Vitus_Bering
Так трудно макрос записать, чтоб посмотреть какой формат будет присвоен ячейке при ручном выборе?

Код:
Activecell.NumberFormat = "ddd/ [$-FC19]d mmmm yyyy"
Автор: pila007
Дата сообщения: 03.05.2007 10:54
спасибо AndVGri
вот еще одна задачка:
Ввести массив A(N,M).Найти сумму элементов двух главных диагоналей.
как там найти сумму двух главных диагоналей
Автор: Vitus_Bering
Дата сообщения: 03.05.2007 11:00
AndVGri
Благодарю.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

Предыдущая тема: Написание своего HyperTerminal для считывания данных


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.