excel - 必须使用 VBA 在 Excel2010 中复制单元格格式

标签 excel vba

我正在尝试编写代码以将单个长电子表格解析为多张工作表。我有解析代码工作,复制和粘贴也工作。但是粘贴只会以默认宽度创建单元格。我需要复制所有单元格格式。也就是说,单元格高度、宽度、背景颜色、前景色、边框等。该部分正在生成运行时 1004 错误。下面是我的代码:

Sub SplitData()

mycount = 0
myrow = 0

Do
   mycount = mycount + 1
   oldrow = myrow + 1
   Sheets("Master").Select

   Do
      myrow = myrow + 1
   Loop Until Left(Sheets("Master").Range("A" & myrow), 4) = "Run:"

   Sheets.Add
   ActiveSheet.Name = "Data" & mycount
   Sheets("Master").Select
   Rows(oldrow & ":" & myrow).Select
   Selection.Copy
   Sheets("Data" & mycount).Select
   Range("A1").Select
   ActiveSheet.Paste 
   ActiveSheet.PasteSpecial xlPasteFormats ' (THE ERROR OCCURS HERE)
Loop Until Left(Sheets("Master").Range("A" & myrow + 1), 3) = "xxx"

End Sub

我是一个非常有经验的 VBA 编码器,但对 Excel 语法完全是新手。有人可以帮我解决这个问题吗? “xlPasteAll”属性也失败了,这是我首先使用单个 PastSpecial 方法尝试的。

任何想法将不胜感激!

谢谢

最佳答案

尝试这个

Selection.Copy
Sheets("Data" & mycount).Select
With Range("A1")
    .PasteSpecial xlValues
    .PasteSpecial xlPasteFormats
End With

跟进

This works physically, But for some reason, it is not actually copying the formatting (cell sizes etc). It's getting fonts and text colors okay, but not cell sizes or merged cells or visible borders.




这是你正在尝试的吗?
Sub SplitData()
    Dim ws As Worksheet

    mycount = 0
    myrow = 0

    Do
       mycount = mycount + 1
       oldrow = myrow + 1
       Sheets("Master").Select

       Do
          myrow = myrow + 1
       Loop Until Left(Sheets("Master").Range("A" & myrow), 4) = "Run:"

       Set ws = Sheets.Add
       ws.Name = "Data" & mycount
       Sheets("Master").Rows(oldrow & ":" & myrow).Copy ws.Rows(1)
    Loop Until Left(Sheets("Master").Range("A" & myrow + 1), 3) = "xxx"
End Sub

关于excel - 必须使用 VBA 在 Excel2010 中复制单元格格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538432/

相关文章:

excel - 有没有办法限制使用 VBA 删除工作表中的行?

linux - Perl 编写 excel 以在各种工作表中创建包含包含公式的单元格的图表

vba - 如何在 VBA 的 for 循环中添加 if 语句?

excel - 如何获取Excel单元格的 "Name Box"名称?

php - 从 PHP 导出到 Excel

c# - Kendo Grid 将所有数据打印到 Excel,而不仅仅是可见数据

excel - 如果你知道它的左上角单元格行和列,你可以直接选择一个形状吗

vba - excel工作表比较两个不同的列,如果匹配,则将其接下来的两个单元格复制到新列中

excel - 如何在循环中应用两个条件?

arrays - 将数组传递给函数时,Variant 与 String 类型不匹配