Tag: 表单

Excel VBA Userform上下文菜单类代码

在适用于图像的Excel用户表单中创build上下文菜单… 我正在尝试编写一段VBA代码,以允许使用右键单击Excel用户窗体上的Image生成的上下文菜单。 Andy Pope向全世界提供了许多代码来添加一个简单的上下文菜单,该菜单适用于Excel用户窗体中的文本框,而不是Userform.Image 。 http://www.andypope.info/vba/uf_contextualmenu.htm 为了防止Locked = True文本框的上下文使用,我编辑了他的代码。 'Copyright ©2007-2014 Andy Pope Option Explicit Private Const mEDIT_CONTEXTMENU_NAME = "ajpiEditContextMenu" Private Const mCUT_TAG = "CUT" Private Const mCOPY_TAG = "COPY" Private Const mPASTE_TAG = "PASTE" Private m_cbrContextMenu As CommandBar Private WithEvents m_txtTBox As MSForms.TextBox Private WithEvents m_cbtCut As CommandBarButton Private WithEvents m_cbtCopy As CommandBarButton Private […]

Excel用户表单combobox一旦提交输出到excel

我是相对较新的整个VBA,所以任何帮助将不胜感激…我有我的combobox(一旦你点击提交button)input信息到我的Excel电子表格中的特定列的问题每次input新logging时,都会向下移动。 请参阅下面的代码,如果您需要任何进一步的信息请离开:)很多在此先感谢宝拉 Option Explicit Private Sub cmdAdd_Click() Dim irow As Long Dim EorP As String Dim ComboStaus As ComboBox Dim ws As Worksheet Set ws = Worksheets("BS Personal Data") 'find first empty row in spreadsheet irow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 EorP = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 Combo = […]

Excel VBA用户表单列表框dynamic上下文菜单使用.OnAction方法

我为Userform Listboxbuild立了一个dynamic的上下文菜单。 在此Listbox是一系列文件。 我的目标是,当你右键点击一个文件,上下文菜单popup一个文件夹的位置列表。 左击这些文件夹位置之一将文件复制到该位置。 我将使用 .CopyFile(Location, Destination, [Overwrite]) 方法来执行此操作。 我有困难dynamic分配.OnAction事件添加每个Item 。 Userform模块代码 Option Explicit Private Const mCONTEXT_MENU_NAME = "myRightClickListbox" Private m_clsContextMenu As CContextMenu 'Function mySendTo(fName As String) 'MsgBox fName 'End Function Sub mySendTo(fName As String) MsgBox fName End Sub Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal […]

在用户窗体中编辑多个属性

我有一个用户窗体25选项button(OptionButton1,OptionButton2等..)我想用电子表格中的信息填充每个button的标题。 我不确定最好的代码来完成这件事。 For x = 1 to 25 OptionButton & x & .caption = range("a" & x) Next x 显然,这将是行不通的,但这是我想要它做的。 有任何想法吗?

在用户窗体文本框中突出显示文本

我想select/高亮我的用户窗体上的文本框中的所有文本。 我已经find> .SelStart和.SelLength解决scheme> 20个论坛,但它不适合我… 是否有设置或属性,我需要改变才能使用它? 这是我的代码: Private Sub MaterialDescriptionTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Len(MaterialDescriptionTextBox.Value) > 40 Then MsgBox "The material description can not exceed 40 characters", vbInformation, "Too many characters" With Me.MaterialDescriptionTextBox .SetFocus .SelStart = 0 .SelLength = Len(.Text) End With End If 可悲的是,它并没有做任何事情来显示MsgBox。 谢谢

我的ComboBox不显示我在VBA中添加的值

我试图添加选项到用户窗体中的combobox。 当我运行代码时,Excel不会给出任何错误,但是当用户窗体显示时,它不显示我之前添加到combobox的实体。 也就是说,当我单击combobox时,它不显示任何选项,只有一个空行,就好像没有项目被添加到它。 这是我正在使用的代码: Private Sub UserForm_Initialize() ComboBox1.AddItem "xxx" ComboBox1.AddItem "yyy" ComboBox1.AddItem "zzz" End Sub 我正在使用以下代码来调用macros中的用户窗体: UserForm.Show

VBA Excel用户窗体。 如何确定哪个图像被点击

我有一个用10个ImageBox的10个图像的用户窗体。 我知道,我可以确定像这样被点击的图像: Private Sub Image1_Click() MsgBox "Image 1 clicked!" End Sub 但是由于有10张图片,我必须重复上述代码的10倍吗? Private Sub Image1_Click() MsgBox "Image 1 clicked!" End Sub Private Sub Image2_Click() MsgBox "Image 2 clicked!" End Sub Private Sub Image3_Click() MsgBox "Image 3 clicked!" End Sub Private Sub Image4_Click() MsgBox "Image 4 clicked!" End Sub etc 或者有一个更优雅和简洁的方法?

如何将整个Excel列分配给Access中VBA中的variables?

目前,我有一个Access窗体筛选子窗体中的logging,并在单击button时用第一张表中的数据创build一个Excel文档。 我有一堆其他计算发生在后续工作表上,但我需要他们只发生的“名称”字段已经存在于第一张“名称”列中的条目。 其他计算是通过SQL语句完成的。 我的思考过程是做一些事情: SELECT (various fields) FROM (query name) WHERE (first couple of where statements) AND NameField IN NameColumn 其中NameField是名称元素,NameColumn是整个列。 我试图用多种方式创build这个variables没有成功。 例如,我试过的一件事是在正确的实例中循环添加“(”,“,”和“)”的logging,但string太长,Access不能运行它。 我也尝试只是定义variables,如: NameColumn = ExcelApplication.Range("A:A") 和 NameColumn = Worksheet.Range("A:A") 和 NameColumn = ExcelApplication.Columns("A:A").EntireColumn 但所有这些似乎只是指列的第一个条目。 我试过研究解决scheme,但我没有find任何有用的。 有谁知道我会如何处理这样的事情? 编辑:我可能也应该提到,我以为我只是得到使用这些方法的第一个条目,因为NameColumn没有被定义为任何事情之前。 但我试过了: Dim NameColumn As Range 但我会然后得到以下错误: Compile Error: User-defined type not defined 这是奇怪的,因为经过一些研究,我注意到范围似乎是一个有效的数据types 编辑2:这是我如何定义我的Excel应用程序和工作表: 编辑3:编辑它使它有点更完整的情况下,它的帮助 编辑4:更新更多的代码 […]

VBA用户窗体加载栏将不会运行直到窗口closures

我似乎无法解决为什么这不会工作。 我想为每个A用户窗体中的标签增加宽度。 但是,当我运行它的子不会运行,直到窗体closures。 我怎样才能阻止? Sub movepost() Dim a As Range Dim rcount As Long Dim load As Variant Dim load1 As Variant Dim width As Variant width = fmLoadingBar.Label1.width For Each a In Range("a2:A9999") If a.Value = "" Then rcount = a.Row End If Next a DoEvents fmLoadingBar.Show rcount = (rcount – 1) * 12 […]

访问子引用中传递的框架的控件

我试图将用户窗体的许多MSForms.Frames传递给应该做的东西与他们包含的文本框的子: initFrame(frame1) 但是,一旦通过,我不能访问该框架的.Controls属性了(在debugging时添加了一个手表,剩下的只剩下Items)。 我已经尝试了许多不同的子声明,但它们要么不编译,要么丢失属性… Private Sub initFrame(ByRef currFrame As MSForms.Frame) Private Sub initFrame(ByRef currFrame As MSForms.Object) Private Sub initFrame(ByRef currFrame As Frame) Private Sub initFrame(ByRef currFrame As Object) 在任何情况下,我都会遇到运行时错误 For Each ctl In currFrame.Controls 我必须做一些特殊的事情来访问控制? 像铸造? 这里是整个代码(忽略.Name分配): Private Sub initTabs() initFrame (frPrDetails) initFrame (frPcDetails) initFrame (frScDetails) End Sub Private Sub initFrame(ByRef currFrame As Frame) Dim […]