excel - 在 VBA 中为用户窗体中的 excel 设置文本框值仅适用于其他所有尝试
问题描述
我目前正在构建一个宏,当您 dobbeltclick 一个单元格时,它会打开一个带有文本框的用户窗体。然后,我使用您单击的单元格所在行中的数据填充文本框。
我的问题是:当我 dobbeltclick 第 4 行中的单元格时,它会打开一个带有空白文本框的用户窗体。如果我然后 dobbeltclick 该行中的另一个单元格,它将打开用户窗体,其中单元格已正确填写。
然后,如果我 dobbeltclick 另一行中的单元格,它会打开用户窗体,其中包含上一行中的数据。
同样,如果我 dobbeltclick 同一行中的另一个单元格,它会正确打开。
我的代码如下:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("N1:N200", "B3:O200")) Is Nothing Then Exit Sub
Selection.Select
currentRow = Selection.Row
redigerskadeForm.Show
redigerskadeForm.SagsNrTextbox.value = ActiveSheet.Range("B" & currentRow).value
redigerskadeForm.referenceTextbox.value = ActiveSheet.Range("C" & currentRow).value
redigerskadeForm.sagstypeComboBox.value = ActiveSheet.Range("D" & currentRow).value
redigerskadeForm.adresseTextbox.value = ActiveSheet.Range("E" & currentRow).value
redigerskadeForm.postTextbox.value = ActiveSheet.Range("F" & currentRow).value
redigerskadeForm.kontaktTextBox.value = ActiveSheet.Range("G" & currentRow).value
redigerskadeForm.tlf1Textbox.value = ActiveSheet.Range("H" & currentRow).value
redigerskadeForm.tlf2Textbox.value = ActiveSheet.Range("I" & currentRow).value
redigerskadeForm.mailTextbox.value = ActiveSheet.Range("J" & currentRow).value
redigerskadeForm.ansvarComboBox.value = ActiveSheet.Range("K" & currentRow).value
redigerskadeForm.opDatoTextbox.value = ActiveSheet.Range("L" & currentRow).value
redigerskadeForm.foDatoTextbox.value = ActiveSheet.Range("M" & currentRow).value
redigerskadeForm.statusComboBox.value = ActiveSheet.Range("N" & currentRow).value
redigerskadeForm.noteTextbox.value = ActiveSheet.Range("o" & currentRow).value
End Sub
解决方案
代码需要在打开表单之前更改值,如下所示:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("N1:N200", "B3:O200")) Is Nothing Then Exit Sub
Selection.Select
currentRow = Selection.Row
redigerskadeForm.SagsNrTextbox.value = ActiveSheet.Range("B" & currentRow).value
redigerskadeForm.referenceTextbox.value = ActiveSheet.Range("C" & currentRow).value
redigerskadeForm.sagstypeComboBox.value = ActiveSheet.Range("D" & currentRow).value
redigerskadeForm.adresseTextbox.value = ActiveSheet.Range("E" & currentRow).value
redigerskadeForm.postTextbox.value = ActiveSheet.Range("F" & currentRow).value
redigerskadeForm.kontaktTextBox.value = ActiveSheet.Range("G" & currentRow).value
redigerskadeForm.tlf1Textbox.value = ActiveSheet.Range("H" & currentRow).value
redigerskadeForm.tlf2Textbox.value = ActiveSheet.Range("I" & currentRow).value
redigerskadeForm.mailTextbox.value = ActiveSheet.Range("J" & currentRow).value
redigerskadeForm.ansvarComboBox.value = ActiveSheet.Range("K" & currentRow).value
redigerskadeForm.opDatoTextbox.value = ActiveSheet.Range("L" & currentRow).value
redigerskadeForm.foDatoTextbox.value = ActiveSheet.Range("M" & currentRow).value
redigerskadeForm.statusComboBox.value = ActiveSheet.Range("N" & currentRow).value
redigerskadeForm.noteTextbox.value = ActiveSheet.Range("o" & currentRow).value
redigerskadeForm.Show
End Sub
推荐阅读
- c# - 使用 .Net 4.5.2 从 Dynamics Customer Engagement 检索数据
- r - 获取包含alter的alter的边缘列表
- javascript - 使用变量访问连字符属性
- vuejs2 - 如何判断 Vue-Router 导航钩子是否由“推送”触发?
- java - 使用 `dayTimeDuration` 函数时编译 XSL 文件的问题
- certificate - 如何使用 azure powershell 从公共证书(.cer 和 .pfx)中提取 blob
- php - PHP将变量传递给变量
- c# - 根据应用身份验证更改母版页项目标签
- html - 使嵌入的 Youtube 视频缩略图可打印(@media print)
- apache-kafka-streams - 使用弹簧执行器 (prometheus) 公开 kafka 流指标