макрос для копирования значений в нижнюю часть диапазона - PullRequest
0 голосов
/ 16 февраля 2019
  1. ячейки A1: D1 содержат переменные вычисления
  2. ячейки ниже A1: D1 будет содержать значения из ячейки A1: D1 вычисления
  3. Я назову A1: D1 - range01
  4. Я хотел бы, чтобы макрос копировал значения из A1: D1 (range01) в следующую доступную строку ниже в тех же столбцах.Таким образом, 1-е значения перейдут к A2: D2, 2-е значения к A3: D3 и т. Д.
  5. Эта подпрограмма будет вложена в циклический макрос.Спасибо, Марк

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Переводы значений быстрее!Кроме того, поскольку это будет внутри цикла, ваш последний свободный ряд должен будет каждый раз корректироваться, иначе вы будете постоянно вставлять одни и те же значения.

Вот пример кода, который повторяется 48 раз при увеличении последней строки


Option Explicit

Sub ValueTransfer()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update
Dim rCopy As Range, LR As Long, i As Long

Set rCopy = ws.Range("A1:D1")
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Offset(1).Row

For i = 2 To 50
    ws.Range("A" & LR).Resize(1, 4).Value = rCopy.Value
    LR = LR + 1
Next i

End Sub

В качестве дополнительного бонуса вы можете сделать его более динамичным, изменив Resize функция до

`.Resize(rCopy.Rows.Count, rCopy.Columns.Count)
0 голосов
/ 16 февраля 2019

К счастью, Excel VBA предоставляет довольно удобную «функцию» для получения следующего свободного места

Sub copyToFreeSpace()
Dim copyRange As Range
Dim xSheet As Worksheet
Dim freeRow As Long

Set xSheet = ThisWorkbook.Worksheets("TABLENAME") 'Set the Worksheet here
Set copyRange = xSheet.Range("A1:D1") 'Define Range
freeRow = xSheet.Cells(xSheet.Rows.Count, 1).End(xlUp).Row + 1 'Get "free row"
xSheet.Range(xSheet.Cells(freeRow, 1), xSheet.Cells(freeRow, 4)) = copyRange.Value 'Copy value from above range
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...