Tag: vba

全局variables是空的,如果2个相同的xls文件具有相同的macros打开

Excel中有macros已经被写入,并有错误报告,我必须解决这个问题。 初步调查如下…有macro ABC.xls文件。 现在,这个macros有一个名为changeTheCode的sub changeTheCode ,当我按下Ctrl + M时,它将被调用。 这个小组将打开一个Open File Dialog ,用户可以select一个CSV文件。 我存储在全局variables中的CSV文件的path声明在所有函数之外 Public txtFileNameAndPath As String 当用户closuresexcel时,将使用此全局variables将更改保存到CSV文件中。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Call saveUnicodeCSV Call deleteXLS End Sub 我使用这个ABC.xls文件来打开一个ABC123.CSV文件。 我使用这个DEF.xls ( DEF.xls的副本)文件来打开DEF123.CSV文件。 但是当我用Ctrl + M打开DEF123.CSV时, DEF123.CSV的sub changeTheCode被调用, txtFileNameAndPath的全局variablesDEF.xls为空,当我closuresExcel时,事情并没有得到保存,因为这个。 全局variables正在被设置的代码。 Public txtFileNameAndPath As String Sub CodePageChange() Dim SheetName As Worksheet Dim fd As Office.FileDialog Dim […]

在Excel 2007中编写VBA以便在Excel 2003中使用

我在开发者的地方已经更新到Excel 2007,但大部分的用户都没有。 我正在为需要包含vba代码的用户构build一个电子表格模板(* .xlt),我想知道在2007年而不是2003年可能会遇到什么问题? 我没有机会使用Excel 2003进行testing,我担心这个特定的项目正在发生灾难。

Excel VBA – 解释“不适用”值

我正在遍历一个包含价格列的电子表格,其格式为doubletypes。 我试图find一个电子表格中显示的缺失值为"n/a" ,但它不让我把它解释为一个stringtypes。 包含"n/a"的单元格似乎是一个integertypes; 我怎么读这个?

Excel VBA子串

我正在编写一个macros,它采用LDAP格式的名称列表将其转换为First,Last(region)。 对于那些不知道LDAP是什么样子的人来说,下面是: CN=John Smith (region),OU=Legal,DC=example,DC=comand 在Excel VBA中,我似乎无法使用string.substring(start,end)。 谷歌search似乎显示,中(string,开始,结束)是最好的select。 问题是这样的:在Mid中,end的整数是从开始的距离,而不是字符的实际索引位置。 这意味着不同的名字大小将有不同的结束位置,我不能使用“)”索引来查找区域的结尾。 由于所有的名字都以CN =开头,所以我可以正确地find第一个子string的结尾,但是我找不到“)”,因为名字长短不一。 我有一些代码如下: mgrSub1 = Mid(mgrVal, InStr(1, mgrVal, "=") + 1, InStr(1, mgrVal, "\") – 4) mgrSub2 = Mid(mgrVal, InStr(1, mgrVal, ","), InStr(1, mgrVal, ")") – 10) manager = mgrSub1 & mgrSub2 有没有人知道一个方法来实际使用一个设定的终点,而不是一个终点,是从开始的那么多值?

如果目标单元格中​​的公式超出特定值,则显示“消息框”的VBA代码

我试图写一个简单的macros来显示一个popup式窗口(vbOKOnly)如果一个单元格中的值超过了某个值。 我基本上有一个产品和折扣的工作表。 我在A1单元格中有一个公式,它将折扣显示为所有条目的有效折扣百分比(50%或.5)。 我正在寻找的代码是如果单元格A1的值超过所说的50%,则显示一个消息框,因为另一个单元格的input将折扣推到了50%以上。 谢谢!

Excel:在“kx + m”文本string中查找k和m

有没有一种巧妙的方法使用VBA或公式在kx+m string查找“k”和“m”variables? kx + mstring看起来有几种情况,例如: 312*x+12 12+x*2 -4-x 等等。 我很确定我可以通过在Excel中编写非常复杂的公式来解决这个问题,但是我想也许有人已经解决了这个问题和类似的问题。 这是我迄今为止最好的,但它不处理所有情况(例如,当kx + mstring中有两个minuses: =TRIM(IF(NOT(ISERROR(SEARCH("~+";F5))); IF(SEARCH("~+";F5)>SEARCH("~*";F5);RIGHT(F5;LEN(F5)-SEARCH("~+";F5));LEFT(F5;SEARCH("~+";F5)-1)); IF(NOT(ISERROR(SEARCH("~-";F5))); IF(SEARCH("~-";F5)>SEARCH("~*";F5);RIGHT(F5;LEN(F5)-SEARCH("~-";F5)+1);LEFT(F5;SEARCH("~*";F5)-1));"")))

什么是Excel 97-2003正确的`XlFileFormat`枚举

关于Excel VBA Interop,用于保存Excel 97-2003电子表格的正确的XlFileFormat枚举是什么? 官方的MSDN文档是在这里,但我不明白从这个正确的select是什么。 谢谢

如何使用VBA将数据validation添加到单元格

我想使用VBA在一个单元格(这是可变的)中添加“数据validation”,并且数据validation列表中的范围也是可变的。 直到现在我一直在使用这个 这里“range1”是数据validation列表中的范围,“rng”是我要validation数据的单元格 Dim range1, rng As range Set range1 = range("a1:a5") Set rng = range("b1") With rng With .Validation .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="range1" End With End With 我得到“应用程序定义和对象定义的错误” 也可以有人解释我在不同论点的含义 With .Validation .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="range1"

在VBA中舍入到最接近的较大整数

我试图计算商品堆叠的层数。我有一个可变数量( iQty ),一个给定的加载dRTW宽度( dRTW ),一个商品的宽度( dWidth )和一个数量( iLayerQty )。 每层的数量计算为iLayerQty = Int(dRTW/dWidth) 现在我需要把总数量除以每层的数量并且四舍五入。 在Excel公式中很容易,但我试图避免WorksheetFunction调用,以尽量减lessA1 / R1C1混淆。 目前我正在用这个来逼近它: (Number of layers) = ((Int(iQty / iLayerQty) + 1) 而且大多数情况下都能正常工作 – 除非数字给出一个整数(货物宽度为0.5米,例如安装在2.5米的拖车上)。 当然,在这些情况下,添加一个就会导致结果。 是否有任何方便的方法来调整公式,以获得更好的向上舍入?

Excel VBA函数返回一个数组

你可以创build一个Excel的VBA函数返回一个数组,就像LINEST一样,例如? 我将创build一个给定供应商代码,从产品供应商表格返回该供应商的产品清单。