标签: userform

为什么将UserForm显示为模态停止代码执行?

以下VBA代码停在Me.Show.从我的测试来看,似乎Me.Show停止所有代码执行,即使代码在UserForm中.

这部分在UserForm之外:

Public Sub TestProgress()  
    Dim objProgress As New UserForm1
    objProgress.ShowProgress
    Unload objProgress
End Sub
Run Code Online (Sandbox Code Playgroud)

这部分在UserForm中:

Private Sub ShowProgress()
    Me.Show vbModal
    Dim intSecond As Integer
    For intSecond = 1 To 5
        Application.Wait Now + TimeValue("0:00:01")
        Me.ProgressBar1.Value = intSecond / 5 * 100
    Next intSecond
    Me.Hide
End Sub
Run Code Online (Sandbox Code Playgroud)

Me.Show显示UserForm后代码停止.没有错误,它只是停止执行代码.似乎在VBA中的模式UserForm中执行代码的唯一方法是将它包含在UserForm_Activate过程中,如下所示:

这部分在UserForm之外:

Public Sub TestProgress()  
    Dim objProgress As New UserForm1
    Load objProgress
    Unload objProgress
End Sub
Run Code Online (Sandbox Code Playgroud)

这部分在UserForm中:

Private Sub UserForm_Initialize()
    Me.Show vbModal
End Sub …
Run Code Online (Sandbox Code Playgroud)

vba modal-dialog userform

7
推荐指数
3
解决办法
8万
查看次数

删除列表框上的滚动条

我在vba中使用userForm,我有一个列表框.我想删除horoz.滚动条从底部.有没有办法做到这一点?我没有在属性框中看到任何选项.

在此输入图像描述

excel vba userform

7
推荐指数
1
解决办法
3万
查看次数

Excel VBA Userform - 当某些内容发生变化时执行Sub

我有一个包含大量文本框的用户表单.当这些文本框的值发生变化时,我需要通过调用子程序AutoCalc()来重新计算基于文本框值的最终结果值.

我有大约25个盒子,我不想单独向调用所述子例程的每个文本框添加一个Change()事件.每当某些值发生变化时,调用AutoCalc()的最快捷有效的方法是什么?

excel vba excel-2007 excel-vba userform

7
推荐指数
3
解决办法
5万
查看次数

有没有办法在IDE而不是主机应用程序中显示用户表单?

我在*.xlam加载项中创建了一个userform,并在IDE中创建了一个新的命令栏和按钮,但是当我单击该按钮时,用户窗体在Excel中打开,并且强制远离IDE.有没有办法在IDE而不是主机应用程序中打开用户表单而不诉诸.Net COM加载项?

以下是创建命令栏和按钮并处理按钮单击事件的代码.

Option Explicit

Public WithEvents cmdBarEvents As VBIDE.CommandBarEvents

Private Sub Class_Initialize()
    CreateCommandBar
End Sub

Private Sub Class_Terminate()
    Application.VBE.CommandBars("VBIDE").Delete
End Sub

Private Sub CreateCommandBar()

    Dim bar As CommandBar
    Set bar = Application.VBE.CommandBars.Add("VBIDE", MsoBarPosition.msoBarFloating, False, True)
    bar.Visible = True

    Dim btn As CommandBarButton
    Set btn = bar.Controls.Add(msoControlButton, , , , True)
    btn.Caption = "Show Form"
    btn.OnAction = "ShowForm"
    btn.FaceId = 59

    Set cmdBarEvents = Application.VBE.Events.CommandBarEvents(btn)

End Sub

Private Sub cmdBarEvents_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)

    CallByName …
Run Code Online (Sandbox Code Playgroud)

ide vba excel-vba userform commandbar

7
推荐指数
1
解决办法
474
查看次数

在Userform上显示Excel工作簿

目标:正如标题所示,我们如何在不使用任何第三方控件的情况下在userform上显示工作簿.

通过Display,我的意思是显示它在一个窗体,其中用户可以选择一个工作表,并查看工作表的内容.

这篇文章试图自我回答这个问题.

excel vba userform

7
推荐指数
1
解决办法
702
查看次数

Excel VBA - LDAP 管理限制的解决方法

在用户窗体中,我有多个列表框。

  1. Active Directory (AD) 中所有组的列表;
  2. 从 ListBox1 中选定的组的列表;
  3. 这些选定组的唯一成员列表(因此使用字典,因为某些用户可以是多个组的成员);

我现在的情况是,第一个和第二个列表工作正常,但是当查询返回超过 1000 条记录时,我就达到了 LDAP 管理限制,这将返回运行时错误“错误 -2147016669”。正是这个问题,供参考。任何低于 1000 的值都会使代码运行顺利。

我正在进入不熟悉的领域,并且无法找到实现“页面大小”属性的正确方法,以便完整的用户列表将填充初始化的字典:

Private Sub Button1_Click()

Set rootDSE = GetObject("LDAP://rootDSE")
domainDN = rootDSE.Get("defaultNamingContext")
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Open "ADSearch"

Set Dict_members = CreateObject("Scripting.Dictionary")
For n = 0 To ListBox2.ListCount - 1
    If Me.ListBox2.Selected(n) = True Then
        ldapFilter = "(sAMAccountName=" & Me.ListBox2.List(n) & ")"
        Set objectList = ado.Execute("<LDAP://" & domainDN & ">;" & ldapFilter & ";distinguishedName,primaryGroupToken;subtree")
        groupDN = objectList.Fields("distinguishedName")
        groupRID = …
Run Code Online (Sandbox Code Playgroud)

excel vba ldap active-directory userform

7
推荐指数
2
解决办法
499
查看次数

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

如何设置框架的滚动条位置(在用户窗体内)?

案子:

我在userform中有一个具有动态内容的框架.因此,如果内容太大而无法适应框架,则(动态地)在该框架中创建滚动条.滚动条还具有动态值,遵循帧内容大小.

更新滚动条的代码如下:

With userform1.frame1
    'dynamic size
    .ScrollHeight = param1 * param2
    .ScrollWidth = .InsideWidth * 30
End with
Run Code Online (Sandbox Code Playgroud)

所以我想有一些东西将滚动条发送到底部位置!我怎么做?提前致谢

excel vba scrollbar excel-vba userform excel-2010

6
推荐指数
1
解决办法
1万
查看次数

VBA:在userform初始化时未触发Userform初始化方法

我的模块代码调用userform:

PreInfo.Show
Run Code Online (Sandbox Code Playgroud)

我的用户格式代码:

Public Sub PreInfo_Initialize()
Dim Invoice, Name, Model, Crank, MyValue1, StrokeL As Variant
'Dim ListBox1 As ListBox
Dim c As Range
Dim oneControl As Object

'Empty Text Boxes and Set Focus
For Each oneControl In PreInfo.Controls
Select Case TypeName(oneControl)
Case "TextBox"
    oneControl.Text = vbNullString
'Case "ListBox"
    'oneControl.AddItem "Test"
End Select
Next oneControl

With lbTest
    .AddItem Item:="2 Cylinders" '3 different syntax used as test to isolate issue
    .AddItem "3 Cylinders"
    .AddItem ("5 Cylinders")
End With

Invoice.TextBox.SetFocus 'Activate?

End Sub …
Run Code Online (Sandbox Code Playgroud)

vba module listbox initialization userform

6
推荐指数
2
解决办法
2万
查看次数

VBA Userform文本框默认值并突出显示

在我的UserForm中,我想为我的TextBox设置一个默认值,在聚焦时会突出显示.

Private Sub UserForm_Initialize()

NameTextBox.Value = "Your Name Here"

NameTextBox.SetFocus

End Sub
Run Code Online (Sandbox Code Playgroud)

当此代码运行时,光标应设置在默认文本的末尾,即"...... Here"之后.我希望突出显示"Your Name Here",以便在生成表单时,用户可以开始替换该默认/占位符文本.

你能帮我写代码来设置可编辑的默认值吗?

excel vba textbox userform

6
推荐指数
1
解决办法
6万
查看次数

从用户表单监视类事件

我有一个用户窗体,它在运行时自行组装,通过查看文件夹并将其中的所有图片提取到我的窗体上的图像控件中。让这个过程稍微复杂一点的是,我还使用图像控件的事件来运行一些代码。

作为一个简化的例子 - 我有一个在运行时创建图片的表单,该图片有一个点击事件来清除其内容。为此,我有一个自定义类来表示图像对象

在名为“imgForm”的空白用户表单中

Dim oneImg As New clsImg 'our custom class

Private Sub UserForm_Initialize()
Set oneImg.myPic = Me.Controls.Add("Forms.Image.1") 'set some property of the class
oneImg.Init 'run some setup macro of the class
End Sub
Run Code Online (Sandbox Code Playgroud)

在名为“clsImg”的类模块中

Public WithEvents myPic As MSForms.Image

Public Sub Init() 'can't put in Class_Initialise as it is called before the set statement - so myPic is still empty at that point
myPic.Picture = LoadPicture(path/image)
End Sub

Public Sub myPic_MouseDown(ByVal Button As Integer, ByVal Shift As …
Run Code Online (Sandbox Code Playgroud)

excel events vba class userform

6
推荐指数
1
解决办法
845
查看次数