Я понимаю, что вы храните некоторые данные в столбце А, сделать текст в столбцы части, а затем скопировать-вставить только строки в столбце D: J, где на самом деле данные в колонке А: С. Другими словами: после выполнения вычисления вы хотите вставить значения в вычисленные строки, но сохраните формулы в строках ниже.
Проблема заключается в том, что вы не определяете последнюю строку, которая хранит данные, поэтому ваш выбор будет охватывать только те ячейки. Вместо этого вы просто скопируете все столбцы.
Приведенный ниже пример оставит введенные формулы в столбцах D: J неповрежденными для строк, которые не имеют данных в столбце A: C.
Sub Macro1()
Dim lastRow as integer 'We need a variable to store the row number in.
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+v
'
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
True
'Let's assume this first part works correctly, since your question does not address this.
'However - Keep in mind that the text to columns have a destination that will always be A1 in your example.
lastRow = Sheets("Bags").Range("A65535").end(xlUp).Row 'Determine the last row in column A that has a value in it.
Sheets("Bags").Range("D2:J" & lastRow).Select 'Select only the rows that have values in column A.
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Комментарии к этому ответу: Это будет исправить вашу непосредственную проблему, однако до сих пор не очень чистый способ сделать это. Также я не думаю, что вышеуказанный код будет делать именно то, что вы хотите. вопрос ответил: Как изменить ваш код, так что теперь переписать формулы в D: J в строках, которые не имеют никаких данных в A.
Другие примечания/указатели: Далее: Если можно попытаться избежать отборы вообще. Там большой вопрос + asnwers о том, как и почему в старой угрозы здесь: How to avoid using Select in Excel VBA macros
Также я рекомендую прочитать до того, как ссылаться на диапазоны/ячейки:
https://msdn.microsoft.com/en-us/library/office/aa221357(v=office.11).aspx
http://excelmatters.com/referring-to-ranges-in-vba/
http://spreadsheetpage.com/index.php/tip/referring_to_ranges_in_your_vba_code/
Зная, как это работает, это хорошее начало, когда оно новое для Макро. Удачи!
Добро пожаловать в SO. Ваш вопрос довольно неясен. Пожалуйста, прочитайте [Как спросить] (http://stackoverflow.com/help/how-to-ask), чтобы получить самую эффективную помощь на сайте. –