防止编辑某些单元格用户窗体

prevent editing certain cells userform

我有一个带有列表框的用户表单,我可以 select 然后通过文本框动态编辑。

但是,我注意到文本框存在一些问题,导致它取消select 列表框,然后改为编辑 A1(第 header 列)。

当我在空文本框上退格时,文本框将取消select列表框

Private Sub ListBox1_Click()
TextBox1.Value = ListBox1.Value
End Sub

Private Sub TextBox1_Change()
Dim rCell As Range
With ListBox1
Set rCell = Range(.RowSource).Offset(.ListIndex).Resize(1)
rCell.Value = TextBox1.Value
End With
End Sub

行源:Table!A2:A1048576

对代码的这种修改将解决您描述的问题。

Private Sub TextBox1_Change()

    Dim rCell As Range
    
    With ListBox1
        If .ListIndex >= 0 Then
            Set rCell = Range(.RowSource).Cells(.ListIndex + 1)
            rCell.Value = TextBox1.Value
        End If
    End With
End Sub

请注意,您对 Range(.RowSource).Offset(.ListIndex).Resize(1) 的原始定义与我的 Range(.RowSource).Cells(.ListIndex + 1) 具有完全相同的效果。我的编码更直接。不同之处在于添加的 If 语句可防止代码减少空单元格的内容。