如何解决Excel VBA中的引用编辑错误

vzgqcmou  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(171)

当我通过referdit在excel工作表中选择一个单元格并单击以下表单中的箭头按钮时:
x1c 0d1x的数据
然后再次单击该参考编辑器中的按钮



然后选择一个单元格,在框中将有两个单元格,它们之间没有逗号(虽然第一个单元格的地址有时会更改为第二个单元格,但通常第一个单元格的地址不会删除):



如果我想用这个字符串作为一个范围,这会导致一个错误。我该如何解决这个问题?通过一些额外的代码?我的Excel-2016有问题吗?
如果我能在小窗口出现时清除referdit,那就很好了。但是代码refedit.value="”或refedit.delete不起作用。

Private Sub RefEdit1_Change()

Dim ra11 As Range
Set ra11 = Range(RefEdit1.Value)
k = ListBox8.ListCount
Dim ra22 As Range
For Each ra22 In ra11
    ListBox8.AddItem
    ListBox8.List(k, 0) = sh2.Cells(ra22.Row, rff1p_s.Column)
    ListBox8.List(k, 1) = sh2.Cells(ra22.Row, icolsar1p(14))
    k = k + 1
Next ra22

End Sub

字符串

hs1ihplo

hs1ihplo1#

VBA中的RefEdit控件历来存在此问题。下面的Exit事件代码尝试在文本(范围引用)错误时清除该文本。我希望代码是有帮助的。

Private Sub RefEdit1_Exit()
    Ref = Me.RefEdit1.Text
    If VBA.InStr(Ref, ",") = 0 Then
        If Len(Ref) - Len(Replace(Ref, "!", "")) >1  Then Me.RefEdit1.Text = ""
    Else
        For Each subRef In Split(Ref, ",")
            If Len(subRef) - Len(Replace(subRef, "!", "")) >1  Then
                Me.RefEdit1.Text = ""
                Exit For
            End If
        Next
    End If
End Sub

字符串

ljo96ir5

ljo96ir52#

根据我的评论,将添加一个解决方案,以避免使用一个故障RefEdit控件。
先决条件。
对照:
-UserForm

  • 文本框
  • 命令按钮
    x1c 0d1x的数据
    变量:
    -rangeToSet As Range -要分配的主范围
    -inptResult As Range -执行选择检查的InputBox结果变量
    -isRangeSelected As Boolean -用于进一步检查的模块全局布尔变量
    使用方法:
    按下按钮并选择范围:)
    代码:
Option Explicit

Dim isRangeSelected As Boolean

Private Sub selectRangeButton_Click()
Dim rangeToSet As Range
Dim inptResult As Range

Me.rangeTextBox.Text = ""

On Error Resume Next
Set inptResult = Application.InputBox(Prompt:="Select range", Type:=8)
Err.Clear
On Error GoTo 0

If Not inptResult Is Nothing Then
    Set rangeToSet = inptResult
    isRangeSelected = True
    Me.rangeTextBox.Text = rangeToSet.Address
Else
    Me.rangeTextBox.Text = "The range is not selected"
    isRangeSelected = False
End If

End Sub

字符串

相关问题