VBA转置代码需要在结果列中保持原始格式(字体大小、居中等)

VBA转置代码需要在结果列中保持原始格式(字体大小、居中等),vba,Vba,下面的VBA代码非常有效,但列E中的结果需要保留原始源数据格式,如字体类型和大小、单元格居中等。如何修改下面的VBA代码来实现这一点 将给定范围的多行转置到单个空白列E的VBA代码: Sub RangeToColumn() Dim varray As Variant Dim i As Long, j As Long, k As Long Application.ScreenUpdating = False k = 1 varray = Range("A

下面的VBA代码非常有效,但列E中的结果需要保留原始源数据格式,如字体类型和大小、单元格居中等。如何修改下面的VBA代码来实现这一点

将给定范围的多行转置到单个空白列E的VBA代码:

Sub RangeToColumn()
Dim varray As Variant
Dim i As Long, j As Long, k As Long
    Application.ScreenUpdating = False
    k = 1
    
    varray = Range("A1:D4").Value
    For i = 1 To UBound(varray, 1)
        For j = 1 To UBound(varray, 2)
            Cells(k, 5).Value = varray(i, j)
            k = k + 1
        Next
    Next
    
    Application.ScreenUpdating = True

End Sub
我需要此代码来创建零件库存标签。数据按行导入Excel,但标签打印机仅使用一列)。此线程中列出的代码非常有效,但不会将字体样式等复制到要打印的E列。列E中的每一打印行(行)可以使用不同的字体大小或其他字体

谢谢你的建议


GriveousAngel

逐单元格复制和粘贴:

Sub RangeToColumn()
    Dim k As Long, cl As Range
        Application.ScreenUpdating = False
        k = 1
        For Each cl In Range("A1:D4")
            cl.Copy
            Cells(k, 5).PasteSpecial Paste:=xlPasteAll
            k = k + 1
        Next
        Application.ScreenUpdating = True
    End Sub

将范围转换为数组时,您只是获取范围内的数据,格式等不属于数组的一部分。EvR下面的帖子将解决您的问题,因为它将复制并通过单元格,包括其格式。如果你的两个范围都是连续的,你可能会减少一些循环。