Tag: 表单

条件格式化VBA

我正在build立一个表格来input帐户信息和订单状态。 每一行需要根据同一行上的一个单元格的值来改变,在这种情况下单元格“H”。 我可以很容易地通过条件格式来实现,但是我认为这使得文件比编程代码更大。 我已经尝试了一些select,但我可以告诉在这一刻我迷路了。 我附上我想要完成的一个例子。 我不知道该怎么做,所以如果有人能帮助我,我会非常感激。 在这里input图像说明

在条件格式中更改字体颜色

我试图根据定义的单元格的值,在这种情况下单元格“H”中的值更改单元格范围的颜色(“A”到“N”)。 我需要在“凭证”,“错误/票证”和“完成/备份”的情况下换成白色和粗体,而其他情况则保持黑色。 我有更改定义的范围的单元格颜色的代码,但我不知道如何应用代码的字体样式和颜色更改。 这是我到目前为止: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns("H")) Is Nothing Then On Error GoTo bm_Safe_Exit Application.EnableEvents = False Dim trgt As Range For Each trgt In Intersect(Target, Columns("H")) Select Case LCase(trgt.Value2) Case "2 day process" Cells(trgt.Row, "A").Resize(1, 14).Interior.ColorIndex = 46 Case "advisor" Cells(trgt.Row, "A").Resize(1, 14).Interior.ColorIndex = 37 Case "back […]

如何根据一个标准findRange,然后根据另一个标准find该Range内的一个Cell

我需要一种方法来根据一个标准find一个范围,然后根据另一个标准来find该范围内的一个单元格。 在这种情况下,我有一个工作表,你可以添加尽可能多的商业房地产物业,然后在那里传播财务信息。 您可以为每个财产拥有长达三年的财务状况。 所以在单元格(“G2”)中,您将是第一个属性名称,然后在范围内(“G3:I3”)将是每个语句扩展的语句date,范围(“G38:I38”)包含我最终需要的数据提取。 任何额外的财产将具有相同的行号,但一切都将在右边6列。 所以基本上我需要find属性名称,然后在该范围内(可以说(“G2:I60”))我需要根据所需的语句datefindG38,H38或I38中的数据。 现在我有两个用户表单; 1显示所有属性名称,并在select之后显示显示语句date的第二个使用表单。 有人能帮忙吗。 让我知道是否有任何我需要解释的未知数,因为这难以用言语expression。 例: Property Name: DEF St 12/31/2013 12/31/2014 12/31/2015 Rental Income 150 240 485 Expenses 100 200 300 Net Income 50 40 185 Property Name: ACME St 12/31/2013 12/31/2014 12/31/2015 Rental Income 100 120 350 Expenses 75 125 180 Net Income 66 76 266 在这个例子中,当从列表框中select时,我需要第一个用户表单来查找属性DEF St,然后find在下一个用户表单中从列表框中select的任何语句数据的净收入。

search和更新用户表单

我有这个代码,我在网上find一个VBAsearch用户表单。 我想做一些修改,所以显示的结果包括来自find的单元格行的其他列的数据,而不是只给出地址。 我最终希望能够从用户窗体中更改这些单元格中的值。 所以我可以search一个特定的行并更新表。 代码如下: Private Sub TextBox_Find_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Calls the FindAllMatches routine as user types text in the textbox Call FindAllMatches End Sub Private Sub Label_ClearFind_Click() 'Clears the find text box and sets focus Me.TextBox_Find.Text = "" Me.TextBox_Find.SetFocus End Sub Sub FindAllMatches() 'Find all matches on activesheet 'Called […]

Excel VBA – Userform vlookuperror handling

我有一个用我的设置工作表填充产品名称的combobox,我试图显示一个标签与产品说明一旦用户从combobox中select一个产品。 这很好,除非用户select没有产品说明的产品,因此,vlookup将返回空,并导致用户表单错误。 我尝试了几个如果错误 – 如果是空的 – 说明是0 – 说明是空的语句,但似乎没有工作,包括OnError GoTo Errorhandler。 我在这里做错了什么? Private Sub Problem_List_Change() Description = Application.WorksheetFunction.VLookup(Problem_List.Text, Worksheets("Settings").Range("l3:o1000"), 4, False) If IsError(Description) Then Desc.Caption = "" Else Desc.Caption = Description End If End Sub 谢谢,A2K

基于用户input的数据进行validation

我正在尝试创build一个实验室结果数据input表单,它根据所testing产品的规格validation答案。 用户input以下信息:产品代码和SG结果等 我的源数据是一个有4列的表,产品代码,说明,SG低,SG高 资源 当用户input产品代码和SG时,我希望根据产品允许的特定范围(来自源数据)进行validation,并且有一个对话框要求用户重新考虑input的结果(如果是超出了范围)。 很容易在结果表中用条件格式标记,但我不希望我的用户有权访问它。 结果 我需要参考单独的范围VLOOKUP来返回规格。 表格 提前致谢! (更新) Private Sub CommandButton1_Click() Dim i As Integer i = 2 While ThisWorkbook.Worksheets("Sheet2").Range("A" & i).Value <> "" i = i + 1 Wend Dim losg, loph, hisg, hiph As Double losg = Application.WorksheetFunction.VLookup(ProdCode.Text, Sheet1.Range("A1:F24"), 3, False) hisg = Application.WorksheetFunction.VLookup(ProdCode.Text, Sheet1.Range("A1:F24"), 4, False) loph = Application.WorksheetFunction.VLookup(ProdCode.Text, […]

如何直接从Access窗体加载数据到Excel用户窗体列表框?

我想从Access加载一些数据到Excel的用户窗体列表框。 我现在正在做的是创buildADODB.Connection连接访问并创buildADODB.Recordset来存储数据,首先。 其次,我使用Range("xx").CopyFromRecordset将数据复制到Excel工作表。 第三,excel的名称范围为“ ResultSet ”。 第四,使用Me.ListName.RowSource="ResultSet"将数据从Excel工作表复制到ListBox。 正如你所看到的,我用四个步骤来完成这项工作。 有没有办法跳过第2步和第3步,直接从Access复制数据到ListBox? 谢谢

依次加载不同的Userforms

我很困惑的过程调用两个不同的用户在不同的时间从不同的模块。 我有以下两个名为UserForm1和UserForm2 UserForm2 UserForm1我也有一个静态button代码名为“Private Sub UserForm_Click()” 表单中的子包含以下代码: 通过名称:UserForm1: [在userform1我有一个button:] private sub OKButton_Click() msgbox("OKButton_Click via 1") End Sub Public Sub UserForm1_Initialize() msgbox("UserForm1_Initialize via 1") 'dynamic form initialisation End Sub Private Sub UserForm_Click() msgbox("UserForm_Click via 1") End Sub VIA名称:UserForm2 Public Sub UserForm_Initialize() msgbox("UserForm_Initialize via 2") 'dynamic form initialisation End Sub 我打电话给两个用户表单: Module57 Sub Vitamins() UserForm2.Show 'Initialising Userform2 […]

在用户表单上input慢速input

我有一个用户表单只在工作簿的第一次打开才能从用户获取项目信息。 表单是非常基本的,我有12个标签,每个标签有1个文本框,1个combobox或最多1个文本框和1个combobox在一起。 问题是这个用户表单popup时, input速度太慢了 。 只要这种forms没有任何主要的代码,就不应该花那么多时间。 即使在页面中没有任何自动计算,我将input反映为输出(这就是为什么这个问题不能帮助我: 如何提高excel VBA中的用户表单的存储速度 ) (PS:ComboBoxes的行源是命名的范围,但我有另一种forms相同的风格,我不面对这个问题) 这是我的输出代码: 'Project Name Input Private Sub TextBox7_Change() Sheet2.Range("E3").Value = TextBox7.Value End Sub 'Customer Name input Private Sub TextBox1_Change() Sheet2.Range("E4").Value = TextBox1.Value End Sub 'Region Input Private Sub ComboBox1_Change() Sheet2.Range("E5").Value = ComboBox1.Value End Sub 'City Input Private Sub TextBox6_Change() Sheet2.Range("G5").Value = TextBox6.Value End Sub 'Bid […]

用户形成VBA将值复制到单元格中

亲爱的同事们,StackOverFlow会员, 我有一个愚蠢的问题来找你,我似乎无法解决。 我正在处理一个用户表单来input员工数据库中的数据(在同一个工作表中)。 代码如下: Private Sub CommandButton1_Click() Dim iRow As Long Dim ws As Worksheet Set ws = Worksheets("Employee-Data") iRow = ws.Cells(Rows.Count, 13) _ .End(xlUp).Offset(1, 0).Row ws.Cells(iRow, 1).Value = Me.TextBox1.Value ws.Cells(iRow, 2).Value = Me.TextBox2.Value ws.Cells(iRow, 4).Value = Me.TextBox3.Value ws.Cells(iRow, 5).Value = Me.TextBox4.Value ws.Cells(iRow, 6).Value = Me.TextBox5.Value ws.Cells(iRow, 7).Value = Me.TextBox6.Value ThisWorkbook.Save Unload Employee End Sub […]