Страницы: 1
RSS
Сложение диапазонов макросом (Range+Range).
 
Добрый день,  
 
Подскажите, пожалуйста, возможно ли сложение диапазонов макросом без использования цикла?  
 
Макрос образца, указанного ниже, выдает ошибку:  
 
Sub aМакрос1()  
'  
Range("A1:A2") = Range("A1:A2") + Range("A1:A2")  
End Sub  
 
До этого выходил из ситуации так:  
Sub Макрос2()  
'  
   Range("A1:A2").Copy  
   Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd  
End Sub
 
Sub aМакрос1()  
Range("A1:A2") = [A1:A2+A1:A2]
End Sub
 
Огромное спасибо.
 
Хотелось бы у Вас уточнить еще пару вопросов:    
1) А можно ли как то преобразовать эту формулу, чтобы вместо [A1] было Cells(1,1), чтобы было возможно использовать в цикле.
 
2) Как запись типа "[A1]" будеть выглядеть с i при использовании в цикле.
   
Range (Ci) в VBA записывается как Range("c" & i)  
Range (Ci:Xi)  в VBA записывается как Range("C" & i & ":X" & i)  
[Ai] в VBA записывается как ?
[Ai:Bi] в VBA записывается как ?
 
Тут пока почитайте:  
 
http://www.planetaexcel.ru/forum.php/plex.php?thread_id=27585
 
Sub test()  
 Dim i%, j%  
 i = 1: j = 3  
 [c1:c3] = [a1:a3+b1:b3]
 Range("d1:d3") = Evaluate("a1:a3+b1:b3")  
 Range("e" & i & ":e" & j) = Evaluate("a" & i & ":a" & j & "+b" & i & ":b" & j)  
End Sub
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Здравствуйте!  
Решил сюда задать свой вопрос.  
в ячейках А1:А10 есть формулы знач.которых равен:  
1  
2  
3  
4  
итд до 10  
как "одним взмахом" вставить значение ячеек А1:А10 в В1:В10.Если только одна ячейка то [B1] = [A1]. А как быть с неск. ячейками типа [B1:B10] = [A1:A10]??? Для этого я использую вот такой код:
Range("A1:A10").Select  
   Selection.Copy  
   Range("B1").Select  
   Selection.PasteSpecial Paste:=xlPasteValues  
   Application.CutCopyMode = False
 
Всем большое спасибо за ответы, буду разбираться.  
 
Sag,я бы сделал так:  
 
Sub bb()  
Range("B1:B10") = [A1:A10+0]
End Sub  
 
Согласен, вариант идиотский, но я сам только начал разбираться.
 
Спасибо!!!
 
{quote}{login=ikki}{date=17.05.2012 12:25}{thema=}{post}Sub test()...{/post}{/quote}  
А перемещение по столбцам как реализовать?
 
Только так можно?:  
Range(Cells(1, 1), Cells(2, 1)) = Evaluate(Range(Cells(1, 1), Cells(2, 1)).Address & "*2")
 
готового примера нет, рисовать пока некогда.  
давайте так - Вы сами пока попробуете и поэкспериментируете, выложите сюда результаты экспериментов (в любом случае - получилось или не получилось), и, если не получилось, мы с Вами совместно разруливаем вопрос :)  
 
ок?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Хорошо, спаcибо, буду еще пробовать.    
В принципе вполне приемлемый  вариант:  
Range(Cells(1, 1), Cells(3, 1)) = Evaluate(Range(Cells(1, 1), Cells(3, 1)).Address & "+" & Range(Cells(1, 1), Cells(3, 1)).Address)
 
Sub test2()  
Dim y, i As Long  
i = 1  
j = Range(Cells(1, i), Cells(3, i)).Address  
Range(Cells(1, i), Cells(3, i)) = Evaluate(j & "+" & j)  
End Sub
 
Sub bb()  
Range("B1:B10") = [A1:A10+0]
End Sub  
 
Вот еще вариант нашел. В этом варианте и текст можно приравнивать:  
Range("B1:B10") = [A1:A10 & ""]
 
Все оказалось намного проще  
 
Range("B22:T23") = Range("B20:T21").Value  
Диапазоп приравнивается на ура.
Страницы: 1
Читают тему
Наверх