Страницы: 1
RSS
Как избавиться от абсолютной адресации в макросах Excel 2007?
 
Требуется по циклу находить фрагмент именованной области и копировать его на свободное место и повтор.    
К примеру в таблице есть область "Doma12Pred" по адресу "B9:E15", в её верхней строке "SapkaDomow" (B9:E9) ищется подходящая запросу клетка. Скажем это будет клетка С9 с содержимым "2дом", требуется скопировать столбец "Dom_rab1" (С9:С15) на свободное место, скажем это будет клетка "DomRabByd" (Н9). Возврат на начало цикла (новая клетка запроса).  
Записывал операции эти при помощи макрорекордера. Он выдаёт абсолютную адресацию. В цикле требуется использовать относительную адресацию через переменные. Пытаюсь заменить при корректировке макроса, но выходят ошибки то -ли при трансляции, то -ли при выполнении. Так как -же избавиться от абсолютной адресации?    
Это первое, ещё – бы хотелось более быстрой работы макроса. Если более конкретно, то возможно –ли обойтись при этих операциях одним большим массивом: "Doma12Pred" по адресу "B9:E15", оперируя только индексами? Или не обойтись удалением и пересозданием имён фрагментов этого массива, выделением фрагментов, копированием и вставкой?
 
Здравствуйте форумчане!  
Что-то вы не отвечаете? Наверное слишком сложный вопрос и ещё подаётся в чрезмерно фамильярной форме? – Извините ради бога, постараюсь исправиться. Тогда упрощу вопрос- как макросом выделить интервал  С9:С15? Без макроса выделять умею, требуется именно макросом, так как интервал будет перемещаться в процессе работы макроса.  
Как видно из таблицы, там есть ещё непочатый край работы с Excel, а сам я предпочёл -бы больше заниматься астрологией, поэтому возможно сотрудничество после некоторого периода знакомства.
 
{quote}{login=Mihail17}{date=18.05.2010 09:22}{thema=3}{post}...Как макросом выделить интервал  С9:С15?{/post}{/quote}  
 
Sub Выделить_диапазон()  
   Range("C9:C15").Select  
End Sub
 
{quote}{login=Mihail17}{date=18.05.2010 09:22}{thema=3}{post}...как макросом выделить интервал  С9:С15? .{/post}{/quote}  
Mihail17, на этот вопрос Вам с лёгкостью ответит макрорекордер. И на Форум заходить не нужно :-)
 
Ой! То я слишком сложно задаю вопрос, то недостаточно точно. Имелось ввиду пометить несколько клеток используя относительную адресацию. Заголовок темы остаётся в силе.    
Может использовать адресацию типа R1C1? Ввести переменные типа integer. Делать с ними необходимые арифметические операции и преобразовав в строку подставить вместо адреса?  
                Михаил.
 
Здравствуйте!  
Не подскажете как в макросе получить в адресе стиль только цифры?  
Dim strk2 As String    
Application.ReferenceStyle = xlR1C1    
strk2 = ActiveCell.Address  
Окно Locals показывает что strk2 ="$D$2"
 
Спасибо!
 
Как пример:  
 
Sub tt()  
Dim strk2 As String  
Application.ReferenceStyle = xlR1C1  
strk2 = ActiveCell.Address  
strk2 = ActiveCell.Address(, , xlR1C1)  
 
strk3 = ActiveCell.Row  
strk4 = ActiveCell.Column  
 
x = 5  
y = 10  
Range("C" & strk3 & ":C" & strk3 + 5).Copy Cells(x, y)  
 
End Sub
 
Здравствуйте!  
Теперь проблема с интервалом. Что не так делаю в 3-х следующих строках?  
     
      strk1 = "R" + LTrim(Str(po3iz)) + "C" + LTrim(Str(kolon + stDom))  
      strk3 = "R" + LTrim(Str(po3iz + a)) + "C" + LTrim(Str(kolon + stDom))  
      Range(strk1, strk3).Select   'Error 1004 metod Range ... failed  
 
Hugo в предшествующем сообщении как-бы предвосхитил мой следующий вопрос на 3 дня. Попробовал его код, но что-то нет полной ясности что там делается. Строки найти можно, а вот столбцы как-то случайным образом получаются.
Страницы: 1
Читают тему
Наверх