WORD表格中少量、简单、分配合理计算公式使用域计算,也不失为一种好方法至少可以免去在EXCEL中的复制与粘贴工作或者以插入对象的方式进行。
如何使WORD中的公式类似EXCEL中填充那样方便,是本贴进行研究的对象,当然受到WORD资源限制仅能部分类似,但也总算是一种自慰吧,也是对EXCEL不熟悉的网友的一种帮助更是WORD中域功能的一种开发。
显然,它需要有严格的限制,只能在符合数据库特征的表格中进行并且,公式在列中填充时公式中引用的行号是一致的,如最后一列为E列,则必须是类似于E1=A1+B1-C1*D1,即同一行号引用;如果是在行中填充,如最后一行为6, 则必须是类似于A6=A1/A2*A3+A4-A5形式即其中的列号(A)为同一列引用。
但在最终测试过程中我发现了一个奇怪的问题部分机器不完全支持以下代码主要是行中的公式填充。
请在使用之前确认工具/选项/视图/域代码前打勾。
希望能对大家有所裨益。
Sub AutoFormula()
Dim RsNum As Integer, Csnum As Byte, ReNum As Integer, CeNum As Byte, i As Integer
On Error GoTo ErrorHandle
With Selection
RsNum = .Information(wdStartOfRangeRowNumber)
Csnum = .Information(wdStartOfRangeColumnNumber)
ReNum = .Information(wdEndOfRangeRowNumber)
CeNum = .Information(wdEndOfRangeColumnNumber)
Application.ScreenUpdating = False
.Cells(1).Range.Fields(1).Copy
.Paste
ActiveWindow.View.ShowFieldCodes = True
If Csnum = CeNum Then
For i = RsNum + 1 To ReNum
.Tables(1).Cell(i, CeNum).Range.Find.Execute findtext:=RsNum, replacewith:=i, Replace:=wdReplaceAll
Next
End If
If RsNum = ReNum Then
For i = Csnum + 97 To CeNum + 96
.Tables(1).Cell(RsNum, i - 96).Range.Find.Execute findtext:=Chr(Csnum + 96), MatchCase:=False, replacewith:=Chr(i), Replace:=wdReplaceAll
Next
End If
ActiveWindow.View.ShowFieldCodes = False
ActiveDocument.Fields.Update
Application.ScreenUpdating = True
End With
Exit Sub
ErrorHandle:
MsgBox "请检查域公式或者选定区域是否为表格中以及选定区域是否为表格中", vbOKOnly + vbInformation
End Sub
|