Tag: vba

自定义函数不能在Excel VBA中使用

由于某些原因,自定义函数似乎不在Excel中运行。 我在下面创build了这个简单的函数,但它总是返回零作为一个值,无论它是作为工作表函数使用还是从过程调用。 任何人都知道我做错了什么,或者如果有什么地方我失踪的设置? Public Function Testthisout(number As Double) As Double result = number * number End Function Public Sub TESTFUNCTION() Dim number As Double Dim result As Double Application.Volatile (True) number = 4 result = Testthisout(number) MsgBox result End Sub

是否可以在VBA中编写一个名称中包含句点的UDF?

Excel 2010附带了一些名称中包含句点的function。 例如STDEV.S和PERCENTILE.EXC 是否可以使用VBA为名称指定我自己的函数名称,如PERCENTILE.CUSTOM ? 例如,我想用公式=NAME.SUFFIX()来引用下面的函数。 Option Explicit Function NAMEdotSUFFIX() As Variant NAMEdotSUFFIX = 42 End Function

在VBA excel中的范围

有人可以帮助我了解下面的代码。 Set items = Range("A2:A" & Range("A1").End(xlDown).Row) 我不明白的是如何设置范围? A2:A和A1覆盖哪个区域? 我知道如果我有一个像下面这个代码工作的表 但是,如果我更改表格位置以下如何更改示例代码?

在VBA Excel 2010中select活动行和第一行

如何select与当前活动单元格和第一行关联的行? 我有: Rows(ActiveCell.Row).Select Range("1:1").Select 但是,当第二个“select”运行,它将删除第一个select,所以我只是第一行结束。 我怎样才能同时select两个? 谢谢!

Excel:将数组传递给用户定义的函数(VBA)

编辑:解决scheme – 请参阅原始问题下面 在将{1,2,3}这样的数组传递给UDF时,我发现了两件事情要考虑: 语言环境 – 请参阅答案1.德语系统(通常)上的列表分隔符是“;” 因此我需要使用{1 ; 2 ; 3}。 传递的数组在函数中显示为2维数组。 因此,第n个元素必须以myArray(n, 1 )为目标。 无视这给了我#VALUE! 错误。 因此,一个简短的“select案例”-UDF可能是这样的: Function SelCase(a1, a2, a3) For i = 1 To UBound(a2) If a2(i, 1) = a1 Then SelCase = a3(i, 1) Next End Function 称为(德语区域!): =SelCase(A1;{1;2;3};{"a";"b";"c"}) 在结果中给出“a”,“b”或“c”取决于A1保持1,2或3。 在这里find一个更详细的“select案例”-UDF。 原来的问题: 我想传递一个像{1,2,3,4}这样的数组到Excel 2002中的用户定义的函数 – 而不是设法find这样做的方法。 我使用的是德语版本,所以“,”是我的小数点分隔符,也分隔水平(1D-)数组中的值– 编辑:这是错误的 ,“wheras”;“ 从表中分离公式中函数中的参数,并在垂直(1D-)数组中分离值 […]

如果按下命令button时单击checkbox,则删除单元格的内容

我正在构build订单configuration电子表格。 各种产品类别有不兼容的选项,所以我在列A中创build了一些checkbox。我想做一个控制button,从列H:L的每一行中select一个checkbox并删除它,然后取消selectcheckbox。 我真的不知道如何编写这样的代码。 你的帮助真的很感激。 Sub EliminateCheckBoxes() Dim CB As CheckBox, n As Long, x As Long n = ActiveSheet.CheckBoxes.Count For x = n To 1 Step -1 Set CB = ActiveSheet.CheckBoxes(x) If CB.Name <> "Check Box 1" Then Next x End Sub

任何理由避免Application.Worksheetfunction?

我正在写一个macros来遍历一些logging,并想要一个for循环,以避免任何无限循环的机会,如: For i = 0 to COUNT **do stuff with START_CELL.Offset(i,0) Next 我不记得如何从VBA做一些事情,所以search发送给我在这里: 使用VBA来计算列中的非空白单元格 。 有一个build议是 n = Worksheets("Sheet1").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count 这似乎过于复杂,所以我做了更多的挖掘,并决定我要使用: COUNT = Application.WorksheetFunction.Count(COUNT_RANGE) 该页面上的另一个例子使用Application.WorksheetFunction.CountA() ,但现在我仍然担心(偏执),我应该避免它的原因。 有没有? 谢谢大家。

转换到/来自语言环境的行为不一致

我在excel中注意到奇怪和厌恶的行为,可能是由于比利时的数字符号不同。 当我在即时窗口中input时,我得到反直觉的结果: ?val("0,5") 0 ?val("0.5") 0,5 所以我的解决方法是像这样使用它(通常string“0,5”被replace为textbox.value ) val(replace("0,5",",",".")) 另外当使用numberformat()函数,这让我陷入这种麻烦。 起初,我有一个这样的文本框中的KeyPresses: Select Case KeyAscii Case vbKey0 To vbKey9, vbKeyBack, vbKeyClear, vbKeyDelete, vbKeyLeft, _ vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab, vbDecimal Case Else KeyAscii = 0 Beep End Select 但vbDecimal只允许我input'。' 作为小数点,然后在运行时它将被解释为1000倍的值。 对此有何看法?

将数据复制到Excel中另一个工作表上的特定单元格区域

嗨我有这个代码,它适用于复制和追加数据到一个单独的工作表,但我希望它粘贴到目标工作表中的特定单元格范围,我该如何去弥补它? Sub SummurizeSheets() Dim ws As Worksheet Application.ScreenUpdating = False Sheets("Summary").Activate For Each ws In Worksheets If ws.Name <> "Summary" Then ws.Range("D2:D6, D8:D15").Copy Worksheets("Summary").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues) End If Next ws End Sub

使用参数从PowerShell调用Excelmacros

使用Powershell可以很容易地从脚本调用Excelmacros,例如使用如下脚本: $excel = new-object -comobject excel.application $excelFiles = Get-ChildItem -Path C:\fso -Include *.xls, *.xlsm -Recurse Foreach($file in $excelFiles) { $workbook = $excel.workbooks.open($file.fullname) $worksheet = $workbook.worksheets.item(1) $excel.Run("CreateChart") $workbook.save() $workbook.close() } $excel.quit() 但是,我没有设法用一些论据来调用macros。 这是可能的,或者是编写一个configuration文件,macros调用时将被读取的最佳方式?