Tag: userform

VBA / excel文本框中的date比较

我需要能够在两个文本框(“txtDateFrom”和“txtDateTo”)在VBA表单中inputdate范围(我已经在Excel中创build了VBA表单)。 然后,我需要根据B列和我的两个文本框中的date标准从Sheet1中select单个行(请参阅Sheet1的屏幕截图)。 我打算使用我的VBA表单(cmdExtractData)上的button的“单击”事件来运行代码。 然后,我想将提取的数据放到电子表格的Sheet2中,以便对其进行进一步的分析。 因此,Sheet2看起来与Sheet1完全一样,但只有那些与所选date条件匹配的数据行。 我很乐意做所有必要的错误检查(确保date有效等)。 电子表格数据: 1,19/07/2015,1,F,P,White Goods,One Off,£250.00 2,24/08/2015,2,D,A,Handyman Services,Ongoing,£500.00 3,21/07/2015,3,W,L,Home Assistance,One Off,£750.00 4,01/09/2015,4,F,C,Convalescent/Respite,One Off,£250.00 5,17/06/2015,5,D,H,Living Expenses,Ongoing,£500.00 6,29/11/2015,1,F,O,Specialist Equipment,One Off,£250.00 7,12/12/2015,4,D,O,Convalescent/Respite,One Off,£250.00 8,23/01/2016,2,D,L,Transport Costs,One Off,£500.00 9,27/02/2016,4,W,L,Living Expenses,One Off,£500.00 10,03/11/2015,4,F,C,Convalescent/Respite,One Off,£750.00 好吧,经过很多的调整,我有一些工作的基础… ' Clear Sheet2 ready for new data Sheet2.Cells.ClearContents ' First find the last row in the spreadsheet that has data in it. […]

运行时错误'91'将表单添加到用户表单数据

我试图将简单的数据input到一个用户窗体中的两个文本框中,然后将这些数据添加到名为“AvantAct”的表中。 每次运行用户表单时,我都希望将表中的数据input表中的第一个空行。 有趣的是,我第一次做到这一点完美无瑕。 但是,在退出工作簿之后又回来的时候,我似乎得到了: – 运行时错误“91”:对象variables或未设置块variables。 当我debugging下面的行时高亮显示: tbl.DataBodyRange(lrow2, 1). Value = Me.TxtDate.Value 我应该补充说,我的表目前是一个空的(新插入的)表。 它有8列(带标题),一个空行(从插入)和一个总行。 有什么build议么? Private Sub SubmitButton_Click() Dim ws As Worksheet Dim tbl As ListObject Dim TxtDate As Date Dim TxtPmt As Currency Dim col As Integer Dim lrow As Range Dim lrow2 As Long Set ws = ActiveWorkbook.Worksheets("Avant") Set tbl = ws.ListObjects.Item("AvantAct") If […]

使用VBAselect由Excel用户窗体中的选项指定的多个下拉框

这个问题是我正在进行的项目的“第三部分”。 在使用vba在运行期间将多个标签和文本框添加到Excel用户窗体并使用vba 从Excel用户窗体运行时创build的多个文本框中检索数据之后 ,我现在试图使用所有数据来select要分配的下拉框中的名称工作。 我遇到的问题是,我有代码设置循环MyArray(i)从LBound到UBound ,给我们员工的名字,因为它这样做,它也循环通过分裂MultFLNAmt创build一个数组这是从UserForm中检索的,因此我们可以确定每个员工将接收多less个FLN,然后循环查找select分配给的当前员工的名称。 一旦完成了这一切,每个人都有正确数量的FLN分配,它将单击应用程序中的提交button完成作业。 ' Shows and hides the multiple option UserForm MultipleOptionForm.Show MultipleOptionForm.Hide ' Creates an array from a comma-delimited ' list of numbers stored in a variable MFA = Split(MultFLNAmt, ",") ' Activates the application we will be assigning work from WShell.AppActivate "Non-Keyable Document Management System" ' Table cell node […]

使用属性窗口来确定窗体上的控件

在窗体上select一个控件后,在属性窗口的顶部会显示控件的名称和types,并在下面的下拉菜单中有一个包含更多控件的列表。 如果我点击其中一个列表项目,它将在窗体上select该控件。 1)这个下拉菜单的名字是什么? 2)什么决定哪些控件出现在下拉列表中? 3)我怎样才能使任何给定的控制出现在下拉列表中? 即在一个非常繁忙的forms,我知道我有一定的控制在那里,但我不能看到它。 我想在下拉菜单中select它,以便知道它的位置,但我不知道如何在该菜单上find它。

在combobox/列表框中滚动鼠标滚轮

我正在使用VBA在Excel 2007中构build一个用户窗体,并希望知道如何启用combobox和列表框的鼠标滚轮。 我是否需要更新版本的Office来获取此function,还是需要编码?

将焦点集中到无需单击的无模式用户窗体(Excel 2010 VBA)

我开始编写一个项目,该项目将打开,login并从Internet Explorer文档检索值。 该过程将Excel电子表格中的值粘贴到专有汽车VIN解码网站中,将结果页面中的数据进行刮取,然后将这些值写入电子表格。 这个程序运作良好。 由于该页面偶尔会返回一个错误,因此我devise了一个在处理之前调用的Excel用户窗体,以询问要开始处理的工作表的哪一行。 该表单被调用以下代码: Load frmStartRow With frmStartRow 'Load start row form and await response .StartUpPosition = 0 .Left = Application.Left + (0.5 * Application.Width) – (0.5 * .Width) .Top = Application.Top + (0.5 * Application.Height) – (0.5 * .Height) sndPlaySound32 "C:\Windows\Media\chimes.wav", 1& .Show vbModeless End With 一个非常重要的例外情况就是调用表单。 由于IE浏览器在表单被激活时有焦点,表单出现但必须点击才能被关注。 该表单包含一个接受行号的文本框,我希望表单显示在其他窗口的顶部,是模式的,并且能够接受数据,而无需用户点击它。 我已经尝试过API来把窗口放在最前面,玩vbModal与vb Modelss(如图所示),尝试将焦点切换到窗体的Activate事件中的用户窗体,而没有成功。 我能够将表单显示在顶部,但在接受数据之前仍然需要点击。 […]

ListBox.RowSource不返回任何结果时,允许列表框不显示任何结果

我目前使用下面的代码在窗体中填充一个ListBox: 'Populate In-Form Table With ListBox_InFormTable .ColumnCount = 4 .ColumnWidths = "100;100;100;50" .RowSource = ws.Range("MasterDataTable").SpecialCells(xlCellTypeVisible).Address End With 但是,我也积极地过滤表单中显示的其他字段中显示的内容。 除了当我过滤掉所有的结果,这工作正常。 而不是得到一个错误,指出:“没有细胞被发现。 我宁愿把表格留空。 任何帮助,将不胜感激,我一直在我的头撞这一段时间了。 谢谢!

excel不正确closures – userform挂?

我有一个包含6个用户表单的电子表格,用在大约30台电脑上。 VBA代码是密码保护的。 通常,当我们closures工作表时,VBA项目密码框出现,excel.exe保留在任务pipe理器中。 我做了一些testing,并拿出以下内容: 问题只发生在一个用户窗体打开。 用户窗体除了按取消(调用Unload Me)之外不需要做任何事情, Workbook_BeforeClose事件如下所示: Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.ScreenUpdating = False 'Cancel autosave Sheets("BOH General").Range("A102").Value = 0 AutoSaveTimer 'Application.EnableEvents = False If Not Sheets("START").Visible = True Then Call CostingMode Call BackItUp 'Application.EnableEvents = True Application.ScreenUpdating = True End Sub 以下是由Workbook_BeforeClose调用的其他一些macros: Sub AutoSaveTimer() If Sheets("BOH General").Range("A102").Value > 0 Then RunWhen = […]

使用用户表格从当前打开的工作簿中检索外部工作簿中的信息

我代码为userform,允许我使用工作簿的Excel工作簿中的项目ID检索信息。 但是,现在我需要根据用户inputsearch外部工作簿中find的projectID(称为active master file 。 然后,它将检索信息并将其放入用户窗体中,并使用add命令button将信息插入当前工作簿中名为project tracker文件的新行中。 问题是我不知道从外部工作簿检索当前打开工作簿中的用户窗体的代码。 我有两个工作簿。 此用户窗体在名为“ project tracker的工作簿中find,而我想根据项目ID检索信息的外部工作簿称为“ active master project 。 这是我用于命令searchbutton的代码,用于在名为project tracker的工作簿的表单中进行检索和search: Private Sub CommandSearchButton2_Click() Dim lastrow Dim ProjCode As String Dim LabelProjName As String Dim LabelObjective As String Dim LabelProjSponsor As String Dim LabelProjSponsorNew As String Dim LabelProjManager As String Dim LabelRegulatory As String Dim LabelRiskLvl As String […]

如何恢复被困在Frame边缘以外的控件?

这只影响框架,我只在Excel 11中遇到它,但由于它显然是一个错误,它可能已经修复了以后的版本,我还没有尝试过。 如果你使用Frames很多,这最终会咬你。 问题 从框架和其他任何包含在该框架中的控件开始,让我们来说一个标签。 通过右边缘(横向箭头)抓住标签并将其拖过框架的左边框,直到您看到其虚线轮廓出现在框架外部。 然后,不释放鼠标,将其拖回边界,直到轮廓刚刚消失,然后释放鼠标。 你会发现你的标签已经消失。 它被困在某个不可见的地方,不能被带回来。 只是放大框架不显示它。 这与框架顶部边框的工作方式完全相同,从底部边框抓取标签,将其向上和向后拖动。 它的工作原理与底部和右侧的框架边界类似,除了在这里您可以通过放大框架来恢复标签。 但是顶部和左边界不是这样。 缺less的标签可以选项卡(它显示在属性下拉列表中),但是这不会被选中,并且不能被删除,因为它不能被选中。 在“属性”下拉列表中单击标签名称也不会执行任何操作。 如果你知道哪个Frame已经吞下了标签(就像我们在这个例子中所做的那样),并且如果你知道那个Frame的哪个边框(就像我们在这个例子中做的那样),那么就有办法恢复丢失的Label。 但是很多时候情况并非如此。 除非你真的看到标签消失,否则当时很容易被忽视,特别是当帧相互重叠时。 一种方法来恢复标签(从一个已知的框架下的已知边界)是使用斯蒂芬布伦的VBE工具,(甚至没有考虑到这个问题,如果你没有安装这个美好的Addin,你应该)。 点击框架(你知道隐藏的东西)和编辑菜单中的全选( Ctrl + A不适用于此)。 然后按住Alt + right + 箭头 (因为这里知道丢失的标签在LH边界之下),并且看着标签从框架边界下面偷偷溜走。 这比仅select全部并将所有控件拖到右侧更好,因为它可以让您将所有其他控件replace为原始位置,方法是颠倒过程( Alt-Left + Arrow ),直到事情再次正确。 如果您需要将其他控件的像素完美恢复到其原始位置,只需计算右箭头的点击次数,处理恢复的标签,再次select全部,并使相同数量的左箭头单击。 这个问题 1)如果我不知道在哪个框架下,我如何find并恢复和/或删除一个Frame以这种方式捕获的控件?