首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消文档保护、运行sub和保护文档时出现VBA错误( if/thens范围似乎不起作用,但基本if then起作用)

取消文档保护、运行sub和保护文档时出现VBA错误( if/thens范围似乎不起作用,但基本if then起作用)
EN

Stack Overflow用户
提问于 2021-08-17 18:01:11
回答 1查看 34关注 0票数 1

我有一个用户表单,它取消对文档的保护,让信息输入到文档中,并在它保护我的文档之后。我所有的subs都设置好了,都在旁边工作,这给了我一个问题:

sub的工作示例:

代码语言:javascript
复制
Private Sub ComboBox5_Change()
ActiveDocument.Unprotect "password"
    Dim ComboBox5 As Range
    Set ComboBox5 = ActiveDocument.Bookmarks("bmragpd").Range
    ComboBox5.Text = Me.ComboBox5.Value
    
    If Me.ComboBox5.Value = "No" Then
    ComboBox5.Text = "205.55a"

    End If
    
    If Me.ComboBox5.Value = "Yes" Then
    ComboBox5.Text = ""

    
    End If
    ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:=True, Password:="password"
End Sub

由于某些原因,这个sub不能工作,并会说文档已经不受保护了,有什么建议可以解决这个问题吗?我试着删除combobox6上的未保护功能,但似乎也不起作用:

代码语言:javascript
复制
Private Sub ComboBox6_Change()
ActiveDocument.Unprotect "password"

   Dim rngComboBox6 As Range

Dim sssaText As String

Dim iiia As Integer

    Set rngComboBox6 = ActiveDocument.Bookmarks("bmfcs").Range

    sssaText = ComboBox6.Value

    If Me.ComboBox6.Value = "Yes" Then

        For iiia = 1 To 1

    sssaText = sssaText & Chr(13) & "200" _
    & Chr(13) & "200.1" _
    & Chr(13) & "" _
    & Chr(13) & "OEBS" _
    & Chr(13) & "" _
    & Chr(13) & "21c" _
    & Chr(13) & "" _
    & Chr(13) & "22c" _
    & Chr(13) & "Yes" _
    & Chr(13) & "" _
    & Chr(13) & "Yes" _
    & Chr(13) & "Two" _
    & Chr(13) & "" _
    & Chr(13) & "ES2a.1" _
    & Chr(13) & "" _
    & Chr(13) & "222" _
    & Chr(13) & "" _
    & Chr(13) & "222a" _
    & Chr(13) & "222b" _
    & Chr(13) & "" _
    & Chr(13) & "3.a.1" _
    & Chr(13) & "" _
    & Chr(13) & "NA" _
    & Chr(13) & "" _
    & Chr(13) & "I. TuuVa"
 
    Next iiia

    sssaText = sssaText & Chr(13) & "717217" _
    & Chr(13) & "" _
    & Chr(13) & "1212" _
    & Chr(13) & "" _
    & Chr(13) & "D.1" _
    & Chr(13) & "F2B-4"

    End If
            
    rngComboBox6.Text = sssaText

    ActiveDocument.Bookmarks.Add "bmfcs", rngComboBox6
    
     If Me.ComboBox6.Value = "No" Then
    ComboBox6.Text = ""

    End If
    
    ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:=True, Password:="password"
End Sub
EN

回答 1

Stack Overflow用户

发布于 2021-08-17 18:14:59

第一个End If放错了位置。您将向文档中添加文本,而不考虑组合框的值。

使用控件的change事件提交对文档的更改不是一种好的做法。除此之外,它不允许用户在不进行更改的情况下取消。

而是使用OK/Apply/Finish按钮。

然后,您只需取消/重新保护文档一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68822070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档