Tag: listbox

Excel VBA – ActiveX列表框行为 – 正在清除select

我想找出一对ActiveX多选列表框的问题。 这些列表框位于不同的工作表上,但我已经设置为在两者之间同步鼠标上的值。 这些调用一个函数来同步这两个,然后更新一个单元格以保留select。 由于写入表单导致Excel计算,因此我必须恢复这些select。 出于某种原因,除了当我从“摘要”工作表的第二个框中运行时,一切似乎都正常工作。 简而言之,使用debugging器的断点运行第二个盒子的MouseUp事件代码工作。 只要触发事件而没有断点,一切都会奏效,但是在一两秒之后,select就会清除。 我可以确认,重新运行代码以恢复select将从此正常工作。 所有其他行为在这个时候按预期工作。 只有当MouseUp事件被触发(没有断点)时,它似乎会导致一些清除select的事件。 (我现在认为这是重新启用事件之后的表格计算…虽然我认为这也会发生在debugging过程中…) 更新1:在将EnableEvents设置为true之后,我find了一个解决scheme,该工作区与存储选定内容的表格相关。 因此,我已经插入Sheet(…).Calculate如下所示,事情现在按预期工作。 这种行为似乎很奇怪,所以我想看看是否有其他人遇到过这样的事情。 为什么即使在事件被禁用时进行了更改,工作表也会重新计算? 由于某种原因,暂时禁用计算似乎也没有做到这一点,尽pipe我没有花太多时间来testing这个想法(它似乎创造了更多的问题,而不是固定的)。 更新和解决scheme: 这个问题结果与我原先想象的不同。 我发现它与同步无关,实际上与列表框位于不同的页面上有关。 两者都指的是一个dynamic范围 (我忘了提及),这实际上是关于dynamic范围重新计算(从而重置列表框)。 最初当我有一个盒子时,我通过不通过命名范围的盒子来解决这个问题,但是每次由于导入数据(或者就地控制器调整)来更新范围的地址。 这个盒子与dynamic范围在同一页面,而另一个不在,这意味着我不能传递地址(ActiveX控件不会在“链接单元格”中使用表单引用),所以我已经解决了指向命名的范围。 这又重新提出了我所看到的问题,在这个问题出现之前,我的许多解决方法都处理了其他症状。 我能够通过创build另一个“停滞”的命名范围来解决这个问题,我将更新引用来指向原来的命名范围,当它被我的其他macros更新,从而阻止它重新计算(和重置我的列表框)。 希望这对某人有帮助。 box1:LegSections2Check Private Sub LegSections2Check_MouseUp(ByVal Button As Integer, _ ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Application.EnableEvents = False Application.ScreenUpdating = False Call SyncChoices(Sheets("Loads")) Retain_Selections […]

从列表框中select多个项目,使用excel vba在sql server中select存储过程

我在excel中有一个允许多个select的列表框,但我不知道如何将选定的项目传递给我的SQL Server stored procedure的单个参数。 说我想: select * from where field in ('selected', 'items', 'from', 'list', 'box') 任何想法如何在Excel中做到这一点与VBA?

Excel VBA – 通过文本框search带有多列的用户窗体列表框

我想解决所需的代码来过滤或search包含在一个用户窗体,包含多列和多行的列表框。 在用户窗体上,我有一个文本框,允许用户input,理想情况下过滤掉列表框中的不匹配的条目。 我在网上find了一些解决scheme ,但没有什么可以在一个用户窗体中使用多列的列表框。 它从这个例子编码的方式是试图转换一列数据,我猜我需要改变代码来使用一个数组。 我只是不够强大的VBA知道如何改变这一块。 我也收到GoToRow()函数的错误,但我相信它是绑在单列与多列列表框的问题。 我已经包含一个链接到我的项目下面的基本模型,因为我使用了一个用户窗体和一个名为的列表框和文本框。 https://www.dropbox.com/s/diu05ncwbltepqp/BasicListboxExample.xlsm?dl=0 我的用户窗体上的列表框有五列,名为ProjectList,文本框被命名为SearchTextBox。 Option Explicit Const ProjectNameCol = "B" Dim PS As Worksheet Private loActive As Excel.ListObject Private Sub UserForm_Activate() ' Main code on Userform Activation, calls support subs Set PS = Sheets("ProjectSheet") 'stores value for Project Sheet Worksheet as PS Set loActive = ActiveSheet.ListObjects(1) 'populates listbox with […]

单击另一个工作簿中用户窗体上的一个button

我在互联网上search了几天,但我仍然找不到出路。 如果我能从这里得到一些提示,我会非常感激。 以下是我要做的细节: 我有一个名为A的只读工作簿,其上有一个button1。 通过点击button1,popup包含列表框和带有macrosbutton2的用户表单。 结果将打印在工作簿A的工作表2上。 我想要做的是使用另一个工作簿B调用VBA脚本来打开工作簿A并单击button1以激活用户表单。 然后,select所有行并通过单击button2运行macros。最后,将表2上的值复制到工作簿B. 为了简化问题,我写了一些代码来说明这种情况。 在工作簿A:button1: Public Sub Button1_Click() UserForm1.Show End Sub button2: Private Sub Button2_Click() Dim y As Long, z As Long z = 1 With Me.ListBox1 For y = 0 To .ListCount On Error GoTo EH If .Selected(y) = True Then For i = 1 To ListBox1.ColumnCount Sheets("Sheet2").Cells(z, i) […]

选定的列表框值必须等于一个范围

我在Excel VBA中创build了一个包含两个值的列表框。 一次只能select一个值。 我正在使用列表框上的单击事件,并且当用户单击列表框中的值时,特定的范围(单元格)值成为用户在列表框中单击的值。 事件代码如下所示, Private Sub lbPeriod_Click() Range("input_Period").Value = frmInput.lbPeriod.Text End Sub 用户也可以closures用户窗体并用excel表格中的button打开用户窗体,其中包含以下2个子程序, Sub showInputWizard() If frmInput.Visible = False Then Load frmInput frmInput.Show Else Unload frmInput End If End Sub 卸载的原因是因为用户窗体中的另一个列表框必须在激活的工作表上采用不同的值。 当用户窗体被激活时,必须根据范围的值( Range("input_Period").Value )selectlistbox(lbPeriod)中的一个Range("input_Period").Value 。 在窗体初始化事件我使用下面的代码 Private Sub UserForm_Initialize() Me.StartUpPosition = 0 Me.Top = Application.Top + 270 Me.Left = Application.Left + 750 Me.lbPeriod = […]

使用locking属性时Excel表单列表框问题

我有问题的方式列表框的行为在Excel表单上。 重现问题的步骤: 用一个列表框控件创build一个用户窗体 使用此用户表单使用以下代码: Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Me.ListBox1.Locked = True Me.ListBox1.Locked = False End Sub Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 10 Me.ListBox1.AddItem i Next i End Sub 首先显示表单时,我可以使用箭头键和页面键正常浏览列表框。 但是,在双击事件触发后,所有键盘导航都不起作用,包括对其他控件(如果它们在表单上)的Tab键。 单击列表框似乎工作,焦点大纲显示正确,但是在列表框被locking,然后解锁之后处理焦点的方式有些问题。 到底是怎么回事? 使用Office 2013 32位版本。

Excel.VBA.UserForm.MultiComlumnListBox.ListBoxes

我目前正在进行一个项目,要求我使用多列列表中的值。 我有这个用户表单中的单列列表框,我想要一个选定的值给出选定的多列列表。 截至目前,我可以得到单个列表框突出显示,但由于一些奇怪的原因,值不被选中。 如果用户不select另一个列表值,我需要能够拉这些值。 我在这个论坛张贴新的,但我有一个Excel文件来演示我的问题,但不知道如何发布在这里。 由于我不知道如何上传文件,所以我编写了这个文件: Private Sub ListBox1_AfterUpdate() Me.ListBox2.Value = ListBox1.Column(1) Me.ListBox3.Value = ListBox1.Column(2) Me.ListBox4.Value = ListBox1.Column(3) Me.ListBox5.Value = ListBox1.Column(4) MsgBox ListBox2.Value & " = " ListBox3.Value & " = " ListBox4.Value & " = " ListBox5.Value ' Check values End Sub Private Sub UserForm_Initialize() With ListBox1 .ColumnCount = 15 .RowSource = ActiveSheet.Range("A1:E10").Address End […]

在列表框之间添加和删除项目

我正试图实现pipe理和交换位于我的UserForm两个列表框之间的“项目”。 IE我有列表框1中的项目(我使用多选),然后单击“添加”命令button,所有的项目被添加到列表框2。 – 这段代码的作品。 我也可以根据select或“全部清除”命令button从ListBox2中删除项目。 当我添加“删除”命令button使用类似的代码到“添加”命令button时,我得到一个错误。 我的目标是从ListBox1中删除项目,这样我就不会在ListBox2中重新添加或复制它们。 错误是“运行时错误”2147467259(80004005)“:未指定的错误”。 我已经把问题缩小到一个来源,但我不知道如何解决这个问题。 问题是我填充ListBox1的方式。 目前,我使用命名范围来填充ListBox1,这个命名范围是指表中的一列。 MyUserForm.ListBox1.RowSource = "ListOfItems" 如果我使用下面的代码,我不会得到相同的错误,一切工作正常。 With MyUserForm.ListBox1. .AddItem "Item 1" .AddItem "Item 2" .AddItem "Item 3" .AddItem "Item 4" End With 我真的想坚持第一个填充ListBox1的“方法”,因为命名的范围是dynamic的,并且经常变化。 这是有用的代码。 我用这个代码来“添加”项目到ListBox2(我已经编号的代码行,以便于参考): (1)For i = 0 To LIstBox1.ListCount – 1 (2) If ListBox1.Selected(i) = True Then (3) ListBox2.AddItem ListBox1.List(i) (4) End If (5)Next […]

button单击(VBA)将所有内容从列表框(variables行,常量列)复制到表中

我有一个用户表单,用户将从各种其他窗体控件(文本框,combobox等)填充列表框。 每个数据条目将有8列填充。 这个想法是,用户将input数据条目(这可能是在同一类别条目中的子条目,因此能够在列表框中一起查看条目的整个批次(或类别 ))的期望的function),查看input,如果检出,点击一个button为了提交数据到一个表格(这是数据处理模式的基础,根据input数据批次吐出图表等)。 所以我想编程以下内容: – 代码,查找主表中的下一个空行,并复制列表框的全部内容,从表中交换表中的相应单元格。 因此,每次input将是8列(列AH)和X行。 我已经尝试了许多不同的代码,从网上改编,但不断发现错误或只能复制第一个条目。 这是我尝试的最后一个代码示例: Private Sub cmdEnter_Click() Dim LastRow As Range Dim ProjectsTable As ListObject Dim i As Long Sheets("Project data").ListObjects("Projects").ListRows.Add 'Enter data from form into our new row Set ProjectsTable = Sheets("Project data").ListObjects("Projects") Set LastRow = ProjectsTable.ListRows(ProjectsTable.ListRows.Count).Range With Sheets("Project data") For i = 0 To ListBox1.ListCount – 1 […]

从多选列表框中检索数据时允许空input

我正在尝试创build一个简单的基于工作表的表单,该表单将从select中将数据导入Excel工作簿中的另一个工作表。 这是我第一次搞乱Visual Basic和ActiveX控件,而且我没有太多的编程经验,但是有很多Googlesearch,到目前为止我已经成功了。 有问题的部分:我有几个多选框,点击一个button,将数据推送到电子表格中,使用下面的代码: Private Sub CommandButton1_Click() Dim I As Long Range("A10").Select Range(Selection, Selection.End(xlToRight)).ClearContents With Me.ListBox1 For I = 0 To .ListCount – 1 If .Selected(I) Then Flg= True txt = txt & "," & .List(I) End If Next End With If Flg Then With Sheets("Sheet1") .Range("A10").Value = Mid$(txt, 2) End With End If txt="" […]