Excel宏运行后为何货币/会计格式含公式单元格变为自定义格式?
问题:VBA宏保存后货币/会计格式变为自定义格式
我编写了一段VBA宏,用于遍历指定目录中的Excel文件,更新每个文件内同名工作表的指定值。该工作表在所有文件中均处于保护状态,操作时仅需解除保护。遇到的问题是:通过宏完成更新并保存文件后,工作簿中所有设置为货币或会计格式且包含公式的单元格,格式全部变为自定义格式;但若在宏执行到关闭文件前手动终止并手动保存文件,再次打开时格式显示正常。
测试用最简代码
Sub moveBill() Dim ws As Worksheet Dim rng As Range Dim objFs As Object Dim objFolder As Object Dim file As Object Dim folder As String Dim fileCount As Integer Dim pw As String pw = "1234" folder = "C:\Excel-test" Set objFs = CreateObject("Scripting.FileSystemObject") Set objFolder = objFs.GetFolder(folder) fileCount = 0 ' Loop through all the files in the folder. For Each file In objFolder.Files If Left(file.Name, 12) <> "FINAL REPORT" Then Dim src As Workbook ' The source workbook. Set src = Workbooks.Open(file.Path, True) Set ws = src.Worksheets("Fakturaunderlag") Set rng = ws.Range("E1") fileCount = fileCount + 1 ws.Unprotect pw rng.value = 1 MsgBox "Go to next file" src.Close (True) Set src = Nothing End If Next MsgBox fileCount & " files have been updated" End Sub
截图说明
- 宏运行前格式截图:单元格显示正常的货币/会计格式
- 宏运行后格式截图:原货币/会计格式的单元格显示异常,格式已被改变
- 异常后的自定义格式截图:单元格格式变为自定义格式,可看到对应的格式代码
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

