我在下面编辑了这个问题,因为我使用相同的代码对另一个工作簿中的Activex文本框进行拼写检查,并且每次保存工作簿时代码都会运行拼写检查功能,但由于某种原因,相同的代码没有&# 39;在另一本工作簿中工作。此外,如果在保存时满足某个条件,则提供msgbox的代码部分可以正常工作。有谁知道为什么下面的代码不起作用或为什么它可以在一个工作簿中工作,而不是另一个?
以下代码应该在用户保存之前对excel doc上的activex文本框执行拼写检查。这之前工作正常,检查提供msgbox的条件的代码部分工作正常,但由于某种原因,代码的拼写检查部分已停止工作。有谁知道为什么?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim xObject As Object
Dim xCell As Range
On Error Resume Next
Sheets("1107").Unprotect
Set xCell = Sheets("1107").Cells(ActiveSheet.Rows.Count, ActiveSheet.Columns.Count)
If ActiveSheet.OLEObjects.Count > 0 Then
For Each xObject In ActiveSheet.OLEObjects
xCell = xObject.Object.Text
xCell.CheckSpelling , , , 1033
xObject.Object.Text = xCell
Next
End If
If Sheets("1107").Range("c7") = "1.3.13" Then
MsgBox "Incident report requires UoF Review"
End If
End Sub
我尝试更改活动表格。到表(" 1107")。到所有有活动床单的地方。
Dim xObject As Object
Dim xCell As Range
On Error Resume Next
Sheets("1107").Unprotect
Set xCell = Sheets("1107").Cells(ActiveSheet.Rows.Count, ActiveSheet.Columns.Count)
If Sheets("1107").OLEObjects.Count > 0 Then
For Each xObject In Sheets("1107").OLEObjects
xCell = xObject.Object.Text
xCell.CheckSpelling , , , 1033
xObject.Object.Text = xCell
Next
End If
我的第三次给我一个运行时错误1004-范围类的CheckSpelling方法失败
Dim xObject As Object
Dim xCell As Range
Sheets("1107").Unprotect
Set xCell = Sheets("1107").Cells(Sheets("1107").Rows.Count, Sheets("1107").Columns.Count)
If Sheets("1107").OLEObjects.Count > 0 Then
For Each xObject In Sheets("1107").OLEObjects
xCell = xObject.Object.Text
xCell.CheckSpelling , , , 1033 *****Error 1004 here*****
xObject.Object.Text = xCell
Next
End If
按建议添加新变量。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)
Dim xObject As Object
Dim xCell As Range
Dim currcell As String
Sheets("1107").Unprotect
Set xCell = Sheets("1107").Cells(Sheets("1107").Rows.Count, Sheets("1107").Columns.Count)
If Sheets("1107").OLEObjects.Count > 0 Then
For Each xObject In Sheets("1107").OLEObjects
currcell = xObject.Object.Text
xCell.CheckSpelling , , , 1033
xObject.Object.Text = xCell
Next
End If