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

» Excel VBA (часть 2)

Автор: Pravoved90
Дата сообщения: 03.10.2008 15:17
SAS888
Благодарю за ответ. Попробую чуть позже. как и что получилось - отпишусь))
Автор: Denkxx
Дата сообщения: 03.10.2008 15:24
Нашел вариант

Код: If CheckBox1 = True Then
Cells(NextRow, 4) = "носки"
End If
Автор: q1wed
Дата сообщения: 04.10.2008 06:32
Denkxx Select Case должен подойти. Вместо "Макрос" вставляешь команды, которые нужно выполнить, вместо "слово1" вставаялешь условия, это могут быть дипазоны сравнения, отдельные значения и тд.
Автор: Maxximus75
Дата сообщения: 04.10.2008 09:53
Программа - учет рабочего времени

1. Книга разбита по листам (месяцы)
2. При открытии формы календаря и выборе даты - переход на лист с выбранным месяцем и днем (выделяется ячейка с числом месяца к примеру Е3)

существует несколько видов отсутствия (пример: о - отпуск, к - командировка, б - болен)
пример:
1 2 3 4 5 6 7 8
Петров Н.П. о о о б б
Иванов С.Н. к к к к к
Сидров П.С. о о о б б

Вопрос:
Как на VBA выбрать вид отсутсвия и при совпадении например о = true выбирались фамилии совпавших и переносились на другой лист - "докладная записка"
т.е. Петров и Сидоров должны быть скопированы в докладную записку. (на 1 число)


чуйствую ответ где то рядом но никак не могу допетрить, не сочтите за труд!
Автор: SERGE_BLIZNUK
Дата сообщения: 05.10.2008 09:07
Maxximus75
думаю, что использование формы спасёт отца русской демократии ;-)
на форме ComboBox - в нём Ваши варианты - по нажатию на ОК формируется отчёт..

и ещё, всегда лучше видеть пример перед глазами! - ну не ленитесь же делать файлы, в которых образцы Ваших данных (подчёркиваю - образцы, настоящие данные никому, кроме Вас не нужны). И в этом же файле что и как Вы хотите получить.. ;-)
Автор: kolyan_kolyanich
Дата сообщения: 06.10.2008 08:38
Подскажите, пожалуйста, есть ли возможность в excel программно распечатать скрытую страницу?
Автор: Denkxx
Дата сообщения: 06.10.2008 09:43
q1wed
Спасибо. Это интересный способ. Только не могу в нем разобраться

Что значит Select Case Range("A1").Value? Я вписал вместо этого Cells(NextRow, 4). Скорее всего это не правильно.
Вот код:

Код: Private Sub CommandButton1_Click()
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Cells(NextRow, 1) = UserForm1.TextBox1.Text
Cells(NextRow, 2) = UserForm1.TextBox2.Text
Cells(NextRow, 3) = UserForm1.TextBox2.Text

Dim g(3)
Select Case Cells(NextRow, 4)
Case "CheckBox1 = True"
g [1] = "Носки"
Case "CheckBox2 = True"
g [2] = "Трусы"
Case "CheckBox3 = True"
g [3] = "Майки"
End Select
v = g(1) + g(2) + g(3)
Cells(NextRow, 4) = v



' Очистка элементов управления для следующих записей
TextBox1.Text = " "
TextBox2.Text = ""
TextBox3.Text = ""
CheckBox1 = False
OptionUnknown = True
TextBox1.SetFocus
End Sub
Автор: SAS888
Дата сообщения: 06.10.2008 12:11
Denkxx
А не проще организовать цикл по всем (или по нужным) элементам управления формы, и в ячейку листа выводить все сцепленные Controls(i).Caption, если это CeckBox и если он True.
Автор: Denkxx
Дата сообщения: 06.10.2008 12:34
Разобрался со всем. Все получилось. Сделал с помощью Collection из этой же темы.
Вот может пригодится кому.

Код: Private Sub CommandButton1_Click()
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Cells(NextRow, 1) = UserForm1.TextBox1.Text
Cells(NextRow, 2) = UserForm1.TextBox2.Text
Cells(NextRow, 3) = UserForm1.TextBox2.Text

Dim pCheckCol As New Collection

Dim pCheck As MSForms.Control
For Each pCheck In Me.Controls
If TypeOf pCheck Is MSForms.CheckBox Then pCheckCol.Add pCheck
Next pCheck

produkti = Array("", " носки", " трусы", " майки")
Dim g(3)
For x = 1 To pCheckCol.Count
If pCheckCol(x).Value Then g(x) = produkti(x)
v = v + g(x)
Next

Cells(NextRow, 4) = v

' Очистка элементов управления для следующих записей
TextBox1.Text = " "
TextBox2.Text = ""
TextBox3.Text = ""
For i = 1 To pCheckCol.Count
If pCheckCol(i).Value Then pCheckCol(i) = False
Next
CheckBox1 = False
OptionUnknown = True
TextBox1.SetFocus
End Sub
Автор: mistx
Дата сообщения: 06.10.2008 15:45
Denkxx

Цитата:
Dim pCheckCol As New Collection

Dim pCheck As MSForms.Control
For Each pCheck In Me.Controls
If TypeOf pCheck Is MSForms.CheckBox Then pCheckCol.Add pCheck
Next pCheck

produkti = Array("", " носки", " трусы", " майки")
Dim g(3)
For x = 1 To pCheckCol.Count
If pCheckCol(x).Value Then g(x) = produkti(x)
v = v + g(x)
Next

Cells(NextRow, 4) = v


случайно не остался файлик с примером данного кода и формами?
Автор: Denkxx
Дата сообщения: 06.10.2008 21:13
mistx
http://ifolder.ru/8443309
Автор: SAS888
Дата сообщения: 07.10.2008 05:54
Denkxx
А я бы вместо
Цитата:
Dim pCheckCol As New Collection

Dim pCheck As MSForms.Control
For Each pCheck In Me.Controls
If TypeOf pCheck Is MSForms.CheckBox Then pCheckCol.Add pCheck
Next pCheck

produkti = Array("", " носки", " трусы", " майки")
Dim g(3)
For x = 1 To pCheckCol.Count
If pCheckCol(x).Value Then g(x) = produkti(x)
v = v + g(x)
Next

Cells(NextRow, 4) = v

Применил бы

Код: Dim v As String, pCheck
For Each pCheck In Me.Controls
If Left(pCheck.Name, 8) = "CheckBox" Then If pCheck = True Then v = v & pCheck.Caption & ", "
Next
Cells(NextRow, 4) = Left(v, Len(v) - 2)
Автор: ALYHKA_1
Дата сообщения: 07.10.2008 10:16
Есть небольшая астрологческая программка в Excel - при работе с ней, Excel пишет,
когда нажимаешь начало расчетов -

Run-time error
Нельзя установить свойство ReadingOrder класса Rectangle

Что можно предпринять?
Заранее благодарю за помощь!
Автор: MaximuS G
Дата сообщения: 07.10.2008 10:57
Подскажите, может кто знает:
есть книга с листами, макросом копирую все листы по очереди и сохраняю отдельной книгой... почему то из 40 книг 3 сохраняет без расширения .xls что приводит к необходимости вручную дописывать расширение ... ??
Автор: Denkxx
Дата сообщения: 07.10.2008 12:37

Цитата:

Код: Dim v As String, pCheck
For Each pCheck In Me.Controls
If Left(pCheck.Name, 8) = "CheckBox" Then If pCheck = True Then v = v & pCheck.Caption & ", "
Next
Cells(NextRow, 4) = Left(v, Len(v) - 2)
Автор: rein9
Дата сообщения: 07.10.2008 13:32
На useform в lable отображается количество обработанных сток в файле (своего рода счетчик), число постоянно меняется. Пока окно Excel активно счетчик меняется, если активным сделать другой обьект рабочего стола счетчик замирает и обновляется только после завершения работы кода программы. Как исправить? Подскажите.
Автор: Bredun
Дата сообщения: 07.10.2008 14:06
ALYHKA_1
Знающие люди подтвердили - ошибка, скорее всего, связана с отсутствием необходимых библиотек в системе.
Надо поспрашивать и поискать там, откуда у Вас этот документ.
Автор: ALYHKA_1
Дата сообщения: 07.10.2008 14:17
Bredun

Благодарю.
Автор: MaximuS G
Дата сообщения: 07.10.2008 15:16
По-поводу моего вопроса вверху есть варианты ?
Подскажите тоже такой вопрос может кто знает где есть хороший форум по outlook программированию ?
Автор: mistx
Дата сообщения: 07.10.2008 17:42
Denkxx
спасибо.

q1wed
To All

Возвращаясь к той задачи, где необходимо было проставить О под суб. и воскр.
макрос сделал, но он мне приставляет О, в строках где есть текст.
то бишь я начал
m_row = ActiveCell.SpecialCells(xlLastCell).Row
m_col = ActiveCell.SpecialCells(xlLastCell).Column

m_rr = "A1:" & "S" & CStr(m_row)
With Range(m_rr)
итд

как мне сделать так чтобы он ставил символы на определенное кол-о строк вниз и столбцов?

Автор: SERGE_BLIZNUK
Дата сообщения: 07.10.2008 20:08
ALYHKA_1

Цитата:
Run-time error
Нельзя установить свойство ReadingOrder класса Rectangle

выложите куда-нибудь эту вашу программку... (хотя бы на тот же форум PlanetaExcel :-))
или ссылочку дайте, откуда скачали (только не надо посылать на сайт - прямую ссылку, плииз...
попытаюсь глянуть, что требуется...
Автор: ALYHKA_1
Дата сообщения: 07.10.2008 21:50
SERGE_BLIZNUK

Благодарю за внимание - вот эта ссылочка

Еще одна программа, для оценки натальной карты, по Шестопалову.
http://narod.ru/disk/2916158000/vision.exe.html

тот, кто её выложил, сказал, что она читается только в Excel 2003, а у меня 2007.
Автор: SAS888
Дата сообщения: 08.10.2008 09:41
Denkxx

Цитата:
Когда ничего не выбранно, то выдает ошибку. как это поправить?

Естественно. Нужно вставить проверку: вместо

Код: Cells(NextRow, 4) = Left(v, Len(v) - 2)
Автор: Tormozilka2000
Дата сообщения: 08.10.2008 11:02
Две недели мучаюсь.Вроде бы близок к решению, но "чего-то в супе не хватат..."

Помогите ПОЖАЛУЙСТА!

Как скопировать множественное выделение НЕПОСЛЕДОВАТЕЛЬНЫХ ячеек(только значения) и вставить ЕГО в множественное выделение НЕПОСЛЕДОВАТЕЛЬНЫХ ячеек, НО с другими адресами. Т.е допустим rangeA5:A8 c одного листа в range C40:C43.

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

ПРЕМНОГО ПРИЗНАТЕЛЕН за помощь.
Автор: MaximuS G
Дата сообщения: 08.10.2008 12:40
подскажите, как программно заменить ячейки в который ошибка "#Н/Д" на допустим 0 ?
вообще, какое значение ячейки в таком случае ?
Автор: Denkxx
Дата сообщения: 08.10.2008 13:27
SAS888, спасибо. все получилось.
Еще вопрос. Хочется организовать счетчик выбранных чекбоксов. Т.е. человек кликает на чекбокс а в лэйбле снизу пишется "выбрано: 1", кликает еще и пишется "выбрано: 2".
Если я сделаю это по действию кнопки, то это не будет работать так как надо. Как в реалтайме это сделать?
Автор: IGORds
Дата сообщения: 08.10.2008 13:31

Cells("номер строки", "номер столбца").Text в этом случае возвращает значение "#Н/Д" - дальше, я думаю, дело техники;)
Автор: MaximuS G
Дата сообщения: 08.10.2008 14:03
У меня уже целая куча вопросов... плз хелп
Вот новый:
Как сюда ActiveCell.FormulaR1C1 = "=AVERAGE(R[-5] C:R[-1]C)" вместо конкретной цифры вствить переменную ?? Например что б вместо 5 он читал переменную со значением 5 ??... Ну и вопросы без ответов, которые я пособирал сверху
СПС

- Подскажите тоже такой вопрос может кто знает где есть хороший форум по outlook программированию ?

- Есть книга с листами, макросом копирую все листы по очереди и сохраняю отдельной книгой... почему то из 40 книг 3 сохраняет без расширения .xls что приводит к необходимости вручную дописывать расширение ... ?? подскажите, как программно заменить ячейки в который ошибка "#Н/Д" на допустим 0 ?
вообще, какое значение ячейки в таком случае ?

- Подскажите, как программно заменить ячейки в который ошибка "#Н/Д" на допустим 0 ?
вообще, какое значение ячейки в таком случае ?
Автор: IGORds
Дата сообщения: 08.10.2008 15:30
Denkxx


Public vIbrano

Private Sub CheckBox1_Change()
vIbrano = vIbrano & " " & CheckBox1.Caption
Label1.Caption = vIbrano
End Sub

Private Sub CheckBox2_change()
vIbrano = vIbrano & " " & CheckBox2.Caption
Label1.Caption = vIbrano
End Sub
Автор: Denkxx
Дата сообщения: 08.10.2008 15:59
IGORds

Идею понял, но как сделать это проще? У меня 55 чекбоксов и если для каждого это писать, то жопа будет))

я попробовал так

Код: Public vIbrano

Private Sub CheckBox1_Change()

Dim pCheckCol As New Collection
Dim pCheck As MSForms.Control
For Each pCheck In Me.Controls
If TypeOf pCheck Is MSForms.CheckBox Then pCheckCol.Add pCheck
Next pCheck

col = 0

For x = 1 To pCheckCol.Count
If pCheckCol(x).Value Then
col = col + 1
Next
vIbrano = "Выбрано: " & col
Label1.Caption = vIbrano
End Sub

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

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


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