Tag: userform

Excel – VBA:从Sub传递variables到Userform

我已阅读并应用了类似主题上find的解决scheme,但在我的案例中似乎没有任何工作。 所以,我想从我的Module1的一个子variables传递给一个用户表单。 这是一个名为“provinceSugg”的string。 这是我的代码的相关部分: Public provinceSugg As String Sub probaCity() […] If province = "" And city <> "" Then provinceSugg = sCurrent.Cells(p, db_column).Offset(0, 1).Value UserForm2.Label1 = "Do you mean " & city & " in " & provinceSugg & " ?" UserForm2.Label1.TextAlign = fmTextAlignCenter UserForm2.Show Else End If End Sub 然后在我的用户表单代码中: Private Sub userformBtn1_Click() […]

项目中更改Evey用户窗体的StartUpPosition错误:对象不支持属性

安装程序:我有许多用户窗体的项目,并在双监视器系统上打开时,默认的StartUpPosition是1 = CenterOwner,它出现在主显示器(Windows桌面的中心)的右侧。 我正在尝试编写一小段代码来更改项目中每个用户窗体的一个属性。 在这种情况下,具体来说,.StartUpPosition = 2(CenterScreen) 使用Microsoft Office Professional Plus 2010 我已经知道如何使用VBA中的属性编辑器在Positions.StartUpPosition下更改StartUpPosition。 问题是,在这么多的项目中有这么多的用户窗体,我想一次在每个项目上更改它们。 最终,我想通过使用方法(FormName,Property,Value)的重载参数来使用相同的代码来改变任何属性。 现在,我可以只用一个来处理StartUpPosition。 当我运行这个代码时,打开UserForm时,它按预期工作,覆盖StartUpPosition = 1(CenterOwner)的默认值,并将它显示在屏幕的中心。 Sub UserForm_Initialize() With UserFormName .StartUpPosition = 2 'CenterScreen' End With End Sub 然而,当我运行它embedded在这个循环中循环通过模块的项目的控制,试图一次性改变所有表单的默认值,我得到以下错误。 错误:运行时错误“438”:对象不支持此属性或方法。 Sub UserFormStartUp_Center() Dim VBComp As Object 'For each control in project' For Each VBComp In Application.VBE.ActiveVBProject.VBComponents 'Check to see if control is […]

Excel VBA用户窗体 – 当有东西发生变化时执行Sub

我有一个包含大量文本框的用户窗体。 当这些文本框的值发生变化时,我需要通过调用子程序AutoCalc()来根据文本框值重新计算最终结果值。 我有大约25个盒子,我不想单独添加Change()事件到每个调用该子例程的文本框。 当某个值发生变化时,调用AutoCalc()的最快和最有效的方法是什么?

调用一个用户窗体并返回一个值

我有一个VBA代码这就是Auto_Open。 它做了一些检查,然后提示用户input用户名和密码。 我用userform_name.show调用了这个用户userform_name.show 。 我的问题是我怎么能返回一个Boolean从我的Auto_Open从userform代码。 我将validation证书是否正确的代码链接到表单上的“login”button。 这是产生布尔的代码。 我需要将其返回到Auto_Open。 Private Sub loginbutton() Dim bool As Boolean Dim lrup Dim r As Long Dim pass As String loginbox.Hide 'are fields empty Do While True If unBox.Text = "" Or pwBox.Text = "" Then MsgBox ("You must enter a Username and Password") Else Exit Do End If loginbox.Show […]

excel – vba – userform – frame – 设置滚动条位置

如何设置一个框架(在用户窗体内)的滚动条位置? 案子: 我有一个具有dynamic内容的用户窗体中的框架。 所以如果内容太大而不适合框架,它(dynamic地)在该框架中创build一个滚动条。 滚动条还具有dynamic值,跟随框架内容的大小。 更新滚动条的代码如下所示: With userform1.frame1 'dynamic size .ScrollHeight = param1 * param2 .ScrollWidth = .InsideWidth * 30 End with 所以我想有一些东西把滚动条发送到底部的位置! 我怎么做? 提前致谢

在表单中保存类模块

假设我想在Excel VBA中制作自行车devise程序。 我有一个类对象( cBike ),它有一些默认设置。 现在,我想在将自行车存储到数据库之前创build一个可用于更改这些设置的窗体(如图像中的窗体)。 用于存储的方法(子)位于cBike 。 我可以将对象保存为表单代码中的公共variables,如下所示: Public objBike As cBike Public Sub StoreBikeToDatabase() 'database storing code goes here End Sub 虽然这会起作用,但我看到很多人反对使用公共(全球)variables。 我不太清楚为什么,除了如果你有太多的全局variables,你的代码将是一团糟。 或者我可以忘记对象,并使用不同的表单控件的值,而不是类模块cBike的属性。 但是,这似乎是一个笨拙的解决scheme。 我的问题是:上述哪个解决scheme最好,如果有的话? 如果没有,那我该怎么办呢? 更新:我强烈build议您阅读已接受的答案,然后再深入阅读。 这两个答案都有一些很好的想法,Dee的后面还增加了一些综合代码的例子,可以用于其他类似于我的问题。

如何在VBA表单上显示部分Excel

我有一个.csv格式的文件和AS列,它有一些logging像一个表。 我完整的程序将插入/删除/删除/添加一些行,列和编辑单元格值等。我设法编写所有我需要的操作,现在我试图将它与gui集成。 我想要的是从Ax1显示单元格到在VBA用户窗体上有logging的最后一列。 我怎样才能做到这一点? * ps:同样,我的文件的格式是.csv,我正在使用Excel 2007

从用户窗体中删除dynamic添加的控件

我有一个Excel的用户窗体dynamic添加checkbox。 我很早就join了checkbox,代码如下所示: Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & i) 之后,我想删除所有这些checkbox。 我试着这个代码: Dim j As Integer 'Remove all dynamically updated checkboxes For Each cont In Me.Controls For j = 1 To NumControls If cont.Name = "Checkbox" & j Then Me.Controls.Remove ("Checkbox" & j) End If Next j Next cont 但是收到以下错误信息: 任何帮助将不胜感激。

使用VBA将控件添加到Excel用户窗体中的框架

我需要dynamic创build标签和button,然后将它们添加到用户窗体中的一个框架。 我该怎么做呢? 看起来应该比实际更容易。