如何使用excel宏模块格式化excel电子表格单元格?

如何使用excel宏模块格式化excel电子表格单元格?,excel,vba,Excel,Vba,我完全不熟悉MS Excel和VBA宏。我想知道如何使用宏VB格式化单元格或在电子表格上有一个整体控件。我这里有一个非常简单的代码来说明我想知道的 宏格式测试.xlsm: 在代码中 ws.Cells(1, 1) = "ID" ws.Cells(1, 2) = "Name" ws.Cells(1, 3) = "Address" 我希望它们显示为粗体、斜体和居中。我还想使用代码设置列宽。我该怎么做???请帮忙。你也可以给我一些关于这方面的参考资料,因为每次我尝试谷歌,我所能看到的就是如何添加Use

我完全不熟悉MS Excel和VBA宏。我想知道如何使用宏VB格式化单元格或在电子表格上有一个整体控件。我这里有一个非常简单的代码来说明我想知道的

宏格式测试.xlsm

在代码中

ws.Cells(1, 1) = "ID"
ws.Cells(1, 2) = "Name"
ws.Cells(1, 3) = "Address"
我希望它们显示为粗体、斜体和居中。我还想使用代码设置列宽。我该怎么做???请帮忙。你也可以给我一些关于这方面的参考资料,因为每次我尝试谷歌,我所能看到的就是如何添加UserForm,而我现在并不需要它。提前谢谢

With Range("A1:C1")
    .HorizontalAlignment = xlCenter
    .Font.Italic = True
    .Font.Bold = True
    .EntireColumn.ColumnWidth = 15
End With

顺便说一句,要想知道这样的宏是什么,最简单的方法是单击录制宏按钮,手动进行更改,然后检查为您生成的代码。它并不总是最有效的代码,您通常需要稍微调整它,但它应该会给您一个基本的想法。

我假设您希望在激活的工作表上运行此代码,因此您对当前工作表的取消保护看起来与您将Sheet1定义为要处理的工作表不一致

但由于您确实使用了一个工作表变量ws,那么您将应用Paul的格式化部分,如下所示,以与您的代码保持一致(即处理存储在ws中的工作表)。此外,将一次性数组写入范围比逐个单元格写入更有效。在您的3单元示例中不可见,但在写入1000个值时会很明显

Private Sub Worksheet_Activate()
    Me.Unprotect
    Me.Cells.ClearContents
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    Dim MyArray()
    MyArray = Array("ID", "Name", "Address")
    With ws.Range(ws.[a1], ws.[c1])
        .Value = MyArray
        .HorizontalAlignment = xlCenter
        .Font.Italic = True
        .Font.Bold = True
        .EntireColumn.ColumnWidth = 15
    End With
    Me.Protect
End Sub

谢谢你的回答。这给了我一个想法。录制宏提示是我听说过的最简单的编程方法之一。谢谢这一个。。。这对我的项目有很大帮助。
Private Sub Worksheet_Activate()
    Me.Unprotect
    Me.Cells.ClearContents
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    Dim MyArray()
    MyArray = Array("ID", "Name", "Address")
    With ws.Range(ws.[a1], ws.[c1])
        .Value = MyArray
        .HorizontalAlignment = xlCenter
        .Font.Italic = True
        .Font.Bold = True
        .EntireColumn.ColumnWidth = 15
    End With
    Me.Protect
End Sub