|
现在有一个份word数据,全部为数值,需要把所有数据放大1.6倍,原来为整数的,则保留整数;原来为一位小数的,则保留一位小数;原来为二位小数的,则保留二位小数。数据见附件。
vba代码如下:
Sub 放大1点6倍并修改格式()
Dim i, j, ws, x
Const fangd = 1.6 '声明一个常量
x = 0
Application.ScreenUpdating = False '关闭屏幕刷新
'外循环体
For Each ws In ActiveDocument.Tables
'行循环体
For i = 1 To ws.Rows.Count Step 1
'列循环体
For j = 1 To ws.Columns.Count Step 1
If ws.Cell(i, j).Range.find.Text = "[0-9]{1,}.[0-9][0-9]" Then
ws.Cell(i, j).Range.Text = Round(Val(ws.Cell(i, j).Range.Text) * fangd, 2)
ElseIf ws.Cell(i, j).Range.find.Text = "[0-9]{1,}.[0-9]" Then
ws.Cell(i, j).Range.Text = Round(Val(ws.Cell(i, j).Range.Text) * fangd, 1)
ElseIf ws.Cell(i, j).Range.Text <> "" Then
ws.Cell(i, j).Range.Text = Round(Val(ws.Cell(i, j).Range.Text) * fangd, 0)
ElseIf ws.Cell(i, j) = "" Then
ws.Cell(i, j).Range.InsertAfter "-"
End If
Next j
Next i
x = x + 1
Next ws
Application.ScreenUpdating = True '开启屏幕刷新
MsgBox "共修改了" & x & "个表"
End Sub
问题:
程序可运行,但前两个判断条件不起作用,数据全部只保留到整数。
不知道应该如何修改判断条件?
而且最后的 ElseIf ws.Cell(i, j) = "" Then ws.Cell(i, j).Range.InsertAfter "-" 代码最后在单元格中写入的是0,而不是-。
求助大神,万分感激!
|
|