Зациклить столбец и вставить значения в существующую книгу - PullRequest
0 голосов
/ 03 апреля 2019

Привет, это мой первый пост, и я новичок, когда дело доходит до VBA. Итак, я пытался последние 6 часов, чтобы выполнить одну задачу.

Мне уже удалось получить код для цикла «Для каждого», и он работает и копирует значение в существующую книгу. Но я не мог понять, почему он всегда копирует значение в A2, а не дальше в A3 / A4 / A5 и т. Д.

Я попробовал этот кусок кода "range = range + 1", но я продолжаю получать ошибки времени выполнения, и он все равно копирует значения в A2 и перезаписывает его, когда получает новое значение из цикла.

Я думаю, что нужно всего лишь небольшое изменение, но я не могу понять это. (

Sub copie1()

Dim ws As Worksheet
Dim cell As Range
Dim targetsheet As Worksheet
Dim target As Range
Dim rngTemp As Range

Set wkba = ActiveWorkbook

Worksheets("cop1").Activate
LR = Cells(Rows.Count, "A").End(xlUp).Row
LT = Cells(Rows.Count, "X").End(xlUp).Row

    Set rngTemp = Range("X2:X" & LT)

   Workbooks.Open Filename:="C:\Users\path......."
        Set targetsheet = Worksheets("Data")
     Set target= targetsheet.Range("A1")

For Each cell In rngTemp
If cell > 0 Then

target.Offset(1, 0) = cell.Value

        End If


      target = target+1  '// is this right? 

Next cell





End Sub

моя цель - пройти по столбцу X в рабочей книге и скопировать все данные, которые больше 0 (потому что есть пустые ячейки и ячейки со значением 0) и вставьте его в существующую книгу в диапазоне A2 / A3 / A4 и т. д.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

SibSib1903, я добавил ниже простой пример, который вы можете легко адаптировать к вашим собственным требованиям.Он просматривает все значения ячеек в столбце A, и любое числовое значение, большее нуля, копируется в столбец C, начиная со строки 1. Например, если столбец A содержит 45 строк с данными, и только три из этих строк имеют числовое значение, превышающееноль, эти три значения будут скопированы в столбец C в первых трех строках.

Public Sub copieTest()
Dim ws As Worksheet, cell As Range, rngX As Range
Dim tmpVal As Variant, counter As Long

Set ws = ThisWorkbook.Worksheets("cop1")
Set rngX = ws.Range("A1:A" & ws.Cells(ws.Rows.count, 1).End(xlUp).Row)

counter = 1
For Each cell In rngX
    tmpVal = Val(Trim(cell.Value))
    If tmpVal > 0 Then
        ws.Range("C" & counter).Value = tmpVal
        counter = counter + 1
    End If
Next cell
Set rngX = Nothing: Set ws = Nothing

End Sub
0 голосов
/ 03 апреля 2019

Нельзя добавить номер один в объект Range.

Попробуйте заменить target = target+1 '// is this right? на:

Set target = target.Offset(1)

Устраняет ли это проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...