Tag: 表单

VBA MS Excel:我可以在一个模块中写用户代码吗?

快速的问题, 有没有一种方法可以将我的Userform代码写入模块中? 我问这个问题的原因是因为我有一个多页面的用户表单,后面有越来越多的代码。 为了组织的目的,我希望能够在不同的模块中分隔代码。 但我不知道这是否可以为用户窗体完成(除了从用户窗体事件中调用子程序)。 有没有办法写一个模块中的UserForm代码,而不必从用户窗体代码调用子例程? 谢谢,

XL VBA如何防止在第一个.Show中忽略UserForm的.Top和.Left属性?

我有一个Excel 2007 VBA项目与几个用户窗体,其中之一是包含日历控件12.0对象的dateselect器。 每当用户点击其他表单上的两个文本框控件之一时,dateselect器就被激活。 我想控制dateselect器的启动位置,这样,当显示时,它与任何已经被点击的文本框控件一致。 为此,date选取器userform( frmDatePicker )公开三个公共variables: xOffset , yOffset和frmParent 。 其意图是,在显示frmDatePicker之前,它的.Top和.Left属性将通过引用这三个variables来设置,这些variables本身是由调用子程序初始化的。 (用户.StartUpPosition的.StartUpPosition属性也设置为零(即“手动”)以允许以这种方式控制其初始位置。) 这工作完美…除了第一次显示dateselect器。 第一次调用.Show方法时, frmDatePicker不会与单击的文本框alignment。 从第二次起,这个问题就消失了。 frmDatePicker的代码如下: Option Explicit Public InitialDate As Variant Public xOffset As Double Public yOffset As Double Public frmParent As Object Private DateSelected As Boolean Function Execute() As Boolean If Not frmParent Is Nothing Then Me.StartUpPosition = 0 Me.Left […]

VBA:如何通过表单作为参数

我有一个简单的用户表单上有一个button。 我想将这个表单传递给另一个模块中的一个函数 – 但是即使在同一个模块内,它也不能按预期工作: Private Sub Test(ByRef oForm As MSForms.UserForm) Debug.Print "caption: >" & oForm.Caption & "<" End Sub Private Sub CommandButton3_Click() Debug.Print "caption: >" & Me.Caption & "<" Test Me Debug.Print "caption: >" & Me.Caption & "<" End Sub 当我点击button时,它打印到debugging控制台: caption: >UserForm1< caption: >< caption: >UserForm1< 所以在Test()子项里, Caption是空白的。 任何想法,为什么这是行不通的? 注意:如果我使用Variant作为参数types,它的工作原理

Excel VBA Userform – 如何增加/减lessdate一个月

使用下面的代码,我使用SpinButtons增加了在TextBox中显示的date的值。 MainUserForm_Initialize() DateTextBox.Value = Format(Date, "dd-mm-YYYY") … End Sub 'Add one day when spinning up. Private Sub SpinButtonDate1_SpinUp() With DateTextBox .Value = Format(DateAdd("d", 1, .Value), "dd-mm-yyyy") End With End Sub 'Remove one day when spinning down. Private Sub SpinButtonDate1_SpinDown() With DateTextBox .Value = Format(DateAdd("d", -1, .Value), "dd-mm-yyyy") End With End Sub 问题是,如果我将旋转到2015年7月11日,从2015年7月12日到2015年12月6日,而不是2015年7月11日。 这是为什么? (在增加值的时候我有同样的问题,给出的date只是一个例子。)

清除重新select的级联ComboBox

我正在使用几个ComboBox在Excel中创build一个用户窗体的过程。 第一个ComboBox列出来自表格第1列的值,下面的ComboBox列出来自以下列的值。 combobox2向前也只列出取决于前面的框的值。 所有的ComboBox'只显示唯一的值。 这是我正在使用的当前代码: Option Explicit Private Sub ComboBox1_Change() Call cValues(ComboBox1.Value, ComboBox2, 2) End Sub Private Sub ComboBox2_Change() Call cValues(ComboBox2.Value, ComboBox3, 3) End Sub Private Sub ComboBox3_Change() Call cValues(ComboBox3.Value, ComboBox4, 4) End Sub Private Sub ComboBox4_Change() Call cValues(ComboBox4.Value, ComboBox5, 5) End Sub Private Sub ComboBox5_Change() Call cValues(ComboBox5.Value, ComboBox6, 6) End Sub Private Sub UserForm_Initialize() […]

Excelmacros用户窗体 – 单个代码处理多个checkbox

我有一个用户forms,看起来像下面的图像,命名约定来确定级别和职位(如上面的图片示例)。 我也有下面的代码,但是我还没有为每个“端口”checkbox添加代码,最后我会根据它们是否插入/删除特定于每个checkbox的值检查/未核对。 我想知道以下几点: 条件基于检查或取消选中一个checkbox更好的select,通过阅读是否检查/不检查(如我在下面做的),或在“滴答作响”? 我可以缩短表单上任何checkbox的动作的次数或次数,而不是编码每一个(我最终将分配一个值到一个数组(或几个)删除一个)基于什么检查(或未检查))? 如果#2有可能,我可以把一个checkbox的名称的一部分(比如前4或6个字符)作为一个值来确定我正在处理的内容吗? 我一直盯着这个这么长时间,我有点脑死亡 – 我不知道我是否在这里问正确的问题,还有什么要问。 本质上,我想避免重复一遍又一遍的相同的事情(就像我现在所做的那样)。 Private Sub UserForm_Initialize() Dim chBox As Control Dim comboBox As Control Dim arrFreq() As String Dim i As Long 'Use the Split function to create two zero based one dimensional arrays. arrFreq = Split("Unused|700|850|1900|2100", "|") For Each comboBox In ADSinputform.Controls If TypeOf comboBox Is MSForms.comboBox […]

如何处理错误:“数据透视表中没有该名称的项目”。

所以我有一个数据透视表通过用户窗体内的命令框进行修改。 如果用户键入的名字不在列表中,我得到错误 数据透视表中不存在此名称的项目。 将Name1重命名为Name2? 其中Name1是列表中的人, Name1是不在列表中的人。 我实际上得到这个错误,就像我的命令箱修改的数据透视表数量的5倍。 我尝试了以下内容: On Error Resume Next 我希望能简单地“跳过”这个问题。 不,那没办法哈哈。 虽然理想情况下,我想创build一个自定义的错误消息,只popup一次(而不是5次),并告诉用户input他们的部门/class的名字。 这个列表(我的命令箱使用的)总体上来自每个部门的每个class次的每个人,但并不是所有的人都有数据透视表中的数据,所以只是他/她们在我的命令箱用户列表中,他们不一定在数据透视表中。 我知道这是令人困惑的,但我必须这样做,所有class次使用相同的界面。 我不能访问部门内的人员名单,class次等。我只有一个大家的名单,所以这就是为什么我的命令箱必须使用它。 我还是VBA的“新手”,但是对于error handling我并不陌生。 我知道我将如何在Java中处理这个问题,而不是在VBA中。 这是代码的一部分,失败了: Range("D2").Select ActiveCell.Value = frmInd_Productivity_TrackerPS.ComboBox1.Value ActiveSheet.Range("B1").Select ActiveCell.Value = Range("F2").Value 更新:我试着在我的编码的最上面join以下内容,但是这只是使得即使当人处于数据透视表中时popup错误框,并且该东西正常工作! 不知道为什么当没有错误时popupMessageBox! On Error GoTo ErrHandler: ErrHandler: ' error handling code Resume ErrMessage: ErrMessage: MsgBox "Name not found in this Department. Please Enter a New […]

VBA – 在用户窗体上的Loadpicture()上创build一个缩略图

我使用Loadpicture()在用户窗体上的多个Image控件中加载图片,以创build一些预览。 (用户可以点击Image打开全尺寸图片)。 由于用户Userform上的预览Image高约1厘米,我想加载图片的缩略图(较小的文件大小版本)以限制内存使用量,同时仍将全尺寸(百万像素)的源图片保存在硬盘上。 有没有办法调整在加载事件导入的图片? PS:我不想改变图片的可见高度/宽度,因为PictureSizeMode设置为fmPictureSizeModeZoom 。

PHP的Excel格式,而不是forms

在PHP中是否有一个API,允许用户通过填写​​一个类似Excel的表格来添加logging,而不必填写一个通常的表单页面。 用户填写完成后,logging将自动保存到数据库中。 我希望它像PHP中的post方法一样工作。 它将允许用户添加/编辑logging。

显示货币的VBA文本框

我有一个用于用户input的文本框(这是在用户表单中,而不是在电子表格上)的表单。 我有几个与货币有关的框,我需要它们显示逗号和小数点,因为用户在框中input他们的标准。 到目前为止,我已经在网上find了一堆相同的公式,但是当我input我的数字到盒子里时,它会随着4.00(如果我先打4)和所有我可以改变之后,是第二个0.这里是类似的东西线上: textbox1 = format(textbox1, "$#,##0.00") 也看到一些与cDbl 无论我尝试什么,都不会让我input比input的第一个数字更多的东西。 我需要帮助。 谢谢!