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

» Excel VBA (часть 2)

Автор: ol7ca
Дата сообщения: 24.10.2007 17:42
Olive77

Спасибо.

в своем примере я заменил вставку формулы на вставку значения
а как можно в ячейку к значению добавить формулу
чтобы в ячейке было видно, например: 285*А$8?
Автор: CEMEH
Дата сообщения: 24.10.2007 19:31
Вопрос:
На форме есть MultiPag из, допустим, трех вкладок: "первая", "вторая", "третья" Каким образом запустить выполнение кода при нажатии на какую либо вкладку?
Например, после выбора "третья" (page3) выполнить код:
For X=1 to 100
Next X



Olive77 СПАСИБО ЗА ОТВЕТ!
Автор: Olive77
Дата сообщения: 24.10.2007 19:50
ol7ca
.FormulaR1C1 -> .Formula

Добавлено:
CEMEH
Private Sub MultiPage1_Click(ByVal Index As Long)
....
End Sub
Автор: ol7ca
Дата сообщения: 24.10.2007 20:37
Olive77


Цитата:
.FormulaR1C1 -> .Formula


Куда это записать?

Range("M9").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(" & Chr(34) & "Commissions" & Chr(34) & ",'[Budget.xls]Statement'!R1C1:R100C107,102,FALSE)"
Selection.Copy
Range("M9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Автор: Olive77
Дата сообщения: 24.10.2007 20:50
ol7ca
ActiveCell.Formula="=285*А$8"
Автор: ol7ca
Дата сообщения: 24.10.2007 21:15
Olive77

Я прошу прощения, но мне нужно взять результат (число "Х"), полученный в вышеприведенном примере и вставить в ячейку "=Х*А$8"
Автор: Olive77
Дата сообщения: 24.10.2007 21:38
ol7ca
а поэкспериментировать?


x = Application.WorksheetFunction.VLookup("Communications", Workbooks("Budget.xls").Worksheets("Statement").Range("A1:CZ32"), 102, False)
ActiveCell.Formula = "=" & x & "*A$8"
Автор: ol7ca
Дата сообщения: 25.10.2007 00:34
Olive77

Цитата:
Спасибо.

я бы год над этим экспериментировал-))
Автор: Ddashevskiy
Дата сообщения: 25.10.2007 06:41
Добрый день уважаемые ветераны интелектуального труда , Вопрос:

Есть объединенная область ячеек А1-А6. в этой области записанно некоторе слово, как мне обратиться к этой области по одной ячейке (по А3 или по А6), чтоб я смог скопировать это слово в переменную? Пытаясь сделать так

dim s as string

s = cells (3,1).value


Ровно как и

s = cells (3,1)

Ровно как и

cells (3,1).select
s= selection.value

Я ничего не добился

Неужели только выделяя всю обьединенную область, можно будет добраться до слова в этой области?
Автор: CEMEH
Дата сообщения: 25.10.2007 07:49
Ddashevskiy
В ЛЕВОМ верхнем углу есть поле адрес.
Поставь курсор, сделай активной объед. ячейку и посмотри адрес.
Как правило будет первая левая ячейка.
Т е если объеденить B1:B5 то адрес будет B1

или
S=Range("B1")
или
S=Range(cells(2,1),cells(2,1))

или, наверное, так:
S=cells(2,1)

Объяснил как сумел, я еще не "ветеран" )))
Автор: Ddashevskiy
Дата сообщения: 25.10.2007 07:52
Условие вопроса, было чтоя не могу выбирать к какой row в диапазоне обращаюсь, могу выбирать только одну строку из диапазона
Автор: CEMEH
Дата сообщения: 25.10.2007 16:07
Ddashevskiy
Повторюсь, что я не "ветеран", но на мой взгляд после объединения а1-а5 даннные будут находиться в а1...
Стоит попытаться записать в какую-нить другую ячейку этого объед. диапазона
cells(1,3)="asdfghjjk"
и посмотреть что из этого выйдет.
А потом попробовать ее прочитать
MsgBox range("A3")

Автор: ol7ca
Дата сообщения: 25.10.2007 16:27
Подскажите кто-нибудь, где найти тему по форматированию: как задать шрифт, его размер, цвет и прочее.
В частности, мне нужно вывести результат (число) жирным красным цветом.
Спасибо.
Автор: maratino
Дата сообщения: 25.10.2007 18:14
Olive77
Может вы подскажите код textbox который и числами умеет работать
этот код с текстом работает, а с цифрами никак

вот код, который текст признает а цифры нет

Private Sub TextBox1_Change()
If TextBox1.Text <> "" Then
Range("A2").AutoFilter Field:=1, Criteria1:="=" & TextBox1.Text & "*", Operator:=xlAnd
Else
Range("A2").AutoFilter Field:=1
End If
End Sub

Private Sub TextBox2_Change()
If TextBox2.Text <> "" Then
Range("B2").AutoFilter Field:=2, Criteria1:="=" & TextBox2.Text & "*", Operator:=xlAnd
Else
Range("B2").AutoFilter Field:=2
End If
End Sub
Автор: CEMEH
Дата сообщения: 25.10.2007 21:07
ol7ca
Для таких задач удобно пользоваться записью макросов
Сервис - макрос- начать запись
Все, что мы делаем на экране то и запишется в код VBA
Потом останавливаем запись, далее Сервис -макрос - изменить и вуаля:

Range("A1").Select' это мы выделили ячейку
Selection.Font.ColorIndex = 3'Сделали ей цвет красным
Selection.Font.Bold = True' и шрифт жирным.

пс
Может спецы еще чего поскажут?
Автор: aks_sv
Дата сообщения: 25.10.2007 21:21
Как сделать, чтобы при открытии формы "календарь" отображалось первое число предыдущего месяца?
Автор: Olive77
Дата сообщения: 25.10.2007 21:49
maratino
ну, так я уже давно ответил, что мог
http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=8273&start=920
если данные для фильтрации находятся в колонке "А", то добавьте новую колонку, в которой данные из соотвественной ячейки будут пребразованы в текст (используем англ. функцию text())
А затем уже к этой новой колонке применяйте свой фильтр.

Но может, кто чего получше предложит.
Автор: Oyger
Дата сообщения: 26.10.2007 11:48
Люди. Нужна помощь с автофильтром.
На листе есть массив.
Столбец A содержит даты формата ДД.ММ.ГГГГ
Нужно макросом сделать автофильтр в интервале дат. Пишу:
Selection.AutoFilter Field:=1, Criteria1:=">=" & Begin_date , Operator:=xlAnd, Criteria2:="<=" & End_Date
Автофильтр отрабатывает, то ничего не показывается. Условие в фильтре задано. Вхожу в условие и просто жму "ОК" и все отображается как надо.
Переменные Begin_Date и End_Date имеют формат "Date".
В чем может быть проблема?
Автор: aks_sv
Дата сообщения: 26.10.2007 12:55

Цитата:
Как сделать, чтобы при открытии формы "календарь" отображалось первое число предыдущего месяца?


Вопрос снимаю:

Код: Private Sub UserForm_Initialize()
If Month(Now) = 1 Then
m = 12
y = Year(Now) - 1
Else
m = Month(Now) - 1
y = Year(Now)
End If
Calendar1.Value = "01." & m & "." & y
End Sub
Автор: Oyger
Дата сообщения: 26.10.2007 13:38
aks_sv

Все твое:

Цитата:
If Month(Now) = 1 Then
m = 12
y = Year(Now) - 1
Else
m = Month(Now) - 1
y = Year(Now)
End If
Calendar1.Value = "01." & m & "." & y


Можно заменить следующим:
Calendar1.Value = DateSerial(Year(DateAdd("m", -1, Date)), Month(DateAdd("m", -1, Date)), 1)
Автор: Vadzim2003
Дата сообщения: 26.10.2007 15:27
Люди,
помогите исправить файлик.... уже всю голову сломал

В сей форме CheckBoxes открывают новые боксы. Первые несколько работают замечательно, после двух-трех кликов - листбоксы перестают быть активными. То есть кликаю по ним сколько угодно, а они не работают.

Странно, но спасает в этом случае переход на соседний Лист и обратно - тогда опять боксы включаются.


Спасибо.

Как можно сделать этот листбокс активным все время?

Private Sub AddButton2_Click12()

Dim Z2 As Integer
Dim Z3 As Integer
Dim bInserted9 As Boolean


With ListBox_CC
UserForm1.ListBox_CC.Selected(0) = True

For Z2 = 0 To .ListCount - 1
bInserted9 = False
If .Selected(Z2) = True Then
bInserted9 = False
For Z3 = 0 To ListBox_CC2.ListCount - 1
If ListBox_CC2.List(Z3) > ListBox_CC.List(Z2) Then
Exit For
End If
Next Z3
ListBox_CC2.AddItem ListBox_CC.List(Z2), Z3
End If
Next Z2
End With


End Sub

Private Sub AddButtonCC_Click()

Dim K As Integer
Dim L As Integer
Dim bInserted1 As Boolean

With ListBox_CC
For K = 0 To .ListCount - 1
bInserted1 = False
If .Selected(K) = True Then
bInserted1 = False
For L = 0 To ListBox_CC2.ListCount - 1
If ListBox_CC2.List(L) > ListBox_CC.List(K) Then
Exit For
End If
Next L
ListBox_CC2.AddItem ListBox_CC.List(K), L
End If
Next K
End With

End Sub
Автор: ol7ca
Дата сообщения: 26.10.2007 17:19
CEMEH

Спасибо.
Автор: aks_sv
Дата сообщения: 27.10.2007 08:23
Oyger
Спасибо.
А на второй вопрос нет предложений?
Цитата:
Другой вопрос: как вставить в несколько не смежных ячеек выбранную дату на форме "календарь"?

Автор: Oyger
Дата сообщения: 27.10.2007 10:45
aks_sv
Я не въехал, что это за форма "календарь". Поэтому не представляю как она выглядит. А как давать совет не предстовляя о чем...
Автор: aks_sv
Дата сообщения: 27.10.2007 15:17

Цитата:
Я не въехал, что это за форма "календарь". Поэтому не представляю как она выглядит. А как давать совет не предстовляя о чем...

Не так выразился: на форме элемент управления календарь (в Excel 2003 это Календарь 11.0)

Добавлено:
ссылка
Автор: CEMEH
Дата сообщения: 27.10.2007 19:59
ВОПРОС:

На форму нужно поставить восемь календарей
"Штатные" слишком большие,
Может использовать ComboBox Для даты и месяца? Но тогда надо как то реализовать проверку на корректность даты типа 31 февраля.

Может есть какие нить еще календарики? тоненькие Или всплывающие? Или есть возможность использовать ComboBox с проверкой?
Автор: dneprcomp
Дата сообщения: 27.10.2007 20:50
CEMEH
Используй DTPicker или MonthView, а не Calendar. Оба сидят в mscomct2.ocx.
Автор: aks_sv
Дата сообщения: 27.10.2007 21:31
dneprcomp

Цитата:
Используй DTPicker или MonthView, а не Calendar. Оба сидят в mscomct2.ocx.

В Excel 2003 их не нашел, может по другому обзываются?
Автор: dneprcomp
Дата сообщения: 27.10.2007 21:53
aks_sv
mscomct2.ocx ставится с Visual Studio 6
http://support.microsoft.com/kb/297381
Автор: CEMEH
Дата сообщения: 28.10.2007 00:25
dneprcomp
Спасибо! С календарем поковыряюсь.

Возник еще вопрос по ListBox
Он состоит из 18 строк и 9 столбцов. С возможностью выделения нескольких значений (поставить галки)
Использоваться он будет на форме как некая информационная таблица. Каким образом в коде VBA выделить, скажем 3,4,5,6 и 7 строки в ListBox? Если ставлю галки на этапе разработки то при запуске программы они исчезают.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

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


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