Соберите данные из ячеек и назначьте диапазон. Как избежать автоматического c преобразования текста в число? - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу собрать данные из большого листа и вставить в целевой диапазон.

Данные смешиваются с числом и числом, как строка (например: "0050").

Я пытался вариантный массив для хранения данных и присвоения серии ячеек.

Вот пример кода:

Dim z() As Variant
Dim i As Integer
ReDim z(1 To 3, 1 To 1)
With ThisWorkbook.Sheets(1)

    .Cells(1, 1) = "'" & "0050" 'content from cell A, could be number or number like string.
    .Cells(3, 1) = 20           'content from cell B, could be number or number like string.
    .Cells(5, 1) = "'" & "040"  'content from cell C, could be number or number like string.

    For i = 1 To 3
        z(i, 1) = .Cells(1 + (i - 1) * 2, 1)
    Next

    .Cells(1, 2).Resize(3, 1) = z

End With

Excel автоматически изменяет строку «0050» на числовой формат, поэтому значение в ячейке (1,2) равно 50, а не «0050».

Я хочу, чтобы формат ячейки был таким же, как был изначально, но я заранее не знаю формат каждой ячейки.

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

Dim z() As Variant
Dim i As Integer
ReDim z(1 To 3, 1 To 1)
With ThisWorkbook.Sheets(1)

    .Cells(1, 1) = "'" & "0050" 'content from cell A, could be number or number like string.
    .Cells(3, 1) = 20           'content from cell B, could be number or number like string.
    .Cells(5, 1) = "'" & "040"  'content from cell C, could be number or number like string.

    For i = 1 To 3
        .Cells(i, 2) = .Cells(1 + (i - 1) * 2, 1)
    Next

End With

Есть ли способ избежать автоматического изменения строки в Excel в Excel?

1 Ответ

0 голосов
/ 13 февраля 2020

Другое решение:

Sub test()

    Dim Lastrow As Long
    Dim str As String

    With ThisWorkbook.Worksheets("Sheet1")

        str = "00005"

        With .Range("A1")
            'Change cell format to TEXT before you enter value
            .NumberFormat = "@"
            .Value = str
        End With

    End With

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