我对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。提前谢谢。
答案 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