VBA:在哪里添加源格式和列宽?

我是VBA的新人,自己学习。 我能够build立一个代码,在所有表格上search一个值(以前定义为“数字”),对于那些在特定单元格中具有特定值的表单,它将复制表单中的一个范围,然后将其粘贴到新的工作表。 值得一提的是,我没有使用复制和粘贴(见下面的代码)。 代码工作正常,但我希望新的工作表保持与源相同的格式。 我已经尝试了几件事情,但工作的东西意味着我必须使用Copy / Pastetypes的编码,后来在代码中给我的问题,因为它改变了ActiveSheet 。 其他尝试不起作用。 此外,我想要修复的列宽粘贴到新工作表的范围。

下面是一段代码。 FYI =variablesNumber在代码的前面定义。 另外,在代码的前面我创build了新的工作表。

我的问题:

  1. 仇敌下面的代码,有没有一种方法来保持源的格式,而不必使用“复制”和“粘贴”types的编码。

  2. 对于下面的代码,我可以以某种方式修复新员工将粘贴的列的宽度?

如果你有更好,更优雅的方式来编写代码,我将不胜感激。

 For k = 1 To wscount - 1 If Worksheets(k).Range("F2").Value = Number Then j = j + 1 Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)).Value = Worksheets(k).Range("F1:F100").Value End If Next 

您可以将源单元格的属性值指定给目标单元格,就像使用value属性所做的一样。

 Option Explicit Public Sub CopyValueAndFormat() For k = 1 To wscount - 1 If Worksheets(k).Range("F2").Value = Number Then j = j + 1 Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)).Value = Worksheets(k).Range("F1:F100").Value 'call setFormat method setFormat Worksheets(k).Range("F1:F100"), Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)) End If Next End Sub Private Sub setFormat(source As Range, target As Range) 'set target format equal to source format With target .Value = source.Value .Interior.Color = source.Interior.Color .Font.FontStyle = source.Font.FontStyle 'add others property to format 'call AutoFit method to set column width .EntireColumn.AutoFit End With End Sub