Tag: listbox

在用户窗体中,在列表框中select的图纸名称应显示在文本框中

我有一个用户窗体,其中有一个列表框显示活动工作簿中工作表的名称。 当我双击列表框中列出的任何一个表名称,我把它带到那张表。 在同一个用户窗体中,我也有文本框,在其中input的任何内容都会将活动工作表名称更改为。 所有上述查询代码正在工作。 现在我想要另一个function,无论我从列表框中select的任何表名,该表的名称也应该反映在我的文本框中。 请让我知道我应该使用什么代码。 请在下面find我迄今使用的代码,以获取列表框中的图纸列表,并通过在文本框中input名称来更改图纸名称。 Private Sub CommandButton1_Click() 'unload the userform Unload Me End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'declare the variables Application.ScreenUpdating = False Dim i As Integer, Sht As String 'for loop For i = 0 To ListBox1.ListCount – 1 'get the name of the selected sheet If ListBox1.Selected(i) […]

Excel VBA多选列表框检查是否没有被选中

我想弄清楚如何使用多选Excel Excel ListBox的最佳方法,并有一个简单的VBA代码,它可以筛选多个基于ListBox中选定的工作表。 我现在的代码在下面。 目前,它几乎完全符合我的需求 – 检查工作表中是否有任何filter,如果是,则清除它,然后过滤掉所选的值。 但是我也需要这样做,就是根本没有select任何值,它应该清理4张filter并退出子filter。 事情是,如果我没有select任何东西,我试图运行它,我得到一个“无效的程序”错误。 我曾尝试添加一个Else语句,另一个如果检查If .Listindex = -1 ,但是两个选项都给出了完全相同的错误。 因为这需要一个多选列表,我发现它也需要循环,同时检查是否没有被选中,但又一次,有同样的错误。 我怎样才能改善这个代码并添加所需的function? Sub filter1() Dim MyArray() As String Dim Cnt As Long Dim r As Long Cnt = 0 With Me.ListBox1 If .ListIndex <> -1 Then For r = 0 To .ListCount – 1 If .Selected(r) Then Cnt = Cnt + […]

Excel VBA:访问选定列表框行中的单个字段

我试图访问选定/突出显示的列表框"lstData"行中的单个单元格,以便我可以在其他地方引用它们的值。 当我为Me.lstData.SelectedItem设置一个手表时,我Expression not defined in context 。 与Me.lstData.SelectedIndex和Me.lstData.Rows(1) 。 对我来说唯一的作用是Me.lstData.Value ,但它只返回最左边的单元格。 当我尝试将其插入=OFFSET函数 =Offset(Me.lstData.Value, ,1,1) 要立即访问单元格的右侧,我得到的Expression not defined in context再次Expression not defined in context 。 我怎样才能引用其他选定的单元格?

列表框显示顺序与范围的查找方法

我正在使用以下来填充用户窗体上的列表框。 我发现find的第一个匹配值总是显示为列表框中显示的最后一个值。 其他find的值以列表框的顺序显示在列表框中。 我怎样才能得到第一个发现的价值出现在列表的开始? With Sheet8.Range("B6:B99999") Set rngFind = .Find(tbCustSearch.Text, LookIn:=xlValues, lookat:=xlPart) ' If value found then set a variable for the address If Not rngFind Is Nothing Then strFirstFind = rngFind.Address ' Add the values to the listbox Do If rngFind.Row > 1 Then lbCustSearch.AddItem rngFind.Offset(0, -1) lbCustSearch.List(lbCustSearch.ListCount – 1, 1) = rngFind.Value lbCustSearch.List(lbCustSearch.ListCount […]

将ListBox中的多个行/列复制到Excel表单中

我需要一个认真的帮助。 下面的代码为一个简单的列表框开箱即用,但问题是我的列表框有7列,我需要复制到Excel。 我知道解决scheme可能很容易,但我不知道如何修改它,使其工作。 现在只复制第一列 Private Sub CopyButton_Click() Dim i As Long Dim ary ReDim ary(0 To 0) With Me.ListBox2 For i = 0 To .ListCount – 1 If .Selected(i) Then ReDim Preserve ary(1 To UBound(ary) + 1) ary(UBound(ary)) = .List(i) End If Next End With Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Offset(1).Resize(UBound(ary)).Value _ = Application.Transpose(ary) End Sub

列表框中只有一个项目正在更新?

嗨,我有以下代码来search和search项目显示在列表框中。 我还有一个更新button,可以更新您在文本框中input的任何新信息。 更新框工作正常,但由于某种原因,当多个重复的项目显示在列表框中,我尝试点击第二个实例,并尝试更新,它更新原来的而不是第二个实例。 因此,第一个实例应该更新第一个实例项目,第二个应该更新第二个,但现在,第一个是更新第一个实例,第二个是更新第一个实例,第三个是更新第一个实例 – 总是更新第一个实例。 我怎样才能解决这个问题? 这是文档: https : //www.dropbox.com/s/36e9fmbf17wpa0l/example.xlsm Public Sub Search_Click() Dim Name As String Dim f As Range Dim s As Integer Dim FirstAddress As String Dim str() As String Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Master") Name = surname.Value With ws Set f = .Range("A:A").Find(what:=Name, LookIn:=xlValues) If Not f […]

当改变列表框背景颜色时,listbox会自行取消select

我有一个列表框和代码,以确保它(和其他元素)被选中。 我在代码中添加了一个ELSE,这样如果ListBox有一个选定的项目,它会将背景颜色更改为白色。 如果先前尝试的条目是重复的(将BG更改为红色),则需要执行此操作,但只是将其设置为默认值就更容易了。 我的comboBox和textBox不这样做。 任何想法我可以做不同的只有Initialize函数清除它? 谢谢, 这是清除listBox选定项目的代码片段。 注释上面的行似乎是造成这一点。 编辑:它会取消select每当我改变背景颜色。 它也取消select何时造成重复,这不会更改背景颜色。 所以列表框在很多情况下是自行取消的。 如果我能find其中一个的原因(其中两个在这里列出),那么也许我可以解决第三个问题。 Function HighlightEmpty(ByVal nameSelect As Boolean, ByVal comboSelect As Boolean, ByVal listSelect As Boolean) As Boolean ' Highlight empty fields If Not nameSelect Then Enter_New_DTC_Form.SignalNameTxtBox.BackColor = RGB(255, 0, 0) Else Enter_New_DTC_Form.SignalNameTxtBox.BackColor = RGB(255, 255, 255) End If If Not comboSelect Then Enter_New_DTC_Form.ComboBox1.BackColor = RGB(255, […]

一旦删除列表框中的非选定项目,我该如何重新启动循环?

在列表框上,用户可以select添加date。 我正在尝试给用户select通过单击button来删除date。 我的代码如下所示: Private Sub RemoveDate_Click() Dim objSpecifyDates As Object Dim i As Integer Set objSpecifyDates = ActiveSheet.OLEObjects("SpecifyDatesListBox").Object If objSpecifyDates.listCount = 0 Then Exit Sub Else For i = 0 To objSpecifyDates.listCount – 1 If Not objSpecifyDates.Selected(i) Then objSpecifyDates.RemoveItem (i) End If Next End If End Sub 这个代码的问题是一旦一个项目被删除,它会在最后一个循环返回错误,因为该索引不存在。 有没有办法重新启动循环,一旦它删除一个项目?

Excel VBA多列列表框添加项目在上面

所有, 有什么简单的方法来添加列表框的开始项目? 我发现了一些关于插入函数的信息,但它似乎在Excel VBA中不可用。 我发现的唯一方法是创buildFOR,将每行移动到+1位置,然后在0索引处插入项目。 我真的希望有一个更简单的方法。 我的长版本看起来像这样: SSub InsertRecordAtTheTop(sText1, sText2) Dim i With lbCases If .ListCount > -1 Then .AddItem "0" ''' add new row For i = .ListCount – 1 To 1 Step -1 ''' move everything +1 postion .List(i, 0) = .List(i – 1, 0) .List(i, 1) = .List(i – 1, 1) .List(i, […]

Excel用户窗体文本框常量集合焦点

首先我要感谢你们所有人。 也许你没有注意到,但你帮我从头开始把VBA抓到一定程度。 我仍然在学习过程中,所以我可能会错过一些非常简单的事情,请温柔:) 首先我想给出一个关于我的问题的小背景更新。 我一直在写一个小程序来扫描传入的部分到我的工作,以保持库存状态。 该程序的最新外观如下所示: 图片上的数字是我最近的噩梦: 1.扫描件号码:这是扫描仪input数值的文本框。 我收到input后,我将这些数据小心地转换为一个variables,并清除文本框的值如下: Private Sub PN_CurrentScan_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then EnteredPN = Replace(PN_CurrentScan.Value, Chr(32), "", 1) '<—PN_CurrentScan is the name of text box EnteredPN = Left(EnteredPN, 12) PN_CurrentScan.Value = "" 在对扫描的数据进行一些校正之后,我基本上把它写到工作簿中的一张纸上。 然后,我在同一工作簿中也有一个数据透视表,它使用这个扫描数据作为数据源,并计算每个零件号扫描多less个零件。 2.当前状态:此列表框包含扫描的所有零件编号(来自上述数据透视表)并等待被扫描(来自另一个工作表)。 然后每次扫描一个新的部分时自动刷新它。 3.列表框滚动条:因为我有很长的零件号码列表,所以我无法将所有东西都放在屏幕上,这就是列表框创build滚动条的原因。 足够的背景我想:) 所以,如果我们来关心。 由于我的拼图使用无绳扫描仪来做这个操作,有时他们没有机会看到屏幕,所以他们不明白光标是否在“扫描的零件号码文本框”上。 这就是为什么我不pipe发生什么事情都需要把注意力放在那个盒子上(当然,如果仓库烧毁,地震或者海啸撞到地方,我们什么也做不了,但是不要去想这些)。 我曾试过的东西: 首先,我从属性窗口中禁用所有剩余的对象 […]