Страницы: 1
RSS
Выбор ячейки через Inputbox и копирование ее значения.
 
Ребята помогите пожалуйста изменить (упростить) макрос.  
Составлен макрос "Alex_ST", однако он предназначен для более обширного объема выполняемых задач. Я, на сколько это было в моих силах, сумел его немного настроить под себя. Но этого не достаточно.  
 
Макрос выполняется в два действия:  
1. Указать диапазон откуда брать.  
2. Указать диапазон куда вставлять.  
 
Мне необходимо упростить до одного действия:  
1. Указать диапазон откуда брать.  
2. а второе действие, чтобы выполнялось автоматически, т. е. значения из выбранной ячейки попадали в ячейку, которая была активной до запуска макроса.  
 
Проще говоря, чтобы на листе 1 в столбце "№ договора" можно было при помощи макроса с листа 2 вставлять номера договоров из соответствующего столбца, а не прописывать их вручную.
 
А вот так поступать не следует: вопрос уже был задан http://www.planetaexcel.ru/forum.php?thread_id=18380 и эта тема будет удалена.
 
{quote}{login=Юрий М}{date=05.03.2011 12:38}{thema=}{post}А вот так поступать не следует: вопрос уже был задан http://www.planetaexcel.ru/forum.php?thread_id=18380 и эта тема будет удалена.{/post}{/quote}  
 
Уважаемый Юрий, дело в том, что исходная тема по вашей ссылке не раскрывает суть моего вопроса. Я допустил ошибку еще вчера тем, что задал свой вопрос в той теме. Надо было наверное создать сразу новую тему ..
 
Тогда удаляю Ваш вопрос в "той" теме. Старайтесь не дублировать...
 
{quote}{login=Юрий М}{date=05.03.2011 12:50}{thema=}{post}Тогда удаляю Ваш вопрос в "той" теме. Старайтесь не дублировать...{/post}{/quote}  
 
Спасибо !!!!!!!!  
 
Ребята помогите все же с макросом ?!
 
В общем случае так:  
Sub Evgesha()  
Set x = Application.InputBox(Prompt:="Евгеша, ткните мыхой в ячейку c исходными данными", Title:="Выбираем ячейку с данными для копирования", Type:=8)  
ActiveCell = x.Value  
End Sub
 
{quote}{login=Юрий М}{date=05.03.2011 01:01}{thema=}{post}В общем случае так:  
Sub Evgesha()  
Set x = Application.InputBox(Prompt:="Евгеша, ткните мыхой в ячейку c исходными данными", Title:="Выбираем ячейку с данными для копирования", Type:=8)  
ActiveCell = x.Value  
End Sub{/post}{/quote}  
 
Юрий, спасибо, ТОЛЬКО вы не обратили внимания на то, что у меня ведь данные находятся на разных листах и этот код к сожалению в моем исполнении НЕ работает:  
Sub Evgesha()  
Sheets(2).Activate  
Set x = Application.InputBox(Prompt:="Евгеша, ткните мыхой в ячейку c исходными данными", Title:="Выбираем ячейку с данными для копирования", Type:=8)  
ActiveCell = x.Value  
Sheets(1).Activate  
End Sub  
 
Нужно, чтобы с запуском макроса:  
1. Sheets(2).Activate  
2. тыкаем в нужную клетку  
3. Sheets(1).Activate (возвращаемся обратно и нужные данные уже вставлены)
 
Т.е вы хотите так  
Sub perenos()  
Set x = ActiveCell  
Sheets(2).Activate  
Set y = Application.InputBox(Prompt:="Евгеша, ткните мыхой в ячейку c исходными данными", Title:="Выбираем ячейку с данными для копирования", Type:=8)  
x.Value = y.Value  
Sheets(1).Activate  
End Sub
 
Евгеша, я ведь проверил код, прежде чем его выложить.    
1. Активируем ячейку, в которую нужно вставить данные.  
2. Запускаем мой макрос.  
3. Выбираем на НУЖНОМ листе ячейку, из которой нужно скопировать данные.  
4. Нажимаем ОК.
 
{quote}{login=sva}{date=05.03.2011 01:59}{thema=}{post}Т.е вы хотите так  
Sub perenos()  
Set x = ActiveCell  
Sheets(2).Activate  
Set y = Application.InputBox(Prompt:="Евгеша, ткните мыхой в ячейку c исходными данными", Title:="Выбираем ячейку с данными для копирования", Type:=8)  
x.Value = y.Value  
Sheets(1).Activate  
End Sub{/post}{/quote}  
 
Спасибо Вам SVA, спасибо Вам Юрий !!!  
SVA, Ваш код и менно то, что мне было необходимо !!!  
Юрий "Выбираем на НУЖНОМ листе" - это же его еще выбирать надо (нужный лист) !!! А для меня дорога каждая секунда !!!  
Спасибо !!
 
А я и писал - "В общем случае...". Лист активировать Вы и сами знаете как :-)
 
Ребята, извините, поторопился !!!    
В ходе выполнения макроса, если вместо того, чтобы указать нужную ячейку, мы нажимаем "Отмена", то выскакивет ошибка.  
Как ее можно устранить ??
 
Большое спасибо, The_Prist.  
Теперь все отлично !!
 
Уважаемые ребята !!  
Составлен макрос "The_Prist", однако возникла необходимость применить его более обширно.  
К сожалению справиться с этим мне не удалось.  
 
Макрос копирует только выделенную ячейку, а необходимо ЕЩЕ и две ячейки, находящиеся слева от выделенной в InputBox.  
 
Макрос выполняется в два действия:  
1. Выделить пустую ячейку в Столбце "№ договора", запустить макрос кнопкой.  
2. Выделить ячейку с необходимым номером счета и нажать "Ок". При этом происходит копирование номера договора с Лист2 на Лист1.  
 
Необходимо, чтобы в результате этих манипуляций, вместе с номером договора копировались в соответствующие ячейки (они расположены одинаково на обоих листах) и ячейка с наименованием и ячейка со способом заключения договора.  
 
Прошу вашей помощи.
 
Оффсет должен помочь:  
 
If Not y Is Nothing Then  
x.Value = y.Value  
x.Offset(, 1).Value = y.Offset(, 1).Value  
x.Offset(, 2).Value = y.Offset(, 2).Value  
End If
 
{quote}{login=Hugo}{date=11.04.2011 12:06}{thema=}{post}Оффсет должен помочь:  
 
If Not y Is Nothing Then  
x.Value = y.Value  
x.Offset(, 1).Value = y.Offset(, 1).Value  
x.Offset(, 2).Value = y.Offset(, 2).Value  
End If{/post}{/quote}  
 
Спасибо огромное, Hugo !!! Все получилось !!
 
И всё-таки, я бы рекомендовал вместо Application.InputBox("...", "...", Type:=8), не работающего на листах с УФ формулой, использовать Application.InputBox("...", "...", Type:=0), который, ПРОВЕРЕНО, не глючит:  
   
Dim rCell As Range  
Dim Addr: Addr = Application.InputBox("Укажите ячейку с исходными данными", "Выбор данных для копирования", "=" & Selection.Address, Type:=0)  
  If TypeName(Addr) = "Boolean" Then Exit Sub    ' если нажали "Отмена", то Addr = False  
  Set rCell = Range(Trim(Mid(Application.ConvertFormula(Addr, xlR1C1, xlA1, True), 2)))(1)
С уважением, Алексей
 
{quote}{login=Alex_ST}{date=11.04.2011 02:47}{thema=}{post}И всё-таки, я бы рекомендовал вместо Application.InputBox("...", "...", Type:=8), не работающего на листах с УФ формулой, использовать Application.InputBox("...", "...", Type:=0), который, ПРОВЕРЕНО, не глючит:  
   
Dim rCell As Range  
Dim Addr: Addr = Application.InputBox("Укажите ячейку с исходными данными", "Выбор данных для копирования", "=" & Selection.Address, Type:=0)  
  If TypeName(Addr) = "Boolean" Then Exit Sub    ' если нажали "Отмена", то Addr = False  
  Set rCell = Range(Trim(Mid(Application.ConvertFormula(Addr, xlR1C1, xlA1, True), 2)))(1){/post}{/quote}  
 
Уважаемый Alex_ST,  
спасибо за поправку, но я не совсем понял (за исключением Type:=8 на Type:=0), что необходимо заменить.  
 
У меня код в таком виде и вроде все работает исправно:  
Sub Вставка_номера_договора_2()  
Set x = ActiveCell  
Sheets(6).Activate  
On Error Resume Next  
Set y = Application.InputBox(Prompt:="Выберите ячейку c номером Договора", Title:="Выбор Договора", Type:=8)  
If Not y Is Nothing Then  
x.Value = y.Value  
x.Offset(, -1).Value = y.Offset(, -1).Value  
x.Offset(, -2).Value = y.Offset(, -2).Value  
End If  
Sheets(7).Activate  
End Sub
 
Алексу не нравится тип 8, так как при наличии УФ с формулами появляются ошибки. Если у Вас нет такого УФ - можете оставить вариант с восьмёркой.
 
{quote}{login=Юрий М}{date=16.04.2011 12:39}{thema=}{post}Алексу не нравится тип 8, так как при наличии УФ с формулами появляются ошибки. Если у Вас нет такого УФ - можете оставить вариант с восьмёркой.{/post}{/quote}  
Юрий, а что такое УФ ?? ... я не понимаю ..
 
УФ - условное форматирование :-)
 
{quote}{login=Юрий М}{date=16.04.2011 03:39}{thema=}{post}УФ - условное форматирование :-){/post}{/quote}  
... ааа, ясно, спасибо !!  
... нет, на листах с которыми работает макрос, УФ - нет ...
Страницы: 1
Читают тему
Наверх