对Activex文本框的拼写检查已停止工作

时间:2018-04-20 18:36:42

标签: excel vba textbox activex activexobject

我在下面编辑了这个问题,因为我使用相同的代码对另一个工作簿中的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

0 个答案:

没有答案