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

标签 vba excel

这里的第一个问题。我整个早上都在绞尽脑汁想在 Excel 的 VBA 中做的最简单的事情:获取用户在自定义对话框中输入文本框(列表框等)的值,然后通过宏复制它,进入一个单元格。不知道为什么它必须如此艰难。我已经尝试了 .Value 属性、.Text 属性等所有内容,但都显示为空白。

我会发布我的对话框的图像,但我还没有这样做的声誉。无论如何,假设它是一个带有 Amount 文本框和两个按钮的银行对话框:Ok 和 Cancel。

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

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 或者只是把它粘到一个单元格中,在这一点上,我绞尽脑汁不仅要找到答案,还要弄清楚为什么微软制造如此艰难只是为了获得一个值(value)从一件事开始并将其放入一个单元格中。

按钮也一样:我想知道如何告诉宏按下了哪个按钮。我已经尝试使用任何看起来很有希望的属性,以及调整 .Top 属性,以便我可以比较该数字。一切。没有任何工作。

任何帮助都会很棒。我整个早上都被困在这个问题上。

最佳答案

您想将按钮添加到表单,而不是工作表。
因此,您在工作表上有 1 个按钮,上面写着“输入金额”,它运行以下内容:

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

关于vba - 从 MS Excel 自定义对话框中的控件获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32337991/

相关文章:

vba - 从函数返回数组时类型不匹配

excel - 如何在 Excel 中逐行条件设置色标格式

excel - 从列号获取列名?

vba - 如何使 For-Each 循环向后运行

vba - Excel VBA - 在日历中输入开始和结束日期

php - 如何使用 Excel 更新 mySQL 数据库中的列

charts - 使用VBA将多个数据系列添加到Excel图表

excel - Excel VBA中.Delete和.Clear之间的区别?

Python Win32,如何将 XLS 保存为 CSV?

r - 将 Excel 数字转换为日期