防止编辑某些单元格用户窗体
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
语句可防止代码减少空单元格的内容。
我有一个带有列表框的用户表单,我可以 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
语句可防止代码减少空单元格的内容。