Страницы: 1
RSS
Выбор количество строк для копирования с помощью TextBox-са
 
Добрый день Всем. В коде имеется страница  которая копирует первые 45строк Rows("1:45").Copy. Я на форму хочу добавить текстбокс для того чтоб самому определять сколько страниц копировать. Помогите пжл вставить текстбокс вместо "45".
Изменено: Tigo - 05.04.2015 10:27:41 (Вышел смайлик)
С уважением Тиго.
 
И Вам здравствуйте. У Вас уже 4-я сотня сообщений, а все пытаетесь словами что-то объяснить, вместо того, что-бы в файле-примере показать Как есть - Как надо.
И даже словами не понятно

Цитата
Tigo написал: В коде имеется страница  которая копирует
как такое может быть? страница копирует...
Согласие есть продукт при полном непротивлении сторон
 
 Как-то так
Код
Sub СкопироватьСтроки()
Dim L As Variant, I As Long
L = InputBox("Введите количество строк для копирования")
If L = "" Or Not IsNumeric(L) Then Exit Sub
Rows("1:" & L).Copy Destination:=Cells(Selection.Row + Selection.Rows.Count * I, Selection.Column)
End Sub





Или вариант с выбором произвольного диапазона строк
Код
Sub СкопироватьСтроки()
Dim L As Variant, Arr
L = InputBox("Введите номера строк для копирования черз "":"" (например 1:10)")
If L = "" Then Exit Sub
Arr = Split(L, ":")
If UBound(Arr) <> 1 Or Not (IsNumeric(Arr(0)) And IsNumeric(Arr(1))) Then Exit Sub
Rows(Arr(0) & ":" & Arr(1)).Copy Destination:=Cells(Selection.Row + Selection.Rows.Count * I, Selection.Column)
End Sub



 
Изменено: МВТ - 05.04.2015 11:25:06
 
Офф. У МВТ,  экстрасенсорные способности развиты лучше. Я не догадался-бы что фразу
Цитата
Tigo написал: самому определять сколько СТРАНИЦ копировать
нужно читать "сколько СТРОК копировать"
Согласие есть продукт при полном непротивлении сторон
 
Ув. Sanja согласен с Вашими высказываниями, ну по ходу я думал что нужно вместо "45" как то вставить TextBox1.Text, только у меня не получалось код ругался. У меня на нескольких листах есть таблицы которые заполняю и потом ниже их копирую вместе с форматом. Таких таблиц было 3 на 3-х листах и я сделал три кода где было разное количество строк, но со временем я понял что придется еще несколько таблиц на новых листах создавать при чем уже будет и разное количество столбцов, поэтому я решил создать текстбоксы где я смогу на любом листе выбрать нужное количество столбцов и строк, тем самым у меня будет один код вместо того количества таблиц которое все время будет добавляться. Само копирование я смог решить с помощью текстбоксов а вот сам формат не получается. Файл с примером создал.
С уважением Тиго.
 
Tigo, попробуйте заменить  Range(Cells(1, 1), Cells(TextBox1.Text, TextBox2.Text)).Copy на Range(Cells(1, 1), Cells(Val(TextBox1.Text), Val(TextBox2.Text)))
 
Не вдаваясь в рациональность и оптимальность, просто, по синтаксису:
в этой строке
Код
Range(Cells(1, 1), Cells(TextBox1.Text, TextBox2.Text)).Copy
в Cells Вы пытаетесь передать текст (TextBox на то и "текстбок", что-бы возвращать ТЕКСТ). Преобразовать текстовые значения в число можно так:
Код
Range(Cells(1, 1), Cells(Val(TextBox1), Val(TextBox2))).Copy
писал прямо на форуме, в действии не проверял
Согласие есть продукт при полном непротивлении сторон
 
Sanja, я проверял - работает
 
Я бы вместо InputBox использовал Application.InputBox
Код
Sub Test()
    x = Application.InputBox("Укажите количество строк для вставки.", "Выбираем количество.", Type:=1)
    Rows(x).Resize(3).Insert
    'Будет вставлено х строк, начиная с третьей
    Rows("1:" & x).Copy
    'А так скопируем х строк, начиная с первой
End Sub
 
По поводу неявного преобразования из TextBox в число: согласен с Sanja - лучше делать это явно)
 
Ребята спасибо всем
С уважением Тиго.
Страницы: 1
Наверх