Страницы: 1
RSS
VBA запись суммирования ячеек с другого листа
 
Хелп!
Мой макрос считает  сумму диапазона А1-А6 и выводит значение на экран
он работает только в том случае, если активен лист "Массив"
Ели я запускаю макрос, находясь на другом листе этой же книги, то выдает ошибку

Необходимо, чтобы он работал и с других листов
Код
Public Sub copygraf()
Dim m As Variant
m = Application.Sum(Worksheets("Массив").Range(Cells(1, 1), Cells(1, 6)))
MsgBox m, vbOKOnly
End Sub
Изменено: jura.jurin - 24.06.2016 15:11:16
 
я не макрописец но чет мне кажется он у вас 1 строку по столбцам суммирует и наверное надо прописать активный лист а не конкретный может ошибаюсь  
Лень двигатель прогресса, доказано!!!
 
Ну так-то да, считает макрос A1:F1 а не A1:A6 как того видимо нужно
Я у себя вместо "Массив" написал индекс листа и всё заработало
Код
Public Sub copygraf()
Dim m As Variant
m = Application.Sum(Worksheets(2).Range("A1:E1"))
MsgBox m, vbOKOnly
End Sub
Изменено: VideoAlex - 24.06.2016 14:13:32
 
jura.jurin, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение.
Спасибо!
 
По вопросу: для любого активного листа:
Код
m = Application.Sum(Range(Cells(1, 1), Cells(1, 6)))
 
Цитата
VideoAlex написал:
считает макрос A1:F1 а не A1:A6 как того видимо нужно
А вот это пусть автор уточнит )) А то на самом деле: в описании одно, в коде другое )
 
Цитата
VideoAlex написал: Я у себя вместо "Массив" написал индекс листа
А если он решит поменять листы местами, или удалить лист?
Код
Public Sub copygraf() 
Dim m As Variant 
with Worksheets("Массив")
    m = Application.Sum(Range(.Cells(1, 1), .Cells(1, 6))) 
End with
MsgBox m, vbOKOnly 
End Sub
 
Цитата
grigju написал:
А если он решит поменять листы местами, или удалить лист?
Тогда и Ваш код не поможет ))
 
Цитата
grigju написал: А если он решит поменять листы местами, или удалить лист?
Цитата
jura.jurin написал: Необходимо, чтобы он работал и с других листов
Считаю, что мой макрос выполняет все требуемые условия, а именно работает с других листов. ))
 
Юрий М,  :D :D :D удалит другой, конечно, лист)
VideoAlex,никто не сомневается! но в описанных мной случаях это будет ошибка.Зачем плодить ошибки в работе макроса? ;)
Изменено: grigju - 24.06.2016 15:02:32
 
Да, шучу я )) Ваш макрос конечно более гибкий  
 
Упс...сорри парни не правильно написал...конечно же макрос считает сумму А1-F6

Проблема именно в запуске макроса с другого листа
имя листа на индекс не могу поменять т.к. индекс листа в моем случае будет часто меняться, мне нужно обращаться именно к имени листа
Вообще то, что я выложил в первом посте это я так сказать "выжимка" с проблемой
более полная часть кода с ошибкой выглядит так
Проблема с переменной m ячейки которые в ней суммируются находятся на другом листе.... :cry:
Код
Public Sub prov()
For i = 1 To Sheets("Платежи").UsedRange.Rows.Count

For j = 3 To Sheets("Массив").UsedRange.Rows.Count
m = Sheets("Массив").WorksheetFunction.Sum(Range(Cells(j, NumberColumnBegin), Cells(j, NumberColumnEnd)))
If Cells(i, 1) = Sheets("Массив").Cells(j, 1) And m > 0 Then
    
Cells(i, 1) = Sheets("Массив").Cells(j, 1)
k = k + 1
Cells(i + k, 4) = Sheets("Массив").Cells(j, 3)
Cells(i + k, 2) = Sheets("Массив").Cells(j, 2)
End If
m = 0
Next j
k = 0
End Sub
Изменено: jura.jurin - 26.06.2016 22:59:18
 
jura.jurin,Вот как, макрос и не посмотрели, а решение я писала:
Код
Public Sub copygraf() 
Dim m As Variant
with Worksheets("Массив")
    m = Application.Sum(Range(.Cells(1, 1), .Cells(6, 6))) 
End with
MsgBox m, vbOKOnly 
End Sub
Изменено: grigju - 24.06.2016 15:47:08
Страницы: 1
Читают тему
Наверх