Страницы: 1
RSS
Добавление данных в выделенные ячейки макросом
 
Доброго всем вечера!  
Подскажите пожалуйста.  
 
Нужен макрос, чтобы: выделяю ячейки, запускаю его и он перед данными в каждой выделенной ячейке подставляет значение из ячейки (например D9) с добавлением знака плюс и присваивает Общий формат ячейкам.  
Макрорекордером не получается.  
 
Пример прилагаю.
 
.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Спасибо большое!  
Выручили. То, что нужно.  
Ну не умею я макросы писать.  
Тема исчерпана.
 
Без цикла  
 
selection=evaluate("D9&""+""&" & selection.address)
 
{quote}{login=Казанский}{date=04.05.2011 08:48}{thema=}{post}Без цикла  
 
selection=evaluate("D9&""+""&" & selection.address){/post}{/quote}  
Скажите пожалуйста, куда вставить эту строчку?  
selection=evaluate("D9&""+""&" & selection.address)  
 
Sub Макрос()  
 For Each c In Selection.Cells  
   c.Value = ActiveSheet.[D9].Text & "+" & c.Text
 Next c  
 Selection.NumberFormat = "General"  
End Sub
 
Влад, ты что ли? Тогда почему аноним?  
Sub Макрос()  
selection=evaluate("D9&""+""&" & selection.address)  
Selection.NumberFormat = "General"  
End Sub
Я сам - дурнее всякого примера! ...
 
Да, я, просто не залогинился.  
Спасибо, Сергей! У тебя работает быстрее, чем был с циклом.  
 
Только прежний макрос мог подставлять в несмежные диапазоны, а как твой макрос изменить, чтобы тоже  в несмежные выделенные диапазоны подставлял?
 
{quote}{login=Vlad}{date=05.05.2011 12:10}{thema=}{post}  
Спасибо, Сергей! У тебя работает быстрее, чем был с циклом.  
{/post}{/quote}  
Это не у меня, это у Алексея:-)  
Sub Макрос()  
Dim a As Range  
For Each a In Selection.Areas  
a = Evaluate("D9&""+""&" & a.Address)  
Selection.NumberFormat = "General"  
Next  
End Sub
Я сам - дурнее всякого примера! ...
 
Прозевал:  
Sub Макрос()  
Dim a As Range  
For Each a In Selection.Areas  
a = Evaluate("D9&""+""&" & a.Address)  
Next  
Selection.NumberFormat = "General"  
End Sub
Я сам - дурнее всякого примера! ...
 
Огромное спасибо, Сергей!  
 
Всё идеально подходит.  
Выручил меня в очередной раз.  
И что бы я делал без форума?  
(это не вопрос, это мысли вслух, точнее - не вслух, но как-то так...)
 
Здравствуйте.  
Хотел применить данный код для изменения ячеек с датами.  
 
Sub Макрос()  
Dim a As Range  
For Each a In Selection.Areas  
a = Evaluate("D9&""+""&" & a.Address)  
Next  
Selection.NumberFormat = "General"  
End Sub  
 
Все хорошо, только дата в окончательном варианте представляется в числовом формате. Хотелось бы сохранить формат даты.  
Это возможно?  
Спасибо.
 
возможно.  
 
вместо строчки  
Selection.NumberFormat = "General"  
 
пишем  
Selection.NumberFormat = "dd/mm/yyyy"  
 
ну или тот, который вам нужен.  
 
или, если у вас уже ячейки в выделении отформатированы нужным образом, уберите эту строчку совсем.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Здравствуйте, ikki.  
Попробовал следовать Вашим советам, но ни один не помог.  
Вот пример.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Вот...
 
Знаете, ikki, а вот Ваш вариант сохраняет корректно.  
 
Sub Кнопка1_Щелкнуть()  
 For Each c In Selection.Cells  
   c.Value = ActiveSheet.[d9].Text & "+" & c.Text
 Next c  
 Selection.NumberFormat = "General"  
End Sub  
 
... только хотелось бы убрать ссылку на d9, и оставить только "+"  
Спасибо.
 
у меня в вашем файле сработал такой вариант:  
 
Sub Макрос11слепить()  
Dim a As Range  
For Each a In Selection.Areas  
a = Evaluate("""п""&text(" & a.Address & ",""dd.MM.yyyy"")")  
Next  
Selection.NumberFormat = "General"  
End Sub  
 
но, насколько я понимаю, он зависит от системных настроек - в частности, символов-разделителей для даты.    
если у вас иные настройки, поменяйте точку в строке dd.MM.yyyy на свой разделитель.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Sub Макрос11слепить()  
   Dim a As Range  
   For Each a In Selection.Cells  
       a = "n" & a.Text  
   Next  
End Sub
Я сам - дурнее всякого примера! ...
 
ikki, KukLP, спасибо.  
Оба варианта работают.
 
Так, для справки:  
Вариант ikki весь выделенный диапазон заполняет значением из первой ячейки этого диапазона, т.е. изменяемый диапазон должен содержать одну и ту же дату.  
Вариант KukLP работает с разными датами(но медленнее).  
Спасибо.
 
гм... действительно.  
спасибо, Пирогов, за замечание.  
тогда, думаю, вариант KukLP остается единственно правильным.  
 
хотя...если в выделенном диапазоне мало маленьких по размеру несмежных областей (или область вообще одна),.. то по скорости может оказаться более быстрым такой вариант  
 
Sub Макрос11слепить()  
 Dim a As Range, arr(), i&, j%  
 For Each a In Selection.Areas  
 arr = a.Value  
 For i = 1 To UBound(arr)  
   For j = 1 To UBound(arr, 2)  
     arr(i, j) = "п" & Format(arr(i, j), "dd.MM.yyyy")  
 Next j, i  
 a.Value = arr  
 Next  
 Selection.NumberFormat = "General"  
End Sub
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Ну, теперь, идеально.  
Спасибо.
Страницы: 1
Читают тему
Наверх