Tag: userform

用户表单validation

我有一个用户窗体与特定的文本框,我只想应用数字规则(没有string条目)。 我在创build适当的error handling程序方面遇到困难。 从本质上讲,因为这些文本框将被用来执行一个math函数,具有string值导致潜艇崩溃,我不能找出正确的语法来停止string条目。 我目前的代码是: Private Sub TextBox12_Change() Sumdatup End Sub Private Sub TextBox16_Change() Sumdatup End Sub Private Sub TextBox21_Change() Sumdatup End Sub Private Sub Sumdatup() Dim Total As Double Total = 0 If Len(TextBox12.Value) > 0 Then Total = Total + CDbl(TextBox12.Value) If Len(TextBox16.Value) > 0 Then Total = Total + CDbl(TextBox16.Value) If Len(TextBox21.Value) […]

在执行vba的过程中,如何留在UserFrom中

我在UserForm中有一个button,我已经编写了一些特定的任务。 问题是,只要我按下button,窗口将切换到指定的工作簿中的代码执行分配的工作,并返回到用户窗体执行完成后。 我希望用户窗体从开始直到执行结束停留在屏幕上,而不是切换。 代码如下: Private Sub CommandButton1_Click() Application.DisplayAlerts = False Application.ScreenUpdating = False Dim hyperlink As String Dim wbAcro As Workbook Dim WsEPC As Worksheet Set wbEPC = Workbooks("" & EPC_Datasheet): wbEPC.Activate Set WsEPC = wbEPC.Worksheets("Sheet1") Set wbAcro = Workbooks.Open("C:\EPC AutoTool\Acronyms\Acronyms Details.xlsx") Dim sh As Worksheet, ws As Worksheet Dim LstRw As Long, rng As […]

从模块调用用户窗体来显示popup图并返回到模块中的同一位置

我有一个VBA程序运行查询从Oracle数据库中提取数据,并将其放置在Excel工作表中,并创build一个用于上传到其他软件的输出.txt文件。 我试图在提取数据和创build输出文件之间放置一个中间步骤,允许用户“仔细检查”输出文件的数据是否正确。 我试图创build一个用户窗体,显示一个popup式图表,允许用户“接受”或“拒绝”创build一个输出文件。 下面是我的VBA代码的基本副本,其中macros调用数据被调用,然后创build输出文件。 如何访问用户表单,然后返回到模块中的相同位置以继续该程序? Public Sub OutputSurveyFile() 'Call appropriate macro to run the query to get data needed to be exported to file Call qry_DirSurveyRpt 'Set worksheet to the sheet activated by calling query macro Set wsData = ActiveSheet 'Determine last row and column of data With wsData LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row LastCol = […]

使用当前行的logging填充用户窗体

我有一个用户窗体,有几个文本框,单选button,下拉菜单等。当用户创build一个新的条目时,数据保存在数据表中,一条logging占据一行。 现在我希望能够点击列A中的“编辑”button,它允许加载预加载该行数据的用户表单。 问题是,当表单被加载时,初始化macros将所有表单字段重置为“”,我还没有想出如何告诉VBA加载调用行的数据。 有关如何去做这个的任何build议? 这里是我迄今为止的代码:当点击NEW ENTRYbutton时调用用户表单 Sub call_userform() Details.Show End Sub 当用户窗体初始化时: Private Sub UserForm_Initialize() IC_logo.BackColor = RGB(81, 81, 73) ' ash grey 'Empty all fields status.Value = "Open" serial = Evaluate("randbetween(10000,30000)") priority.Value = "" created_on.Value = Format(Date, "dd/mm/yyyy") created_by.Value = "" department.Value = "" floor.Value = "" area.Value = "" subarea.Value = "" details.Value […]

VBA-遍历数组中的string值并确定它们是否与特定文本相同

我有一个excel的数据集很多列。 我正在使用UserForm条目来填充这些列。 但是我也希望能够在用户表单中编写一个现有的ID,并使用从表单中提取的相应数据自动填充useform。 列的顺序可能会改变,所以我不想使用偏移function来做到这一点。 我想在我的代码中做的是做一个数组与所有的列名称(它是相应的文本框中的条目forms命名相同)。 首先,我正在查找该行的ID。 然后我想遍历不同的列,并find它们下面的值对应的ID来填充我的表单。 问题是,我想使用“数组(我)”作为我的用户表单中的文本框的名称,但它不读取它。 例如: 如果我直接写入MRN =单元格(CSN_R,Changing_C),它会填充具有正确数据的条目表单,因为它select“MRN”或“Myarray(0)”下的id行和列号。 但是,如果我使用myarray(0)=单元格(CSN_R,Changing_C),它不….我不知道该怎么做,以使其工作。 Dim CSN_Find As Range Dim CSN_Existing As Range Dim CSN_New As Range Dim CSN_R As Integer Dim Changing_C As Integer ' Look for the CSN value Worksheets("Input Data").Activate Worksheets("Input Data").Rows(1).Find(What:="CSN", LookIn:=xlValues).EntireColumn.Select Set CSN_Find = Selection.Find(What:=CSN.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) ' If it's […]

当在不同的工作表中重写范围时,在Userform_intialize上运行1004

我很难让我的Userform正确初始化。 我find了问题,但似乎无法find解决scheme。 我想在用户窗体启动时填充三个列表框。 RowSource必须是dynamic的。 这里是缩短到相关部分的代码。 Private Sub UserForm_Initialize() Dim varUserVE As Variant Dim varUserBL As Variant Dim varUserFL As Variant 'Find RowSource in Sheet Settings With Settings varUserVE = .Range("B7", Range("F80").End(xlUp)).Address varUserBL = .Range("H7", Range("L80").End(xlUp)).Address varUserFL = .Range("N7", Range("R80").End(xlUp)).Address End With 'Fill lists With lstVE .ColumnCount = 5 .ColumnWidths = "100;100;50;85;50" .ColumnHeads = True .RowSource […]

在列表框中显示执行结果时出现问题

我用excel 2013 vba的用户表单有最后一个问题。 我想在点击searchbutton(SearchButton)时,对我的用户表单中的search结果框(SearchResultsListBox)中显示的行数(结果)进行计数。 计算的行数(结果)应显示为结果find框(ResultsFoundTextBox)中的数字。 此刻,无论search结果框中的行数(结果)如何,总是返回96。 不知道为什么原始数据目前最多只有17-20行。 这是我的代码: Private Sub SearchButton_Click() 'dim the variables Dim Crit As Range Dim FindMe As Range Dim SearchMe As Range Dim the_sheet1 As Worksheet Dim the_sheet3 As Worksheet 'error handler On Error GoTo errHandler: 'set object variables Set the_sheet1 = Sheets("Data Sheet") Set the_sheet3 = Sheets("Filter Data") 'hold in […]

Excel VBA UserForm – 如果不是空的那么

我正在制作一个用户表单,要求用户input。 有很多的投入,但我有一个特别的问题。 如果用户在文本框(名为SecondCompetitor)中inputANYTHING,我希望函数将一些值放入我的一个Excel工作表(名为ws4)中。 这是我写的代码: With ws3 If Not IsEmpty(Me.SecondCompetitor.Value) Then .Cells(iRow3, 14).Value = Me.Ticker.Value .Cells(iRow3, 2).Value = Me.Rec1.Value .Cells(iRow3, 3).Value = Me.Rec2.Value .Cells(iRow3, 4).Value = Me.Rec3.Value .Cells(iRow3, 5).Value = Me.Rec4.Value .Cells(iRow3, 6).Value = Me.Rec5.Value .Cells(iRow3, 7).Value = Me.Rec6.Value .Cells(iRow3, 8).Value = Me.Rec7.Value .Cells(iRow3, 9).Value = Me.Rec8.Value .Cells(iRow3, 10).Value = Me.Rec9.Value .Cells(iRow3, 15).Value = Me.FirstCompetitor.Value .Cells(iRow3, […]

在VBA UserForm中查找基于多个variables的数据

我已经在vba中创build了一个UserForm,如下所示: 一旦用户填写完表格,logging将保存在“Sheet2”上。 对于每个控制ID,应该有3个可能的活动。 我想要做的是在用户input控件ID和活动名称后,表单将填充来自“Sheet2”的现有数据。 这是我使用“索引”/“匹配”,但它返回与“types不匹配”错误。 Private Sub Reg3_AfterUpdate() With Me .Reg2 = Application.WorksheetFunction.Index(Sheet2.Columns(3), Application.WorksheetFunction.Match(1, (Sheet2.Columns(2) = CLng(Me.Reg1)) * (Sheet2.Columns(4) = CLng(Me.Reg3)), 0)) End With End Sub Reg1是位于第2列的控制ID; Reg2是全名,位于第3栏; Reg3是位于第4列的Activity。 有人可以帮帮我吗?

VBA Excel自定义用户窗体与checkbox,将无法在macros代码中工作

我需要一点VBA的帮助。 我创build了一个自定义用户窗体,其中包含选项yes,n / a,no和一个用于input的命令button。 现在我想添加逻辑,它应该只过滤显示的行。 它总是返回错误在我的第一条线(如果checkbox1.enabled)。 我已经尝试,如果checkbox1.value是真的,但它仍然不会工作。 有任何想法吗? 谢谢! Private Sub CommandButton1_Click() Dim runner As Variant, row As Variant row = 9 If CheckBox1.Enabled Is True Then For Each runner In row If Not runner.Hidden Then If cell(row, 10).Value Is Empty Then runner.Hide End If End If Next runner End If End Sub