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

这里第一个问题。 整天早上,我一直在绞尽脑汁,想要在Excel的VBA中做最简单的事情:在自定义对话框中获取用户input到文本框(列表框等)中的值,并通过macros,进入一个单元格。 不知道为什么它必须如此荒谬的艰难。 我已经尝试过.Value属性,.Text属性,所有东西,但是都是空白的。

我会发布我的对话框的图像,但我还没有声誉尚未这样做。 无论如何,只要假定它是一个带有金额文本框和两个button的银行对话框:Ok和Cancel。

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

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中,或者只是将它粘贴到一个单元格中,在这一点上,我绞尽脑汁不仅find答案,而且要弄清楚为什么微软为了获取价值而变得如此艰难从一件事,并把它放到一个单元格。

同样的事情与button:我想知道如何告诉macrosbutton被按下。 我试过使用任何属性,即使远程看起来很有前途,以及调整.Top属性,所以我可以比较这个数字。 一切。 没有任何工作。

任何帮助将是伟大的。 我一直坚持在这一整个上午。

您想将button添加到表单,而不是表单。 所以你在工作表上有一个button,上面写着“input金额”,它运行以下内容:

 Private Sub CommandButton1_Click() frmAddTransaction.Show End Sub 

用户表单有3个元素:一个input框(txtAmount)和两个button。

 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