Tag: vba

如何以可读的方式重写Excel公式

我有这样的公式的Excel文件: =IF(OR(ISERROR(G16),ISERROR(G17)),X16,IF(OR(G16="xxx",G16="yyy",G16="zzz"),Y16,IF(G16="333","N\A",IF(G17="333",Z16,IF(D17="",IF((HEX2DEC(W$10)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)<0,0,(HEX2DEC(W$10)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)), IF((HEX2DEC(W17)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)<0,0,(HEX2DEC(W17)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE))))))) 我想简化它们,所以它会被写入一个更可读的方式。 我可以用缩进的方式编辑/写入Excel公式吗? 我可以做什么样的简化? 我应该使用VBA脚本而不是Excel的公式吗?

在Excel VBA中,如何保存/恢复用户定义的filter?

如何保存并使用VBA重新应用当前的filter? 在Excel 2007 VBA中,我试图 保存用户在当前工作表上的任何filter 清除filter “做东西” 重新应用已保存的filter

如何根据单元格值删除行

我有一个工作表,我需要删除基于单元格值的行.. 要检查的单元格在A列中 如果单元格包含“ – ”..删除行 我找不到办法做到这一点..我打开工作簿,将所有内容复制到另一个工作簿,然后删除整个行和列,但有特定的行必须根据单元格值被删除。 需要帮助在这里。 UPDATE 我有数据样本

#名称? Excel中的VBA函数错误

我正在做我的第一个VBA程序,并试图运行以下function。 该函数检查第一行的具体命名范围,该行的值不具有大于其前导值但小于1的值。 Public Function findPurchase() Dim CRT As Range Set CRT = Range("CostRateTable") Dim existsBetter As Boolean existsBetter = True Dim r As Integer r = 2 Dim c As Integer c = 4 While existsBetter Dim Found As Boolean FoundBetter = False While Not FoundBetter And c <= CRT.Columns.Count If CRT(r, c) > CRT(r, […]

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

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

如何在单元格中显示当前的用户名?

在我所能find的大多数在线资源中,通常会告诉我如何在VBA中检索这些信息。 有没有直接的方式来获得这个信息在一个单元格? 例如像=ENVIRON('User')那样简单(没有工作)

从VBA中的date减去?

我在使用Excel VBA中的date操作时遇到很大问题。 我有一个窗体,有一个文本框,用户将inputdate。 问题是他可能以不同的格式input(例如,8月1日的1.08.2011或同一天的8/1/11)。 现在我想要做的是从他进入文本框的date中减去一些日子。 到目前为止,我不得不取得成功,我不知道该怎么做。 我尝试了这样的事情 Format((Format(Me.datalivrare.Value, "dd.mm.yyy") – 4), "dd.mm.yyyy") 哪里datalivrare是用户inputdate的文本框,4是我想从该date减去的天数…我希望格式总是dd.mm.yyyy无论他们在该文本框中input。

如何在Workbench中格式化VBA中的Excel单元格值?

我需要在数字列表中保持前导零。 数字是这样添加的(在一个循环中,但是这只是一个使用(1,1)的例子: Set cel = Sheet.worksh.Cells(1, 1) cel.ColumnWidth = 10 cel.Value = e.Name cel.NumberFormat = "0000" e.Name是数字,例如“0720”。 这显示在工作表上很好,但如果我做这样的事情: Msgbox Sheet.worksh.Cells(1, 1).Value 我得到“720”。 我需要它是“0720”,我知道我可以检查使用Len()并添加零的方式,但我想知道是否有一个更直接的方法与范围对象,将为我做这个。

如何让combobox不接受Excel-VBA中的用户input?

有谁知道什么属性是在combobox,我可以操作,以便不允许用户键入/input任何数据?

Excel范围内的一维数组

我目前正在使用以下代码填充我的证券: Option Base 1 Securities = Array(Worksheets(3).Range("A8:A" & SymbolCount).Value) 这产生了一个二维数组,其中每个地址是(1 … 1,1 … N)。 我想要一个一维数组(1 … N)。 我怎样才能(a)将证券作为一维数组填充,或者(b)有效地将证券剥离到一个一维数组(我被困在每一个循环中)。