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

» Excel VBA

Автор: The okk
Дата сообщения: 30.11.2006 17:02
AndrJUSHKA
Это ошибка не VBA, а Excel. У тебя VBA ругается именно на эту строку? Может, попробовать Len(Cells(i,1)) = 0 вместо Cells(i, 1) = ""?
Автор: AndrJUSHKA
Дата сообщения: 30.11.2006 17:10
The okk
Спасибо
Автор: The okk
Дата сообщения: 01.12.2006 06:46
какой тип параметров Before и After у метода add объекта Worksheet? - Обычно использовал имя листа (string), а теперь Excel на него ругается (method failed). Если вместо имени указываю сам лист (object), он уже не ругается, но у меня серьезные подозрения, что лист добавляется при этом с глюком...
Автор: Troitsky
Дата сообщения: 01.12.2006 07:58
The okk
F1
Цитата:
Before Optional Variant. An object that specifies the sheet before which the new sheet is added.

After Optional Variant. An object that specifies the sheet after which the new sheet is added.

Т.е. никак не название листа и не его номер, а только объект - сам лист.

Автор: The okk
Дата сообщения: 01.12.2006 08:15
Troitsky
Набирал в справке в строке поиска "Add Method" - для Worksheet такого метода в справке не нашел . Что ты в строке поиска писал? Еще я не нашел "Codemodule" и "Insertlines" .
Автор: Troitsky
Дата сообщения: 01.12.2006 08:26
The okk

Цитата:
Набирал в справке в строке поиска "Add Method" - для Worksheet

Для листа и нет такого метода - он имеется для коллекции Worksheets

Цитата:
Что ты в строке поиска писал?

В Object Browser найди этот метод и нажми <F1>.
Автор: The okk
Дата сообщения: 01.12.2006 08:53
Записываю код обработки ошибок в лист:

Код: With ActiveWorkbook.VBProject. _
VBcomponents("Лист" & Worksheets(ListName).Index).CodeModule
.insertlines .CountOfLines + 1, Code_part1
.insertlines .CountOfLines + 1, code_part2
.insertlines .CountOfLines + 1, code_part3
.insertlines .CountOfLines + 1, code_part4
.insertlines .CountOfLines + 1, code_part5
.insertlines .CountOfLines + 1, code_part6
.insertlines .CountOfLines + 1, code_part7
End With
Автор: AndyAdvokat
Дата сообщения: 01.12.2006 16:49
Подсажите такую вещь
присваиваю ячейкам формулы

когда задая так - работает нормально
sheet_Z.Cells(stroka + n, 12) = "=R[0]C[-8]*R[0]C[-1]"

если так
Adress = "=СУММ(R[1]C[0]:R[" + LTrim(str(n)) + "]C[0])"
sheet_Z.Cells(stroka, 6) = Adress

в таблицу вставляется формула - но не считает
появляеться в таблице в ячейке след - #Имя?
там же есть формула которая вставляется
на автомате она не считает - но, если счёлкнуть в ячейке на правку а потом выйти - формула срабатывает и выводит результат

Вопрос: как сделать так, чтоб формула сразу нормально срабатывала.

Автор: Troitsky
Дата сообщения: 01.12.2006 17:10
AndyAdvokat
Запись формул программно нужно производить в их англоязычной форме: замени формулы, записанные по-русски на их английский эквивалент
Список соответствия имен функций в английской и русской версиях Excel

& All
Меня просто убивает, когда какое то значение присваивают классу или объекту, а не их свойствам. Ну не правильно это в общем случае.
Я вот, например, понятия не имею какому свойству класса Range присваивается в этом случае значение:
Цитата:
.Cells(stroka, 6) = Adress
Formula? FormulaR1C1? Value? Value2? Или какому другому?
И, кроме того, могу не догадываться, что в результате этого присвоения желается получить.
Давайте не будем кастрировать код, удаляя из него поясняющие смысл куски!
Автор: AndyAdvokat
Дата сообщения: 01.12.2006 17:40
Troitsky

Сенкс - получилось

По этому:

Цитата:
Меня просто убивает,..... Ну не правильно это в общем случае.
...могу не догадываться, что в результате этого присвоения желается получить.
Давайте не будем кастрировать код, удаляя из него поясняющие смысл куски!


Согласен )) но "я не ещё не волшебник - а только я учюсь..." Потребность на работе заставила.
Автор: The okk
Дата сообщения: 02.12.2006 11:39
Troitsky

Цитата:
Я вот, например, понятия не имею какому свойству класса Range присваивается в этом случае значение:

Value - в свое время специально проверял
Кстати, список соответствия не обязателен. Просто вместо .formula пишешь .formulalocal - чтобы использовать формулы родного языка (в нашем случае - русского, в других странах - хз).
Автор: kramrus
Дата сообщения: 02.12.2006 13:21
Привет всем! Помогиет!
Гдето сбой не пойму. Поиск значения в другой таблице. Когда заканчивается список и остаются пустые яченки пишет Н/Д и выдает ошибку. А нужно чтобы ставил 0 и работал до конца цикла. Вот строка макроса:
If Range("EA" + CStr(i * 6 + 13)) = 0 Or IsErroe(EA"+CStr(i * 6 + 13)+"= True) Then
Если ячейка ЕА =0 или #Н/Д то 0 иначе 1
Буду рад за подсказки.
Автор: Troitsky
Дата сообщения: 02.12.2006 14:00
The okk

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

Ненадежно это Можно ведь и переменные по-русски именовать (целКоличество, например ), но ведь, здравый смвсл подсказывает этого не делать

kramrus
Что ты хотел сказать этим куском кода:
Цитата:
IsErroe(EA"+CStr(i * 6 + 13)+"= True)

?
Автор: kramrus
Дата сообщения: 02.12.2006 14:09
Troitsky
ЕОШИБКА(EA19)=Истина
Автор: The okk
Дата сообщения: 03.12.2006 10:22
Troitsky
про закрепление областей не подскажешь?
Автор: jONES1979
Дата сообщения: 03.12.2006 11:59
The okk

а что не так с закреплением? где сам-то вопрос?
Автор: Troitsky
Дата сообщения: 03.12.2006 13:32
The okk

Цитата:
про закрепление областей не подскажешь?

Рад бы, да сути вопроса не понял

Цитата:
если строка 4 входит в группу строк (например, с 4-й по 6-ю), она войдет в закрепляемую область, а мне этого не надо

т.е. тебе нужно создавая закрепление областей проверять не входят ли в эту область строки из группы строк (полученные с помощью команды "Группа и структура") и если входят то их нужно исключить?


Добавлено:
kramrus
Внятно сформулируй вопрос - перечитал твой пост раз пятнадцать и все равно не понимаю, что ты пытаешься делать и что хочешь получить.
Автор: alex_gall
Дата сообщения: 03.12.2006 19:48
Знатоки, подскажите...

Мне нужно каждый раз при запуске скрипта брать инфу из web-страницы...

То есть мне нужну реализовать команду "Создать web-запрос", где уже будут вбиты адрес и таблица, которую нужно парсить...И это всё каждый раз при запуске скрипта...

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

Вот такие два вопроса...
Автор: jONES1979
Дата сообщения: 04.12.2006 06:16
alex_gall

Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate "www.нужныйадрес.ru "

потом если что, обращаешься к
objExplorer.Document для работы со страницей (см. DOM для Експлорера)
Автор: The okk
Дата сообщения: 04.12.2006 12:11
Я тут спрашивал, что будет, если в теле цикла поменять верхний предел. - Цикл в этом случае все равно идет до того значения, которое было. А что будет с With Selection, если внутри попробовать применить Select?

Добавлено:

Код: Sub СЦЕПИТЬ()
Dim Rowcounter As Long
With Selection
For Rowcounter = 1 To .End(xlDown).Row
If Len(.Cells(Rowcounter, 1)) = 0 Then
Exit For
End If
.Cells(Rowcounter, 1) = .Cells(Rowcounter, 1) & "-" & _
.Cells(Rowcounter, 2)
.Range(.Cells(Rowcounter, 1), .Cells(Rowcounter, 2)).Merge
Next
End With
End Sub
Автор: Yuk
Дата сообщения: 04.12.2006 19:12
The okk

Цитата:
А что будет с With Selection, если внутри попробовать применить Select?

Опять же используется исходое выделение. Попробуй:
Код: Sub test()
With Selection
Debug.Print .Address
.Offset(1, 0).Select
Debug.Print .Address
Debug.Print Selection.Address
End With
End Sub
Автор: biffant
Дата сообщения: 04.12.2006 19:38
Люди добрые, помогите дилетанту VBA

В пределах процедуры сбрасывается статус Recordset'а!

Ниже фрагмент макроса Excel, работающего через DAO с базой Access (режим read-only, все Recordset'ы типа dbOpenSnapshot, объявлены в начале модуля через Public):


Код:
Public Function CalculatePercentAmount(ByVal PercentInDay As Double, ByVal TargetDate As Date) As Currency

' Если Date = 0, считаем сумму всех платежей по кредиту
Dim Result As Currency
Dim LastDate As Date, TempDate As Date, CurrentDate As Date
Dim CurrentRecord As Variant

' Проверка на целостность
If rstPlanPaymentsBody.RecordCount < 1 Then
CalculatePercentAmount = 0
Exit Function
End If
If rstPlanPaymentsPercent.RecordCount < 1 Then
CalculatePercentAmount = 0
Exit Function
End If

' Инициализация значений
Result = 0
If Not (rstFactPaymentsPercent.EOF And rstFactPaymentsPercent.BOF) Then
rstFactPaymentsPercent.MoveLast
rstFactPaymentsPercent.MoveFirst
End If
rstPlanPaymentsPercent.MoveFirst

Do While (Not rstFactPaymentsPercent.EOF)
...
Loop
Автор: Yuk
Дата сообщения: 04.12.2006 19:40
Забавно, что если в With поместить непосредственно объект, а затем изменить его, в With остается старый объект.

Код: Sub test()
Dim c As Range
Set c = Selection
With c
Debug.Print .Address
Set c = .Offset(1, 0)
c.Select
Debug.Print c.Address
Debug.Print .Address
End With

End Sub
Автор: biffant
Дата сообщения: 04.12.2006 20:59
Во время трассировки обновление watch'ей происходит после выполнения очередного оператора, после выполнения обоих операторов внутри конструкции If рассматриваемый EOF = false, далее курсор переходит на строчку
Код: rstPlanPaymentsPercent.MoveFirst
Автор: Troitsky
Дата сообщения: 04.12.2006 21:10
The okk

Цитата:
как закрепить конкретные строки, не используя при этом метод Select?

например, так
Код: With ActiveWindow
.SplitColumn = 3 ' отделяем три столбца
.SplitRow = 1 ' и одну строку
.FreezePanes = True ' закрепляем их
End With
Автор: biffant
Дата сообщения: 05.12.2006 18:05

Цитата:
Во время трассировки обновление watch'ей происходит после выполнения очередного оператора, после выполнения обоих операторов внутри конструкции If рассматриваемый EOF = false, далее курсор переходит на строчку
Код:rstPlanPaymentsPercent.MoveFirst, при нажатии f8 EOF меняется на true


Был неправ, исправляюсь: после выполнения строчки
Код: End If
Автор: Artyr_123
Дата сообщения: 06.12.2006 04:08
Добрый день!!!
Проконсультируйте пожалуйста по такому вопросу.
Хочу сделать небольшубю програмку в Excel. Необходимо сделать так чтобы листы в книге открывались с панели управления. кнопки в меню научился добавлять, а вот с листом связать никак не получется.
Может кто подскажет?
Заранее благодарен!!!
Автор: zyurikz
Дата сообщения: 06.12.2006 15:29

Цитата:
Anatolij2005
Знатоки подскажите пожалуйста.
Есть значения в столбце C и есть значения в столбце G причем значения в столбце С номер строки например n= 3 а в G q=15 .Вообщем нужно сравнить значения в столбцах и если значение в столбце С равно значению в столбце G то вырезать и вставить значение со столбца G c положения q в положение n.

Вопрос уже задавали но ответа не нашел
нужно сравнить столбец "C" с столбцом "G" и если в столбеце "G" есть значение "2" как и в столбце "C" изменить цвет ячейки

С G
1 2
2
3
4 2
5
6
Автор: AndyAdvokat
Дата сообщения: 06.12.2006 18:31
Такой вот вопросик

Можно ли в книге с "общим доступом" создавать гиперссылки.
по умолчанию эта ф-я отключаеться как только включаеш общий доступ.
Автор: Yuk
Дата сообщения: 06.12.2006 18:44
zyurikz
МОжно и без макросов обойтись (хотя на большой таблице возможны тормоза). С помощью условного форматирования.
Уточню задачу. Изменить цвет ячейки в столбце G, если в столбце C существует такое же значение.
Выделяем область значений в G или весь столбец. Идем в меню Формат - Условное форматирование. Изменяем Ячейка на Формула и вводим:
Код: =NOT(ISERROR(MATCH(G1,$C$1:$C$20,0)))

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Стоит ли переходить с Билдера на Делфи?


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