从MS Excel自定义对话框中的控件获取值

时间:2015-09-01 17:52:14

标签: excel vba excel-vba

这里的第一个问题。我整个上午一直绞尽脑汁想要在Excel的VBA中做最简单的事情:在自定义对话框中获取用户键入文本框(列表框等)的值通过宏将其复制到单元格中。不知道为什么它必须如此可笑。我已经尝试过.Value属性,.Text属性,所有内容,但这一切都是空白的。

我发布了对话框的图片,但我还没有声名鹊起。无论如何,只要假设它是一个带有金额文本框和两个按钮的银行对话框:确定和取消。

这是我的代码,减少到必要的位:

Sub AddTransaction()
    frmAddTransaction.Show
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = frmAddTransaction.txtAmount.Value
End Sub

Private Sub cmdCancel_Click()
    Unload frmAddTransaction
End Sub

Private Sub cmdOk_Click()
    Unload frmAddTransaction
End Sub

正如我所说,我已经尝试过.Value和.Text属性以及其他所有想到的内容。我试过将它扔进一个MsgBox或只是把它放进一个单元格中,此时,我绞尽脑汁不仅找到答案,而且弄清楚为什么微软制造这么难从一件事物中获取一个值并将其放入一个单元格中。

按钮也是如此:我想知道如何告诉宏按下了什么按钮。我尝试过使用任何远远看起来很有前途的属性,以及调整.Top属性以便我可以比较这个数字。一切。没有什么工作。

任何帮助都会很棒。我整个上午一直坚持这一点。

1 个答案:

答案 0 :(得分:0)

您想要将按钮添加到表单,而不是表单。 因此,您在表单上有一个“输入金额”按钮,该按钮运行以下内容:

Private Sub CommandButton1_Click()
 frmAddTransaction.Show
End Sub

用户表单有3个元素:输入框(txtAmount)和两个按钮。

Private Sub Cancel_Click()
    Me.Unload
End Sub

Private Sub OK_Click()
    'modify this to add it to the correct cell
    ActiveCell.Offset(0, 0).Value = txtAmount.Value
    Me.Unload
End Sub