Сохранить тип данных с помощью варианта прямой передачи значения - PullRequest
0 голосов
/ 19 марта 2019

Я пытался исследовать, как сохранить тип данных, используя варианты и прямую передачу значения.У меня есть столбец, который имеет значения, такие как

0001
A001
0B02
ZZZ1

Я перенесу значения из одной таблицы в другую в зависимости от имени столбца.

Dim x As Variant
Dim mc As Variant
Dim lc As Long 

x = raw_tbl.ListColumns(mc).DataBodyRange.Value
                .ListColumns(lc).DataBodyRange = x

В настоящий момент, если я скопирую приведенный выше список, он теряет форматирование данных и превращается в следующее.

1
A001
0B02
ZZZ1

Как сохранить тип данных столбца?Я хотел бы, чтобы это был текст, а не число, поэтому 0001 остается как 0001, а не число 1?

1 Ответ

1 голос
/ 20 марта 2019

Может быть что-то вроде этого:

Sub CopyOverMatches()

    Dim tbl1 As ListObject, tbl2 As ListObject
    Dim h As ListColumn, h2 As ListColumn, data

    Set tbl1 = ActiveSheet.ListObjects("Table1")
    Set tbl2 = ActiveSheet.ListObjects("Table2")

    'loop over the headers from the source table
    For Each h In tbl1.ListColumns

        'is there a column of the same name in the destination table?
        Set h2 = Nothing
        On Error Resume Next
        Set h2 = tbl2.ListColumns(h.Name)
        On Error GoTo 0

        If Not h2 Is Nothing Then '<< have a matching column

            data = h.DataBodyRange.Value

            With h2.DataBodyRange.Cells(1).Resize(UBound(data, 1), 1)
                .NumberFormat = h.DataBodyRange(1).NumberFormat
                .Value = data
            End With

        End If
    Next h

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