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

» Excel VBA (часть 3)

Автор: Drazhar
Дата сообщения: 28.05.2010 10:06
Solenaja
Application.DisplayAlerts = False
Не помгает?
Автор: Solenaja
Дата сообщения: 28.05.2010 10:14
Drazhar
нет, не помогает
Автор: Drazhar
Дата сообщения: 28.05.2010 10:21
Solenaja
ThisWorkbook.CheckCompatibility = False
Может так?
Автор: Solenaja
Дата сообщения: 28.05.2010 10:24
Drazhar
сорри - работает!
просто Application.DisplayAlerts = False помещался после ActiveWorkbook.Close.
надо было поставить после Application.ScreenUpdating = False
Автор: Drazhar
Дата сообщения: 28.05.2010 10:27
Solenaja
ну вот и отлично)))
Автор: Solenaja
Дата сообщения: 28.05.2010 10:28
тогда ещё встречный вопрос, в результате этого проверка совместимости выполняется в фоне или нет?
Автор: Drazhar
Дата сообщения: 28.05.2010 10:29
Solenaja
наверное да. Точно не скажу- компания, в которой я работая д сих пор сидит на 2003 офисе и на 2007 переход не планируется
Автор: Solenaja
Дата сообщения: 28.05.2010 10:33
Drazhar
единственное меня смущает, что файлы на выходе в результате выполнения макроса в Excel 2003 получаются размером меньшим, чем когда это выполняется в 2007/2010

p.s. как бы 2010 мне больше нравится и работает заметно быстрее 2007
Автор: vlth
Дата сообщения: 28.05.2010 11:58

Цитата:
2010 мне больше нравится и работает заметно быстрее 2007


Если 2010 будет быстрее 2003, будет неплохо. О 2007-м этого, к сожалению, не скажешь.

Увеличение производительности в Excel 2010
Автор: psiho
Дата сообщения: 01.06.2010 09:31
Вопрос к знатокам. При наведении мышки на ячейку с примечанием спустя некоторое время это примечание становится видимым. А можно ли перехватить это действие. И, вообще, как отслеживать перемещение мышки в Excel 2003?
Автор: vlth
Дата сообщения: 01.06.2010 17:06
psiho

Цитата:
И, вообще, как отслеживать перемещение мышки в Excel 2003?

Скажем, по таймеру (реализуется с пом. функций API).
Автор: ErrorEd88
Дата сообщения: 03.06.2010 01:52
Нужно подправить vba скрипт в excel. При запуске выдаётся окошко с ошибкой: compile error
can't find project or library

http://slil.ru/29260456
Думаю, скорее всего, нужно правильно объявить переменную con_Window... А, горит!
Автор: vlth
Дата сообщения: 03.06.2010 07:54
ErrorEd88, у Вас код создания, обновления и удаление панели "Обучающая система" размещён в модуле класса.
Переместите весь код, связанный с этими операциями, в стандартный модуль.
Процедуры модуля вызывайте из процедур обработки событий книги Open и BeforeClose.
Автор: filemoto
Дата сообщения: 03.06.2010 18:42
Народ, а как получить "видимое" количество строк?
Суть такая, есть 1000 записей, после применения автофильтра, стало отображатся 300 записей. Как получить значение, что видно на листе только 300 записей?
Пробовал и UsedRange.Rows.Count и Cells.Rows.Count - постоянно выдаёт общее количество записей(1000).

Автор: ErrorEd88
Дата сообщения: 03.06.2010 19:57
Спасибо, vlth, сейчас попробую...
Автор: Hugo121
Дата сообщения: 03.06.2010 22:41

Цитата:
Как получить значение, что видно на листе только 300 записей?


Код: x = UsedRange.Range("A1:A1000").SpecialCells(xlCellTypeVisible).Count
Автор: pushInka
Дата сообщения: 04.06.2010 08:24
Здравствуйте! Помогите, пожалуйста, написать макрос такой, чтобы он проверял значения в предыдущих ячейках строки, и в зависимости от них вставлял нужную формулу в последнюю. Таблица наглядно выглядит так:

Заранее спасибо!)
Автор: vlth
Дата сообщения: 04.06.2010 09:26
pushInka,

Сформулируйте, что должно быть в последней ячейке?
На какое содержимое нужно проверять ячейки строки?
Автор: SAS888
Дата сообщения: 04.06.2010 09:55
filemoto
Hugo121
Автофильтр не обязательно должен начинаться с 1-й строки листа. Если требуется получить именно количество отфильтрованных строк, то правильно так:

Код: If ActiveSheet.FilterMode Then x = ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlVisible).Count
Автор: pushInka
Дата сообщения: 04.06.2010 13:49
vlth,


Цитата:
что должно быть в последней ячейке?

какая-нибудь сумма (например, 2+6, 7+9 и т.п.)

Цитата:
На какое содержимое нужно проверять ячейки строки?

на числа 1, 2, 3.
Автор: Hugo121
Дата сообщения: 04.06.2010 14:20
Да, pushInka не программист...
Сформулируйте тогда точно, какие 6 формул должны соответствоать 6-и комбинациям этих чисел. Попарно!
Автор: pushInka
Дата сообщения: 05.06.2010 02:47
Хахах была бы я программистом, стала бы спрашивать?...
числа изменяются от 1го до 3х, следовательно комбинаций будет более 6ти
Как я вижу этот код:
a(i)-ячейка строки,
if a[1]=1, a[2]=1, a[3]=1 then a[4]=4+5
if a[1]=1, a[2]=1, a[3]=2 then a[4]=1+14
if a[1]=1, a[2]=1, a[3]=3 then a[4]=3+7
if a[1]=2, a[2]=1, a[3]=1 then a[4]=45+20
if a[1]=2, a[2]=1, a[3]=2 then a[4]=7+13
if a[1]=2, a[2]=1, a[3]=3 then a[4]=2+3
if a[1]=3, a[2]=1, a[3]=1 then a[4]=15+4
и т.д.
в a[4] вставляется формула, можете её заменить вообще числами любыми,
например так:
if a[1]=1, a[2]=1, a[3]=1 then a[4]=1
if a[1]=1, a[2]=1, a[3]=2 then a[4]=2
if a[1]=1, a[2]=1, a[3]=3 then a[4]=3
if a[1]=2, a[2]=1, a[3]=1 then a[4]=4
if a[1]=2, a[2]=1, a[3]=2 then a[4]=5
if a[1]=2, a[2]=1, a[3]=3 then a[4]=6
if a[1]=3, a[2]=1, a[3]=1 then a[4]=7
и т.д.
я вставлю потом то, что мне нужно.

ячейка отвечает за свою личную цифру, поэтому 1, 1, 2 не тоже самое что 1, 2, 1.
Автор: Hugo121
Дата сообщения: 05.06.2010 12:46
Да, что-то я сам тупанул, каких 6 вариантов, это же не варианты перестановки 3-х цифр... Сколько всего - не знаю, я комбинаторику не изучал... но вероятно много.
Что-то у Вас один пример с другим не совпадает - то строки, то столбцы. Ну да ладно, может так (по первому варианту, не все варианты ):


Код: Sub tt()
Select Case [a1] & [b1] & [c1]
Case 111
[d1].Formula = "=4+5"
Case 112
[d1].Formula = "=1+14"
Case 122
[d1].Formula = "=3+10"
Case Else
[d1].Formula = "X"
End Select
End Sub
Автор: pushInka
Дата сообщения: 05.06.2010 13:28
Выполняется , но только для первой строки...
Case 111 - а как он работает, если вдруг в ячейке будет двузначное число?

хотя уже что-то))) спасибо, Hugo121, что помогаете мне!
Автор: Hugo121
Дата сообщения: 05.06.2010 14:21
Как это двузначное, Вы же сказали - "числа изменяются от 1го до 3х"
Вообще-то правильнее будет Case "111" - т.е. анализируется строка, составленная из значений трёх ячеек.

Так Вам надо проставить формулы по всем строкам с числами?
Осталось выяснить, сколько их будет, и это число поставить вместо 10:

Код: Option Explicit

Sub tt()
Dim i As Long
For i = 1 To 10
Select Case Cells(i, 1) & Cells(i, 2) & Cells(i, 3)
Case "111"
Cells(i, 4).Formula = "=4+5"
Case "112"
Cells(i, 4).Formula = "=1+14"
Case "122"
Cells(i, 4).Formula = "=3+10"
Case Else
Cells(i, 4).Formula = "X"
End Select
Next
End Sub
Автор: pushInka
Дата сообщения: 05.06.2010 14:39
О, спасибо! Работает))) То, что нужно!
Большое спасибо!!
Автор: Hugo121
Дата сообщения: 05.06.2010 14:51
Гляньте в приват ( а то счас наговорим...)
Концепция поменялась (раз теперь уже работает ), можно без привата

Вот например - в зависимости от цифр в этих ячейках (но не от их сочетания) формируется формула. Может это надо?

Код: Sub tttt()
Dim i As Long
Dim t1 As String, t2 As String, t3 As String
On Error Resume Next
For i = 1 To 10
t1 = "": t2 = "": t3 = ""
Select Case Cells(i, 1)
Case "1"
t1 = "G1"
Case "2"
t1 = "G2"
Case "3"
t1 = "G3"
End Select

Select Case Cells(i, 2)
Case "1"
t2 = "H1"
Case "2"
t2 = "H2"
Case "3"
t2 = "H3"
End Select

Select Case Cells(i, 3)
Case "1"
t3 = "I1"
Case "2"
t3 = "I2"
Case "3"
t3 = "I3"
End Select

Cells(i, 4).Formula = "=" & t1 & "+" & t2 & "+" & t3

Next

End Sub
Автор: pushInka
Дата сообщения: 05.06.2010 15:28
А не, мне нужно именно сочетание) как вы ранее писали код, но этот тоже можно где-нить приспособить
...посмотрите в привате письмо скинула
Автор: loveheart
Дата сообщения: 05.06.2010 17:32
VBA. необходимо таблицу в Excel редактировать и просматривать через форму


Цитата:
На Рабочем листе создайте таблицу Справочник сотрудников с полями Табельный номер, Фамилия Имя Отчество, Год рождения, Образование, Дата приема на работу. Заполните таблицу (10 строк). На новом листе создайте ряд кнопок для работы с таблицей. Пользователь должен иметь возможность просматривать данные, перемещаться по записям, добавлять новые, удалять, редактировать и сохранять изменения, а также печатать в отформатированном виде выходной документ, содержащий список сотрудников, имеющих высшее образование. Для организации диалога воспользуйтесь листом диалога UserForm. При создании диалога учтите, что значение поля «Образование» выбирается из списка, а дата приема на работу совпадает с текущей датой. Разработайте процедуру печати списка всех сотрудников, конкретного сотрудника по Табельному номеру.


просмотрел кучу примеров, знаний не хватает...а сроки горят.//

помогите плиз


да мне бы сперва хотя бы понять, как данные из таблиы в форму загнать...дальше сам буду пробовать...просто у меня сейчас какой то затор возник...никак не могу найти решение ((
Автор: Hugo121
Дата сообщения: 05.06.2010 18:29

Цитата:
да мне бы сперва хотя бы понять, как данные из таблиы в форму загнать...дальше сам буду пробовать...просто у меня сейчас какой то затор возник...никак не могу найти решение ((


Заполняем комбобокс, аналогично и другое можно заполнить, аналогично по клику на кнопке или выбору из списка и т.д.:

Код: Private Sub UserForm_Initialize()
With Me.ComboBox1
.List = ActiveWorkbook.Sheets("Лист1").Range("A2:A" & _
Cells(Cells.Rows.Count, 1).End(xlUp).Row).Value
.ListIndex = 0 'отображает 1-й элемент в списке
End With
End Sub

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127

Предыдущая тема: VS 2010


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