Tag: excel vba

性能问题在外部数据源的两个表中运行Excel中的macros

在工作表上,我有两个表,它们是从两个不同的外部来源填充的,一个来自db2和另一个SQL服务器。 一旦表中的数据被刷新,我将触发一个运行VBA代码的macros,这个代码循环遍历两个表中的单元格并应用业务规则。 在本地进行testing,按预期工作,macros在几秒钟内完成。 当我将连接更改为指向networking上的db2和SQL Server数据库时,它会及时刷新数据,但是当我触发macros时, 30分钟即可完成。 只有连接已被更改,我正在使用相同的工作簿进行所有testing。 首先想到的是,它现在正在从networking中提取数据,可能是连通性的,但是它刷新了数据OK,而且它只是运行缓慢的macros,VBA代码不使用连接,只是循环的基础。 我失去了什么是造成这一点,想知道是否有人曾经遇到过这种行为,知道如何解决它?

函数检查列中的两个值是否相等,以及它们对应的行值之一是否相等

我有一个Excel电子表格,其中包含Raw file和Sequences作为列。 我想检查Sequences列find任何重复的序列和所有的重复,以检查他们的Raw file也是相同的。 这是它的样子: | 原始文件| 序列| otherdata1 | otherdata2 | | HU_932 | BLAST | **& | (&| | WR_235 | HELLO | #(@ |#@ * | | HU_932 | BLAST | #@(|(#)| | HU_932 | CHART | $&@ | %#* | | RT_329 | BLAST | ^ *)| @ $#| 所以在上面的例子中,我希望能够只select第一和第三行,因为这些是Sequences唯一的行,并且Raw file是相同的。 […]

从embedded的模板文件中将模板应用于Excel VBA中的powerpoint

我正试图通过excel将一个模板应用到一个简报。 PowerPoint模板通过插入 – >对象embedded到我的Excel文件中。 我已经成功地使用.applytemplate方法来从文件中应用模板,但我无法调整代码以引用embedded的PPT模板。 我试过使用OLEObject,但是恐怕这是不正确的。 请查看下面的代码。 Sub ppCreate() Dim myPP As PowerPoint.Application Dim myPres As PowerPoint.Presentation Dim activeSlide As PowerPoint.Slide Dim ppObj As OLEObject ' Create instance of PowerPoint Set myPP = CreateObject("Powerpoint.Application") ' For automation to work, PowerPoint must be visible myPP.Visible = True ' Create a presentation Set myPres = myPP.Presentations.Add ' […]

只想在运行VBA代码的时候显示一个Popup或者状态栏

我有一个很长的代码,并采取约。 1分30秒执行,所以我想显示一个状态栏显示“请稍等…正在运行”或一个popup式的相同的消息或任何其他的将是容易的。 它包括很多做,而如果条件..我不想用任何长码或非常沉重的方法来显示消息,请build议一些小方法来做到这一点。

如何获取多列中的string和相邻数字

我想要运行一个循环,按照一定的标准对文本进行分组,然后加起来,但是我需要能够抓取两个数据。 Connecticut 624 Georgia 818 Washington 10 Arkansas 60 New Jersey 118 Ohio 2,797 select将是类似的东西,我希望用户能够突出显示两列,我将贯穿并按位置分组状态,并添加总计 编辑 – 到目前为止,我所能做的就是抓住用户select的范围: Sub Short() Dim rngMyRange As Range If TypeName(Selection) = "Range" Then Set rngMyRange = Selection Else Exit Sub 'Non-range type selection eg a chart End If MsgBox "The address of rngMyRange is " & rngMyRange.Address(False, False) End […]

运行时错误91对象variables或未设置块variables

我是新来的VBA为Excel和我坚持一个小问题。 我有一个数据列表,我有两个任务,我想完成。 第一个将删除J列中任何等于0的值的行; 第二部分:我想循环遍历剩下的行,并删除I列中的值大于J列中的值的行。 但是,我收到以下错误:VBA运行时错误91对象variables或未设置块variables 这是说: For rw = .Cells(rows.Count, "E").End(xlUp).Row To 2 Step -1 完整的代码是 Private Sub clearupdata_Click() Dim rows As Range, OSQty As Range, value As Long, rw As Long Set OSQty = Range("j2") Do Until OSQty.value = "" value = Val(OSQty.value) If (value = 0) Then If rows Is Nothing Then Set […]

使用VBA在Excel中select多个可变单元格区域以绘制边框

我有一个标签,自动接收从电子表格的另一部分提取的数据。 总是有三列数据用于报告:列A具有任务描述,列B具有人工编号,列C具有费用编号。 Col F有一个数字,表示该部分的行数(每次都会有所不同,但它是随着提取而来的 – 不需要计算)。 我只是想在每个部分周围绘制边框。 所以如果我手动做,我selectA2:A7并select外部边界。 然后我selectB2:B7并做同样的事情。 然后C2:C7重复。 我知道有多less行,因为这个数字在F列。 然后我进入下一节并做同样的事情,但是行数可能会不同,但在F列中标识。 该过程将被重复,直到所有部分都被概述为止。 可能有3个部分,或20个。我想我可以根据列F中的数据条目的计数循环序列。 这里是之前和之后的链接: Excel边界自动化 – 之前 Excel边界自动化 – 之后

生成0.001359和1之间的随机数字

我正在做一个问题,并使用函数rnd(),但随机值<0.001359使其他值不可接受。 如何生成从0.001359开始的随机数字直到1?

AdvancedFilter CopyToRange:=第一个空行

我想在VBA中使用AdvancedFilter,而不是将副本设置为范围到固定值,我想将其复制到第一个空行。 我想从两个单独的AdvancedFilter步骤附加两个表,有没有更简单的方法? 例如,首先复制两个表来分隔位置,然后合并它们? 两个表都有相同的列。 我现在的代码是: Set rngCriteria_v = Sheets("1").Range("filter") Set rngExtract_v = Sheets("2").Range("**Here first empty row**") Set rngData_v = Sheets("3").Range("Input") rngData_v.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=rngCriteria_v, _ CopyToRange:=Sheets("Stocks_5_control").Columns("AG").Find(vbNullString, Cells(Rows.Count, "AG")), _ Unique:=False

使用Excel表格添加数字

我创build了一个有五个文本框的Excel表单。 这些文本框接受任何数值。 一旦input五个数字,就会有第六个文本框显示这些值的总和。 这些值的总和应该始终是100%。 这是我的代码: Private Sub TextBox1_Change() Dim Value As Single Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) TextBox6.Value = Value End Sub 我对所有文本框更改事件具有相同的代码。 不幸的是,这是行不通的。 当我input10作为我的input,而不是显示100%它显示10203040作为结果。 我究竟做错了什么?