Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 17:28   #1
J_i_m_m_y
 
Регистрация: 22.04.2010
Сообщений: 4
По умолчанию Ручной выбор диапазона данных

Подскажите как сделать в 2003 excel с помощью макросов
в книге на одном листе (DATA) данные.
кол-во данных в столбцах каждый раз разное.
Хочется сделать макрос который предлагает пользователю выделить диапазон с данными (по столбцам) и после выделения вставляет выделенный диапазон на другой лист (Итог) в этой же книге в определенный столбец.

Пытался использовать функцию InputBox. Если выбирать 1 ячейку, я понимаю как это сделать а вот если их много... не понимаю как скопировать.

Код:
Sub Ввод_партномеров()
    
    Dim myNum As Range
    Set myNum = Application.InputBox("Выбери партномер", Type:=8)
    If myNum Is Nothing Then Exit Sub

    Dim ro As Range, tto As Long
    tto = 1
    For Each ro In myNum
    MsgBox "партномера: " & myNum.Address

      ro.Copy Destination:=Sheets("Таблица").Cells("A", tto).Address
      
      tto = tto + 1
    Next ro

End Sub

Файл с примером прилагаю.
Вложения
Тип файла: zip Книга2.zip (2.0 Кб, 14 просмотров)
J_i_m_m_y вне форума Ответить с цитированием
Старый 02.06.2010, 17:54   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Здравствуйте.
А может проще так?

Код:
Sub Ввод_партномеров()
    Dim myNum As Range
    'Выделять весь диапазон данных, а не один столбец(например A7:D14)
    On Error Resume Next
    Set myNum = Application.InputBox("Выбери партномер", Type:=8)
    If myNum Is Nothing Then Exit Sub
    On Error GoTo 0
    With Sheets("Таблица")'Ориентировался на Ваш код(у Вас там Таблица) хотя пишите, что вставить надо в Итог. Сами поправите
        myNum.Copy .Cells("A", .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
    End With
End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 02.06.2010 в 17:59.
The_Prist вне форума Ответить с цитированием
Старый 02.06.2010, 17:54   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Попробуйте так:
Код:
Sub Ввод_партномеров()
    Dim myNum As Range
    Set myNum = Application.InputBox("Выбери партномер", Type:=8)
    If myNum Is Nothing Then Exit Sub

    With Worksheets("Итог")
        Intersect(myNum.entirerow, myNum.Worksheet.Range("a:d")).Copy .Range("a" & .Rows.Count).End(xlUp).Offset(1)
        .Activate    ' переходим на лист, куда осуществлялась вставка
    End With
End Sub
Пример в файле:


Последний раз редактировалось EducatedFool; 02.06.2010 в 17:57.
EducatedFool вне форума Ответить с цитированием
Старый 02.06.2010, 18:10   #4
J_i_m_m_y
 
Регистрация: 22.04.2010
Сообщений: 4
По умолчанию

Да. у меня в фалйе который ковыряю лист таблица называется.
попробовал код
Выдает ошибку в этой строке
Код:
        myNum.Copy .Cells("A", .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
J_i_m_m_y вне форума Ответить с цитированием
Старый 02.06.2010, 18:21   #5
J_i_m_m_y
 
Регистрация: 22.04.2010
Сообщений: 4
По умолчанию

EducatedFool
Спасибо. Работает. Кажется и до меня дошло как.
J_i_m_m_y вне форума Ответить с цитированием
Старый 02.06.2010, 18:22   #6
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от J_i_m_m_y Посмотреть сообщение
Да. у меня в фалйе который ковыряю лист таблица называется.
попробовал код
Выдает ошибку в этой строке
Код:
        myNum.Copy .Cells("A", .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
Наоборот надо. Это я косанул

Код:
myNum.Copy .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1,"A")
или так
Код:
myNum.Copy .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 02.06.2010, 18:32   #7
J_i_m_m_y
 
Регистрация: 22.04.2010
Сообщений: 4
По умолчанию

The_Prist
Спасибо. помогли.
J_i_m_m_y вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор полного прерывающегося диапазона ячеек SilverSmallFish Microsoft Office Excel 6 11.03.2010 08:57
Выбор значения из диапазона ячеек и получение ссылки на него Otando Microsoft Office Excel 2 12.12.2009 08:44
Случайный выбор времени из ограниченного диапазона Павел-812 Microsoft Office Excel 1 19.05.2009 08:55
Выбор диапазона для диаграммы по дате alexbob Microsoft Office Excel 1 27.10.2008 07:35
Выбор Диапазона Дат Chepa БД в Delphi 2 02.02.2007 10:25