Продам - дом, пос. Ибреси (Ибресинский район), Водопроводная - 400 000 р. |
Продам - двухкомнатную квартиру, Водопроводная, 12А (Жилой дом, 12-14 эт) - 8 800 000 р. |
Продам - однокомнатную квартиру, Галкина, 2 (Жилой дом, 9 эт) - 4 800 000 р. |
Продам - трехкомнатную квартиру, Приволжский бульвар, 4-1 (Жилой дом, 6-8 эт) - 19 000 000 р. |
|
|
Трабл VBA Excel , не могу присвоить значение ячекам
•
s.h.a.n.s.
|
|
Активный
Сообщений: 1 032
|
Здравствуйте. Появилась необходимость научиться программировать на VBA, в частности в Excele. Практического опыта работы с VBA нету. Так вот, укажите, пожалуйста, на ошибку в цикле: не могу присвоить значение ячейкам. Два варианта попробывал, оба не работаю =( 1Исходный код Sub TableBred() Dim r As Integer ' row Dim c As Integer ' coll Dim s As String ' название ячейки формата R1C1
Dim book As String Dim sheet As String book = Application.ActiveWorkbook.Name sheet = Application.ActiveSheet.Name
Workbooks(book).Activate With Application.Workbooks.Item("ST.xls") Worksheets(sheet).Activate For c = 9 To 15 For r = 7 To 13 s = "R" + LTrim(Str(r)) + "C" + LTrim(Str(c)) [B] Sheets(sheet).Range(s).Value = Str(10)[/B]
Next r Next c End With End Sub
Run-time error '1004': Application-defined or object-defined error 2.Исходный код book = Application.ActiveWorkbook.Name sheet = Application.ActiveSheet.Name
Workbooks(book).Activate With Application.Workbooks.Item("ST.xls") Worksheets(sheet).Activate For c = 9 To 15 For r = 7 To 13 s = "R" + LTrim(Str(r)) + "C" + LTrim(Str(c)) [B] Range(s) = 10[/B] Next r Next c End With MsgBox (s)
Run-time Error '1004': Method 'Range' of object '_Global' failed Что нитак никак не пойму. Сообщение отредактировал Snowm@n - Apr 10 2011, 14:56
|
|
|
|
•
s.h.a.n.s.
|
|
Активный
Сообщений: 1 032
|
Хех, разобрался (долго голову ломал): Исходный код sr = "R" + LTrim(Str(R)) st = "C" + LTrim(Str(C)) Sheets(sheet).Range(sr,st).Value = Str(10) Мда, модераторы извиняйте Сообщение отредактировал Snowm@n - Apr 13 2010, 19:22
|
|
|
|
•
salex
|
|
полный превед!
Сообщений: 16 661
Из: Новочебоксарск
|
а чем cells(c, r).value не устраивает?
--------------------
|
|
|
|
•
s.h.a.n.s.
|
|
Активный
Сообщений: 1 032
|
salex, спасибо, хех так намного удобнее: Исходный код For c = 9 To 9 + n For r = 7 To 7 + n Cells(c, r).Value = 10 Next r Next c
Сразу чистенько как-то стало VBA приятненький, самое то если необходимо какую-нибудь нестандартную функцию добавить в Excele. Сообщение отредактировал s.h.a.n.s. - Apr 12 2010, 17:40
|
|
|
|
•
Snowm@n
|
|
O_o
Сообщений: 1 037
|
Цитата(s.h.a.n.s. @ Apr 12 2010, 18:05) но медлененький В свое время сильно занимался автоматизацией Office, большие таблицы очень долго генерируются.
--------------------
Developer -> Lead Developer -> Lead Architect -> ... ?
|
|
|
|
•
s.h.a.n.s.
|
|
Активный
Сообщений: 1 032
|
Еще вопрос: как программно (с использованием VBA) в ячейку ввести две строки? Примерный вид: _ ________ | 105 | 55 | | 8.3 | 1.6 | |____|____| | 407 | 45 | | 9.6 | 1,4 | |____|____|При ручном вводе это делается через комбинацию Alt+Enter А как сделать это через VBA? Думал с помощью SendKeys, только непонятно в каком порядке прописать клавиши и как ввести данные. Сообщение отредактировал s.h.a.n.s. - Apr 13 2010, 10:48
|
|
|
|
•
Snowm@n
|
|
O_o
Сообщений: 1 037
|
Цитата(s.h.a.n.s. @ Apr 13 2010, 11:42) При ручном вводе это делается через комбинацию Alt+Enter А как сделать это через VBA? Это делается вот так Исходный код Cells(1, 1) = "105" & Chr(10) & "8.3"
--------------------
Developer -> Lead Developer -> Lead Architect -> ... ?
|
|
|
|
•
s.h.a.n.s.
|
|
Активный
Сообщений: 1 032
|
Snowm@n, благодарю Действительно, все гениальное просто
|
|
|
|
•
gentos
|
|
Эксперт
Сообщений: 771
Из: Чебоксары
|
Цитата(s.h.a.n.s. @ Apr 13 2010, 13:24) Snowm@n, благодарю Действительно, все гениальное просто А вообще, очень удобно смотреть код макроса в офисе, то есть начинаешь записывать макрос, делаешь вручную те действия, которые необходимо сделать твоей программе, завершаешь макрос, смотришь VBA код макроса. В свое время я так для бухов генерацию отчетов писал, зная VBA очень условно.
--------------------
Я не голосую за ЕдРо
|
|
|
|
•
s.h.a.n.s.
|
|
Активный
Сообщений: 1 032
|
Цитата(gentos @ Apr 19 2010, 10:50) А вообще, очень удобно смотреть код макроса в офисе, то есть начинаешь записывать макрос, делаешь вручную те действия, которые необходимо сделать твоей программе, завершаешь макрос, смотришь VBA код макроса. В свое время я так для бухов генерацию отчетов писал, зная VBA очень условно. Совет хороший. Только в таком случае работа с ячейками происходит при помощи оператора Range("C10 "). Мне нужно чтобы ячейки менялись в цикле, и не совсем понятно как например адрес вида "С10" ("C"-столбец, "10"-строка) менялись при помощи переменных целого типа. Надеюсь понятно написал
|
|
|
|
|
|
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
|