Tag: vba

VBA-在一个范围内的variables,在一个公式内

我有以下代码,以计算单元格范围内的最大值: Range("E3").Select ActiveCell.FormulaR1C1 = "=MAX(RC[-3]:R[50]C[-3])" 我怎样才能取代50与我的代码中的variables? 谢谢你的帮助!

如何比较两个形状?

有没有办法比较两个几何形状(或任何两个更通用的数据结构),而不是在涉及容差时使用暴力? 蛮力(比较每个对象的每个值与另一个对象的每个值)是有效的,但速度很慢,我不能使用它。 我试着对数据进行sorting并比较两个已sorting的集合。 速度很快,但它只适用于零容忍。 一旦我添加容忍,我迷路了。 问题是,当我比较时,两个值可能是相同的,而当我sorting时,这两个值是不同的。 这里是我的问题的一些细节。 在我的Excel VBA加载项中,我有一个Shape对象集合,它们由两个Point对象构成的Line对象集合构成。 该加载项通过COM扫描CADgraphics并创buildShape对象的集合。 一个简化的版本可以产生这个: Shape 1 Shape 2 Point 1 0.0 5.0 0.0 4.9 Point 2 4.9 0.0 5.1 0.0 Point 3 5.0 5.0 5.0 5.0 我需要找出哪些形状与哪些形状相同,其中相同的手段具有相同的形状,大小和方向,但不是相同的位置(到目前为止,这是微不足道的)加上或减去一个宽容(现在不是很微不足道)! Point.IsIdenticalTo(OtherPoint)被定义为: Function IsIdenticalTo(OtherPoint As Point) As Boolean IsIdenticalTo = Abs(X – OtherPoint.X) < Tolerance And Abs(Y – OtherPoint.Y) < Tolerance End […]

在VBA Access中使用.text和.value之间的区别

我正在传递textbox1.text值到一个查询,有时到一个string: Dim combor1 As String combor1 = comboReason1.Text 我怎么知道我应该把combor1 = comboReason1.Value ? 另外,为什么我需要为控件设置焦点来引用它的属性? 这对我来说没有意义。 此外,当我设置combor4 = comboReason4.Value和.value为null,那么我得到一个错误关于无效使用null。

如何强制VBA / Access要求定义variables?

我正在对一些VBA代码进行一些重大更改,并且正在删除和/或重命名一些variables。 如果编译器会向我抱怨说variables不存在,而不是在运行中创build它,那么find所有需要更新的位置会容易得多。 如何强制VBA / Access要求声明variables?

强制Excel VBA中的屏幕更新

我的Excel工具执行一个长时间的任务,我试图通过在状态栏或工作表中的某个单元格中提供进度报告来对用户友好,如下所示。 但屏幕不刷新,或停止刷新某些点(如33%)。 任务最终完成,但进度条是无用的。 我能做些什么来强制屏幕更新? For i=1 to imax ' imax is usually 30 or so fractionDone=cdbl(i)/cdbl(imax) Application.StatusBar = Format(fractionDone, "0%") & "done…" ' or, alternatively: ' statusRange.value = Format(fractionDone, "0%") & "done…" ' Some code……. Next i 我正在使用Excel 2003。

如何在Excel中统计不同字体的文字

我有一个从另一个数据库导入到excel的名称列表。 列表中感兴趣的名称以红色字体突出显示。 我想要一个方法来计算它,即约翰·史密斯(John Smith)在一列中出现5次总共5次中的3次,他的名字以红色字体突出显示。 所以我想看看他的名字有多less个实例是红色的。 我知道如何search他的名字的所有实例eg = COUNTIF(A1:A100,“John Smith”) 我也有帮助创build一个VB函数,通过使用这个函数计算工作表中的所有红色(= SumRed)值(一旦指定颜色索引): Function SumRed(MyRange As Range) SumRed = 0 For Each cell In MyRange If cell.Font.Color = 255 Then SumRed = SumRed + cell.Value End If Next cell End Function 我无法find一种方法来结合这两种计数条件。 任何帮助将不胜感激!

你如何得到一个范围返回它的名字?

Dim sampleRange as Range Set sampleRange = Worksheet.Range(Cells(1,1),Cells(1,4) sampleRange.Name = "Range1" MsgBox sampleRange.Name 上面的代码将显示范围的实际地址,而不是名称。 为什么? 我如何得到一个命名的范围来返回它的名字?

设置自动筛选多个通配符

现在我正在做编码设置数据图表的filter。 基本上,我不知道如何在这里发布数据表,所以只要input它们即可): (从左边开始是列A)名称* B设备*数量*出售*所有者 基本上我需要过滤掉2列: – 带有任何字的BDevice包含“M1454”或“M1467”或“M1879”(这意味着M1454A或M1467TR仍然适合) – 拥有PROD或RISK的所有者 这是我写的代码: Sub AutoFilter() ActiveWorkbook.ActiveSheet..Range(B:B).Select Selection.Autofilter Field:=1 Criteria1:=Array( _ "*M1454*", "*M1467*", "*M1879*"), Operator:=xlFilterValues Selection.AutoFilter Field:=4 Criteria1:="=PROD" _ , Operator:=xlOr, Criteria2:="=RISK" End Sub 当我运行代码时,机器返回错误1004,似乎是错误的部分是filter第2部分(我不确定使用的字段,所以我不能肯定地说) 编辑; Santosh:当我尝试你的代码时,机器出错9的下标超出范围。 错误来自with语句。 (因为数据表有A到AS列,所以我只是改为A:AS)

如何在Access VBA中引用Excel对象?

为了能够从我的Access 2007 VBA脚本中使用Excel对象和常量,我必须做什么声明? Dim wb As Workbook 要么 Set objExcelApp = New Excel.Application 要么 .Borders(xlEdgeBottom) 谢谢

将date格式更改为yyyy-mm-dd

我有一个包含混合格式date的date列。 例如: 一个 1990年3月21日 1990年3月21日 所以,基本上在一列中有两种不同的格式: dd.mm.yyyy和mm/dd/yyyy 。 我正在尝试编写一个VBA脚本,将列中所有date的格式更改为yyyy-mm-dd 。 这就是我到目前为止: Sub changeFormat() Dim rLastCell As Range Dim cell As Range, i As Long Dim LValue As String i = 1 With ActiveWorkbook.Worksheets("Sheet1") Set rLastCell = .Range("A65536").End(xlUp) On Error Resume Next For Each cell In .Range("A1:A" & rLastCell.Row) LValue = Format(cell.Value, "yyyy-mm-dd") .Range("B" & i).Value […]