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

我对MS Excel和VBA Macro是全新的。 我想知道如何格式化单元格,或使用macrosVB在电子表格上进行全面控制。 我在这里有一个非常简单的代码来说明我想知道的。

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" 

我希望那些显得大胆,stream利,并集中。 我也想用代码设置他的列宽。 我该怎么做? 请帮忙。 你也可以给我一些关于这个的参考,因为每次我尝试谷歌所有我可以看到是如何添加UserForm,我现在不需要。 提前致谢。

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

顺便说一下,找出macros是什么的最简单的方法是单击“ 录制macros”button,手动进行更改,然后检查为您生成的代码。 它并不总是最高效的代码,你通常不得不微调,但它应该给你一个基本的想法。

我认为你想在这个被激活的工作表上运行,所以你不保护当前工作表看起来不一致,然后将Sheet1定义为要工作的工作表

但是,因为你使用了一个表单variablesws,那么你可以像下面那样应用Paul的格式化部分来与你的代码保持一致(即在ws中存储的工作表上)。 另外写入一个单一arrays到一个范围比单元写入更高效。 在你的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