Tag: 表单

使用命令button更改单元格的颜色(VBA Excel)

我目前有一个用户表单加载三个命令button(小学,中学和第三)。 这里的想法是用户将使用这三个button来select他们自己的配色scheme。 我的工作簿中有单元格代表每种颜色,然后是运行时将所有图表对象设置为这些颜色(使用单元格)的macros。 我设法初始化用户窗体,以便三个命令button的内部颜色由我的工作簿中的三个单元格确定: Private Sub UserForm_Initialize() Dim cs As Worksheet Set cs = Sheets("ColourScheme") TextBox1.SetFocus '' Shift focus away from primary Primary.BackColor = cs.Range("B1").Interior.color Secondary.BackColor = cs.Range("B2").Interior.color Tertiary.BackColor = cs.Range("B3").Interior.color End Sub 我现在要做的是,当每个button被点击时,调色板加载,用户使用轮或RGB图select一种颜色,然后最终我的工作簿中的单元格和命令button内部颜色更改基于用户的select。 我不知道这是否可以完成,但到目前为止,我没有运气,我试图加载调色板: Private Sub Primary_Click() Application.Dialogs.Item(xlDialogColorPalette).Show End Sub

在标签内的图像捕获

我有一个用户窗体,其中包含一些图像的button。 然后我有三个空白标签,当我点击button/图像时,图像出现在第一个标签中。 然后,如果我点击另一个button/图像,第二个标签是图像,第三个是相同的。 36个button,标记为btn1至btn36三个空白标签名为capture1 capture2 capture3 我不确定是否需要发布任何其他信息。 我需要帮助编写代码(VBA)

在任何鼠标点击之后,将代码放入循环中以退出循环

在用户窗体上,我正在通过切换其可见性来closures/closures帧。 它闪烁不定次数然后停止,但是在闪烁之间它检查用户活动。 如果鼠标在窗体的任何地方或任何包含的控件上单击,则闪烁将立即停止。 这是我的blinker看起来像。 For i = 1 To numberOfBlinks <blink twice> DoEvents If <click detected> Then Exit Sub Next i 一切工作正常,除了<click detected>部分。 我如何从循环内部做到这一点?

Excel用户窗体combobox属性Rowsource框问题?

我在Excel中有一个用户表单,用作计算器。 在这个用户表单中,我有两个combobox(1和2) 在VBA编辑器中,selectComboBox1,在属性中,在Rowsourse下我有:Sheet1!a4:a5 在Sheet1中,A4 =奥克兰,A5 =基督城 这很好,当我运行用户表单时,有一个带有两个选项(奥克兰或基督城)的下拉箭头。 然而,我的问题是,当你打开这个工作簿,我有一个VBA命令来隐藏它的用户视线,让他们只有用户窗体工作,这是所期望的。 问题是,如果你有另一个工作簿打开,然后打开这个计算器工作簿(自动隐藏自己)。 然后在已打开的另一个工作簿中填写Sheet1!a4:a5的combobox列表,而不是实际包含用户窗体所来自的“Auckland”和“Christchurch”的工作簿。 我已经尝试通过将下列内容放在行来源框中属性:[book1.xlsm] sheet1!a4:a5,但是这会出现“无效的属性值”错误消息,使combobox的Rowsource更具体。 我也试过做一个: Private Sub Userform1_Initialize() ComboBox1.Additem "Auckland" ComboBox1.Additem "Christchurch" End Sub 而且也试过这个: Private Sub Userform1_Initialize() ComboBox1.RowSource = Workbooks("book1.xlsm").Sheets("Sheet1").Range("a4:a5").Value End Sub 但是,当两个代码打开并运行时,combobox都是空的,没有列表。 我认为easist解决scheme将以某种方式将完整path(包括工作簿名称)放入属性下的行源框中。 但是我必须错过一些东西,因为它为我提供了这个错误? 所有的帮助将不胜感激。 谢谢

VBA用户界面:防止键盘上的COMBOBOX ESCAPE

社区, 在列表结束(或开始)时,有一种方法可以防止活动combobox在按下向下箭头(或向上箭头)时失去焦点。 如果有更好的方法来做到这一点(最好有一个MS标准属性),请分享。 问题:当在combobox列表的最后,如果你点击向下的箭头,它会移动到任何控制物理下的活动combobox。 反之亦然,因为在一个combobox的顶部,并击中向上的箭头。 这是草率的,适得其反。 MS Excel 2013。 解决scheme:为了防止这种焦点丢失,在用户窗体的ComboBox代码中,可以input以下内容: Private Sub Item1_DropDown_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyDown If Item1_DropDown.ListIndex = Item1_DropDown.ListCount – 1 Then Item1_DropDown.ListIndex = Item1_DropDown.ListIndex – 1 'when at the bottom, stay in active combobox Else: Item1_DropDown.ListIndex = Item1_DropDown.ListIndex 'if not at the bottom, keep […]

vbTrue不是真的

Excel常数“True”评估为True,常量“vbTrue”评估为-1。 我一直认为这些在VBA代码中是可以互换的,但事实并非如此。 这两个常量产生不同结果的地方是设置CheckBoxes。 将CheckBox.value设置为True会产生预期的结果,但将其设置为vbTrue会将CheckBox留在TripleState中。 Sub setCkBox1() CheckBox1.TripleState = False CheckBox1.Value = vbTrue '<<<< the check mark is dimmed to show TripleState is True Debug.Print CheckBox1.TripleState: Stop '<<<< even though it won't admit it CheckBox1.Value = True '<<<< check mark is not dimmed End Sub 所以我的问题是,在VBA的哪些地方这两个常量是不可互换的?

在模块中调用UserForm_Initialize()

如何在Module调用UserForm_Initialize()而不是UserForm代码对象?

允许用户在Excel多页面用户窗体中复制页面

我在这里发布这个问题,因为我实际上发现了另一个类似于这个问题,“复制元素从一个页面到另一个Excel中的VBA与多页”我仍然有问题,因为我不知道这将如何工作。 不过,我仍然需要将我的数据字段放入一个框架中。 我需要允许用户根据需要添加尽可能多的页面,而一些用户的内容将随之移动,而有些则不会。 有一个用户告诉系统有多less次需要复制它的字段会更好吗? 或者我应该只是有一个button,说:“复制此页面” 此外,除了UserForm页面被重复用于用户input,我还需要该过程来复制Excel工作表以关联Userform中的每个重复的页面。 帮助与此将不胜感激!

在多个监视器上居中用户窗体

我在网上search了一段时间,我find了一些解决scheme,但没有一个似乎帮助我。 我在Excel 2010中有一个用户窗体,我想在Excel窗口中居中。 我有双显示器,似乎总是在两台显示器之间。 我知道有些属性可以编辑,比如StartUpPosition等等,来控制它去哪里,但是看起来改变这些参数什么都不做。 这是我在网上find的代码,许多用户certificate他们为他们工作。 我的表单被命名为“HighlightForm” Private Sub HighlightForm_Activate() With HighlightForm .StartUpPosition = 0 .Left = Application.Left + (0.5 * Application.Width) – (0.5 * .Width) .Top = Application.Top + (0.5 * Application.Height) – (0.5 * .Height) .Show End With End Sub 然而,这并没有改变我的表格放在哪里。 它仍然在中心。 我什至尝试改变所有这些参数为零,无济于事。 我把这个代码放在UserForm代码本身,我知道这是正确的位置。 我也尝试了HighlightForm_Initialize(),它仍然不会响应任何更改。 有什么明显的东西我失踪了吗? 我不认为这是一个非常困难的问题,但我真的很难过。 在此先感谢您的帮助。

从vbscript自动填充excel文件中的Excel用户窗体

我有一个Excel文件,充满了macros,函数和用户表单,可以帮助用户在这个Excel文件中正确地填充数据。 我需要编写一个访问其中一个用户窗体的VBScript。 自动填充。 我知道如何调用工作簿中存在的VBAmacros。 objExcel.Application.Run"'CAM0500040F10_SW_Quality_Assurance_Report_Template (05-11-2012).xlsm'!new_document()" 但现在我需要能够从我的代码填充一个用户表单。 有没有办法做到这一点?