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

时间:2011-09-23 01:45:52

标签: excel vba

我对MS Excel和VBA Macro完全不熟悉。我想知道如何使用Macro VB格式化单元格或对电子表格进行整体控制。我这里有一个非常简单的代码,只是为了说明我想知道的内容。

macro_format_test.xlsm

Private Sub Worksheet_Activate()
    Me.Unprotect
    Me.Cells.ClearContents

    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")

    ws.Cells(1, 1) = "ID"
    ws.Cells(1, 2) = "Name"
    ws.Cells(1, 3) = "Address"

    Me.Protect
End Sub

在代码中......

ws.Cells(1, 1) = "ID"
ws.Cells(1, 2) = "Name"
ws.Cells(1, 3) = "Address"

我希望那些看起来像粗体,italized和居中。我还想使用代码设置列宽。我该怎么办?请帮忙。你也可以给我一些关于这方面的参考,因为我每次尝试google时都能看到如何添加我目前不需要的UserForm。提前谢谢。

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:3)

我认为你想在激活的工作表上运行它,所以当前工作表的取消保护看起来与你不一致,然后将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