首页 > 解决方案 > 在 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

标签: excelvba

解决方案


代码需要在打开表单之前更改值,如下所示:

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

推荐阅读