Tag: 窗体

Excel用户窗体 – 点击回车后将​​焦点返回到combobox

我试过这个: Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then Me.ComboBox1.SetFocus Show_Information_Click End If End Sub 不幸的是,当我按下回车键时,“焦点”从ComboBox1转移到一个CommandButton,我用作表单的“后退”button。 我的ComboBox1采取用户input名称(它自动完成感激地)。 人按下input,并在其下面的一个button(可以点击代替)激活。 当button完成后,我的表单上的“返回”button现在成为“焦点”,所以如果用户再次进入,则使用“返回”button。 我想将焦点设置回ComboBox1,以便当用户点击input时,它将运行代码并将焦点返回到ComboBox1,以便他们可以键入另一个名称,如果他们愿意并再次去。 我甚至试图把Me.ComboBox1.SetFocus放在CommandButton事件序列的末尾,而“后退”button仍然被选中。 谢谢!

Excel VBA:如何通过基于名称的checkbox循环

我想用excel和vba来build立一个调查。 我有一个问题和答案表。 调查开始后,我的代码将通过覆盖表单上checkbox的标签来列出答案。 我将获取他们的答案,并通过使用checkbox的True或False值将它们写入列中。 variables“aRow”是每个问题的答案数。 “lastAns”是最后一个答案的行号。 根据答案的数量,一些checkbox将被隐藏,显示。 “CheckBox1”到“CheckBox4”是checkbox的名称。 下面的代码工作,但它太长,我想有一个更好的方法循环通过checkbox,并每次更改他们的标签。 请告诉我如何做到这一点! 非常感谢! `lastAns = Cells(qRow, 5).End(xlDown).Row + 1 aRow = lastAns – qRow If aRow >= 1 Then Me.CheckBox1.Visible = True Me.CheckBox1.Caption = Cells(qRow, 5) Else: Me.CheckBox1.Visible = False End If If aRow >= 2 Then Me.CheckBox2.Visible = True Me.CheckBox2.Caption = Cells(qRow + 1, 5) Else: […]

Userform.Show在窗体button将不会识别userform,得到错误424

我对VBA知之甚less,但我正在devise一个excel工作簿的用户表单。 这个想法是点击button,调出用户表单,input信息,点击确定,你的信息格式正确,并插入到工作表。 我有3个用户表单都工作正常,但我创build的任何macros引用其中之一只是不能识别该特定的用户窗体存在。 我有一个问题的代码是非常简单的: Private Sub LiquidFormButton_Click() LiquidEntryUserform.Show End Sub 编辑(更新):所以我尝试了一个新的用户窗体,用不同的名字。 我把对象的所有控件复制并粘贴到新的用户窗体中,改变了macros的名字以调出用户窗体,瞧,它工作。 然而,现在用户表单本身并没有做任何事情,因为没有一个控件实际上有任何代码,告诉他们该做什么。 这很好,我只是复制从破碎的forms代码和BOOM现在它不起作用。 所以,在用户表单中,非常简单的编码中的东西就是阻止它被显示出来,尽pipe新的用户表单和被破坏的表单实际上除了显示出来之外还需要做其他事情。 稍后我会在后面讨论完整的用户表单代码。 谢谢!

Excel VBA; 用户窗体,运行在不同的文本框值的一段代码

晚上好,stackoverflow社区。 UPD: 关于我的真实情况的一些信息。 这里是我使用的UserForm: 在我的用户表单中,Duration / CED文本框命名为Dur1-Dur6,S / C Frequency文本框命名为sc1-sc6。 这个macros的主要目的是复制一个表格模板,并以S / C频率为基础,用所需的公式将其粘贴到主表格中。 完整的代码我有: Private Sub OkButton_Click() TheStart: Dim FirstRow2 As Integer: FirstRow2 = 18 'set the number value of first row with formulas Dim LastRow2 As Integer: LastRow2 = Range("L1000").End(xlUp).Row Dim AQCol As Integer: AQCol = 11 'set the number value of AQ column […]

excel用户窗体在任务栏中显示延迟(第二次激活)

我有一个Excel工作表,有6个用户表单,我希望能够在任务栏中select和激活。 我使用了下面的代码,我在另一个线程中发现: Private Sub UserForm_Activate() Dim lFrmWndHdl As Long Dim lStyle As Long lFrmWndHdl = FindWindowA(vbNullString, Me.Caption) lStyle = GetWindowLong(lFrmWndHdl, GWL_STYLE) lStyle = lStyle Or WS_SYSMENU lStyle = lStyle Or WS_MINIMIZEBOX lStyle = lStyle Or WS_MAXIMIZEBOX SetWindowLong lFrmWndHdl, GWL_STYLE, (lStyle) lStyle = GetWindowLong(lFrmWndHdl, GWL_EXSTYLE) lStyle = lStyle Or WS_EX_APPWINDOW SetWindowLong lFrmWndHdl, GWL_EXSTYLE, lStyle DrawMenuBar lFrmWndHdl […]

VBA – 在dynamic创build的文本框上捕获事件

我正在Excel中编写一个VBA应用程序。 我有一个用户窗体,根据其中一个工作表中包含的数据dynamic构build自己。 所有创build各种combobox,文本框和标签的代码正在工作。 我创build了一个类模块来捕获combobox的OnChange事件,并且按预期工作。 现在我需要为某些文本框捕获OnChange事件,所以我创build了一个新的类模块,用于combobox捕获事件。 Public WithEvents tbx As MSForms.TextBox Sub SetTextBox(ctl As MSForms.TextBox) Set tbx = ctl End Sub Public Sub tbx_Change() Dim LblName As String MsgBox "You clicked on " & tbx.Name, vbOKOnly End Sub 消息框只是让我可以确认它的工作,然后再走。 我得到的问题是在UserForm代码模块中: Dim TBox As TextBox Dim tbx As c_TextBoxes '[…] Set TBox = lbl Set tbx = […]

在用户窗体上使用IF&AND语句与checkbox

一个小背景:到目前为止,我创build了一个带有checkbox的用户窗体,每个macros都运行单独的macros,然后在未选中时运行相同的macros以返回“正常”状态。 这是通过IF,Else语句完成的。 我的问题是如何将If语句与AND语句组合在一起,所以当/如果两个框被选中,他们运行不同的代码或macros。 对于VBA和编码,我还是很新的东西,但是对于我来说IFer else语句的工作起来似乎是一个相当简单的想法。 但由于某种原因,我一直在尝试的代码没有工作,我不收到任何错误,只是当我有两个盒子检查时不做任何事情。 我一直在尝试的代码是: Private Sub cbXray_Click() If cbXray.Value = True And cbSCH40.Value = True Then ActiveCell.FormulaR1C1 = _ "=((RC[-6]*'Sched 40 Table Data'!R[1]C[1])+(RC[-5]*'Sched 40 Table Data'!R[1]C[-10])+(RC[-4]*'Sched 40 Table Data'!R[1]C[-9])+(RC[-3]*'Sched 40 Table Data'!R[1]C[-8])+(RC[-2]*'Sched 40 Table Data'!R[1]C[-7])+(RC[-1]*'Sched 40 Table Data'!R[1]C[-6]))" Range("P7").Select Selection.AutoFill Destination:=Range("P7:P30"), Type:=xlFillDefault Range("P7:P30").Select Else Range("P7").Select ActiveCell.FormulaR1C1 = _ "=((RC[-6]*'Sched 40 Table Data'!R[1]C[-11])+(RC[-5]*'Sched […]

单击用户窗体上的button(调用button单击事件)

我试图自动化一个macros,将Excel表转换成LaTeX源代码与另一个简单的macros。 基本上我不想使用用户窗体,所以我试图调用所需的输出button点击我想要的,但我有问题。 它是ctan.org上的Excel2Latexmacros 用户在这里 项目布局在这里 这里是主要的sub,你可以看到我的评论部分是我寻求帮助后一直尝试的所有不同的东西。 Sub latex() With NewController Set .View = NewView Set .Model = NewDefaultModel Set .Storage = NewStorage .Run Application.Wait Now + TimeValue("00:00:02") frmConvert.cmdSave.Object.Value = True 'UserForm2.CommandButton1.Object.Value = True 'frmConvert!cmdSave.SetFocus 'SendKeys "{Enter}" 'Call frmConvert.cmdCopy_Click 'Call frmConvert.cmdSv 'Call frmConvert.cmdCopy_Click 'Call Memento.SaveConversionResultToFile 'Application.Wait Now + TimeValue("00:00:03") 'Application.Run "frmConvert.cmdCopy_Click", txtResult 'frmConvert.cmdCopy = True 'frmConvert.cmdCopy […]

点击单元格时调出用户表单

我有一个电子表格,其中包含第一列中的人员列表以及各行其余部分中关于他们的各种信息。 我有一个用户表单,它将填充并随后编辑每个logging,当用户点击该用户的名字时,我想popup这些logging。 例如: Name Age DOB Postcode John Smith 55 3/6/1958 RM3 5WO Mary Jones 22 4/2/1991 RM2 6TP 所以我想能够点击约翰·史密斯(A2)提出一个与他的年龄段,DOB,邮政编码等领域的表单。我也希望能够使用表格添加条目,所以它也将function列表下至less一行。 我已经被给了下面的代码来使用: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$2" Then frm_tch_staffinfo.Show End If End Sub 我试过在工作表中使用它,但似乎并没有工作 – 当我点击A2时没有任何反应。 代码中有一些错误,或者我已经实现了它? (我已经把它放在相关工作表的代码中)。 此外,我想展开目标地址,以包含所有名称(其数量可能会更改)的范围和至less一个单元格(但不包括A1中的标题)。 是否可以定义这样一个范围? 无论是简单地selectA2和以下,或者使用一个过程来计算单元格已满,并在最后添加或更多。 谢谢你的帮助! ETA: 我绝对需要Excel,因为我的用法是电子表格而不是数据库。 这是一个简化的例子:数据实际上都是数字,用于其他工作表中相对复杂的计算。

尝试计算使用的行数时,错误424“Object Required”

我试图计算在Excel 2013 VBA项目中使用的行数,以便我可以用一个用户窗体填充它(每次我按保存button,它将添加一个新的行到工作表)。 工作表也有两个标题行,所以我不希望他们被覆盖。 这应该通过下面的代码来完成,只要按下Savebutton就会执行: Private Sub Save_Click() Dim totalRows As Long totalRows = Daten.Cells(Rows.Count, "A").End(xlUp).Row If totalRows < 2 Then totalRows = 2 Else totalRows = totalRows End If … End Sub 但是,当我按保存button,我得到错误“424”对象要求“。 我真的迷失在这里 – 任何人都知道我在做什么错了? 如果你需要了解更多,请告诉我,因为我真的想看到这个工作。