Excel VBA - Использовать ссылку на ячейку, указанную в ячейке в подпрограмме VBA Copy-Paste - PullRequest
0 голосов
/ 02 декабря 2018

Я немного новичок в Excel VBA.Я пытаюсь создать подпрограмму, которая копирует содержимое из ячейки Sheet1 A2 и вставляет в ячейку Sheet2 A2, последняя указана в ячейке Sheet 1 B1.Простой пример.

Sheet1 A2 = 100
Sheet1 B1 = Sheet2 A2

Мне нужна помощь с кодом, который просматривает ячейку Sheet1 B1 для местоположения "Sheet2 A2", чтобы вставить значение 100 в?

Мой текущий код:

Sub CopyRows()
    Sheets("Sheet1").Select
    ' Find the last row of data
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
    ' Loop through each row
    For x = 1 To FinalRow
        ' Decide if to copy based on column D
        ThisValue = Cells(x, 4).Value
        If ThisValue = "A" Then
            'Cells(x, 1).Resize(1, 33).Copy
            Cells(x, 1).Resize(1, 1).Copy
            Sheets("SheetA").Select
            NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
            Cells(NextRow, 1).Select
            ActiveSheet.Paste
            Sheets("Sheet1").Select
        ElseIf ThisValue = "B" Then
            Cells(x, 1).Resize(1, 1).Copy
            Sheets("SheetB").Select
            NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
            Cells(NextRow, 1).Select
            ActiveSheet.Paste
            Sheets("Sheet1").Select
        End If
    Next x
End Sub

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

подпрограмма, которая копирует содержимое из ячейки Sheet1 A2 и вставляет в ячейку Sheet2 A2, последняя указывается в ячейке Sheet 1 B1

:

With Sheets("Sheet1")
    Range(Replace(.Range("B1").Text, " ", "!")).Value = .Range("A2").Value
End With
0 голосов
/ 02 декабря 2018

Я не совсем уверен, как именно предоставленный вами код связан с вашим актуальным вопросом, но в отношении того, что вы спрашиваете:

"... копирует содержимоеиз ячейки Sheet1 A2 и вставляет в ячейку Sheet2 A2, последняя указана в ячейке Sheet 1 B1 ".Где значение B2 отформатировано как Sheet2 A2.

Вы можете разделить значение в этой ячейке, что даст вам массив из двух строк: Sheet2 и A2 послерасколВы можете использовать эти значения для установки объекта диапазона.

Как только вы установите объект диапазона, просто передайте значение из жестко заданного диапазона Worksheets("Sheet1").Range("A2") в динамический диапазон, представленный в B2.

Dim wsSource As Worksheet, rawRangeArr() As String, rng As Range
Set wsSource = ThisWorkbook.Worksheets("Sheet1")
rawRangeArr = Split(wsSource.Range("B1").Value)
Set rng = ThisWorkbook.Worksheets(rawRangeArr(0)).Range(rawRangeArr(1))

rng.Value = wsSource.Range("A2").Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...