VB и макрос Microsoft Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kushiy
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 15.12.2008 (Пн) 12:24

VB и макрос Microsoft Excel

Сообщение kushiy » 16.12.2008 (Вт) 13:40

Здравствуйте! Передо мной стала задача описанная ниже, но VB я владею к сожалению на уровне программиста языка Basic, на котором ещё работали когда-то под DOS. Поэтому буду очень благодарен тому, кто сможет мне помочь.
Суть в следующем:
Есть файл Excel, на нём большое колличество листов (каждый лист представляет собой карточку персонального компьютера: По определенному шаблону в нем внесены, такие данные как установленное ПО, список пользователей, конфигурация ПК и др.). Задача состояит в том, чтобы написать макрос, который бы на отдельном листе (листах) формировал бы отчет (выводил статистику) по всем ПК. К примеру, на одном из листов нужно вывести в табличном виде список всех пользователей, их должность и список ПО установленного на каждом ПК.
Для упрощения я сделал примерно следующую шапку таблицы:
Пользователь, должность, Windows Server, Windows Vista, Windows XP, Office 2003, Office 2007 и т.д.
Ячейки ниже под списком ПО, заполняются либо нулём, либо еденицей. А потом подсчитывается сумма всех едениц.
Я написал следующий макрос:
Sub Макрос1()

Sheets("Отчет").Select
ActiveSheet.Cells(2, 2).Select
For i = 1 To 10
ActiveCell.FormulaR1C1 = "=" + Str(i) + "!R8C2"
ActiveCell.Offset(1, 0).Select
Next
ActiveSheet.Cells(2, 3).Select
For i = 1 To 10
ActiveCell.FormulaR1C1 = "=" + Str(i) + "!R9C2"
ActiveCell.Offset(1, 0).Select
Next
ActiveSheet.Cells(2, 4).Select
For n = 1 To 29
For i = 1 To 10
ActiveCell.FormulaR1C1 = "=" + Str(i) + "!R" + Str(n) + "C2"
ActiveCell.Offset(1, 0).Select
Next
ActiveSheet.Cells(2, 5 + n).Select
Next
End Sub

Но, в этом макросе есть ошибка, так как я не знаю правильного синтаксиса языка.
Нужно сделать так, чтобы по изменению переменной "n", менялись значения в 3 и 6 строках (отсчет с конца макроса - выделенно жирным шрифтом)
Исправьте плиз указанную ошибку.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: VB и макрос Microsoft Excel

Сообщение RayShade » 16.12.2008 (Вт) 20:55

Код: Выделить всё
Sub Макрос1()
Dim i as Integer
Dim n as Integer

Sheets("Отчет").Select
ActiveSheet.Cells(2, 2).Select
For i = 1 To 10
ActiveCell.FormulaR1C1 = "=" + Str(i) + "!R8C2"
ActiveCell.Offset(1, 0).Select
Next i

ActiveSheet.Cells(2, 3).Select
For i = 1 To 10
ActiveCell.FormulaR1C1 = "=" + Str(i) + "!R9C2"
ActiveCell.Offset(1, 0).Select
Next i

ActiveSheet.Cells(2, 4).Select
For n = 1 To 29
For i = 1 To 10
ActiveCell.FormulaR1C1 = "=" + Str(i) + "!R" + Str(n) + "C2"
ActiveCell.Offset(1, 0).Select
Next i
ActiveSheet.Cells(2, 5 + n).Select
Next n

End Sub
I don't understand. Sorry.

kushiy
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 15.12.2008 (Пн) 12:24

Re: VB и макрос Microsoft Excel

Сообщение kushiy » 17.12.2008 (Ср) 7:34

Сделал, указанные Вами изменения, но это ни к чему не привело.
VB не нравится выражение в строке:
ActiveCell.FormulaR1C1 = "=" + Str(i) + "!R" + Str(n) + "C2"
Он выдаёт сообщение об ошибке:
Application-defined or objekt-defined error.
Что интересно, в этом выражении нормально воспринимается первая функция Str(i), и категорически не воспринимается вторая функция Str(n). Видимо у VB на выражение, хоть и записанное и в кавычках, но несущее в себе стиль адресации RxCy, свои взгляды, и его нужно записать ка-то иначе. Вопрос как?

SUR1966
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 22.01.2007 (Пн) 10:45

Re: VB и макрос Microsoft Excel

Сообщение SUR1966 » 17.12.2008 (Ср) 14:25

попробуй вместо функции Str() использовать Trim()
просто Str() добавляет пробел перед числом, а excel этого не любит


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 48

    TopList  
cron