这不是一个问题,而是发布此评论,因为我不记得以前看过这种方法.我回答了对之前回答的评论,并尝试了以前我没有尝过的事情:结果很有趣所以我虽然把它作为一个独立的问题发布,但我自己的回答.
在SO(以及许多其他论坛)上出现了许多关于"我的用户定义函数有什么问题"的问题,答案是"你无法从UDF更新工作表" - 这里的限制:
有一些方法可以解决这个问题,例如,请参阅此处(https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-cell)但我不要以为我的确切方法就在其中.
另请参阅:从UDF更改单元格注释
我是一个VBA新手,我正在尝试编写一个我可以从Excel单元格调用的函数,它可以打开一个已关闭的工作簿,查找单元格值并返回它.
到目前为止,我知道如何编写这样的宏:
Sub OpenWorkbook()
Dim path As String
path = "C:\Users\UserName\Desktop\TestSample.xlsx"
Dim currentWb As Workbook
Set currentWb = ThisWorkbook
currentWb.Sheets("Sheet1").Range("A1") = OpenWorkbookToPullData(path, "B2")
End Sub
Function OpenWorkbookToPullData(path, cell)
Dim openWb As Workbook
Set openWb = Workbooks.Open(path, , True)
Dim openWs As Worksheet
Set openWs = openWb.Sheets("Sheet1")
OpenWorkbookToPullData = openWs.Range(cell)
openWb.Close (False)
End Function
Run Code Online (Sandbox Code Playgroud)
宏OpenWorkbook()运行得很好,但是当我试图直接从Excel单元调用OpenWorkbookToPullData(...)时,它不起作用.该声明:
Set openWb = Workbooks.Open(path, , True)
Run Code Online (Sandbox Code Playgroud)
什么也没有.
有谁知道如何将其转换为可以从Excel单元格调用的工作VBA函数?
单元格的内容A1是=test(2)其中test的功能是:
Function test(ByRef x As Double) As Double
Range("A2") = x
test = x * x
End Function
Run Code Online (Sandbox Code Playgroud)
你能解释一下为什么这会#VALUE!在细胞中产生A1而在细胞中A2什 我希望A2包含2和A1包含4.没有该行,Range("A2") = x该函数按预期工作(平方单元格的值).
令人困惑的是,如果你test用子程序包装calltest然后它可以工作:
Sub calltest()
t = test(2)
Range("A1") = t
End Sub
Function test(ByRef x As Double) As Double
Range("A2") = x
test = x * x
End Function
Run Code Online (Sandbox Code Playgroud)
但事实并非如此
Function …Run Code Online (Sandbox Code Playgroud) 我想通过VBA设置单元格的值.我用谷歌搜索,并看到一些决议:
Sheets("SheetName").Range("A1").value = someValue
Sheets("SheetName").Cells(1,1).value = someValue
Run Code Online (Sandbox Code Playgroud)
使用这种代码,我只能从单元格A1中读取数据,但我无法为其设置新值.
更新
设置单元格A1值的代码Function如下所示.
Function abb()
Sheets("SheetName").Range("A1").value = 122333
abb = 'any thing'
End Function
Run Code Online (Sandbox Code Playgroud)
在单元格B2中,我设置=abb()并按Enter键.我得到了#VALUE但在A1没有任何事情发生.
将此代码放在宏中,它可以工作.
我的问题是,如何使A1在函数内具有值?
我在VBA中有一个UDF(用户定义函数),需要在Excel上修改单元格范围.
由于UDF无法做到这一点,我尝试使用事件调用.
当我提出自定义事件并尝试写入单元格时,我得到#Value错误.另一方面,Application事件
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)可以写入单元格.
我的问题是如何通过调用UDF更新其他单元格?
我在Excel中有一个用户定义的函数.它被称为电子表格单元格中的公式函数,并且工作正常.
我希望该函数能够根据返回的值更改单元格的颜色.基本上,改变细胞的颜色是该功能的副作用.
我试过了
Application.ThisCell.Interior.ColorIndex = 2
Run Code Online (Sandbox Code Playgroud)
但它失败了.
我想创建一个自定义函数,它接受选定的参数并将其内容拆分到不同的单元格上。
例子 :
A1=ABCDE
变成
B1=A, C1=B, D1=C, E1=D, F1=E
这就是我尝试过的:
Function SplitWord(Word)
NbCar = Len(Word) // get the number of cardinals of the text
SplitWord = Left(Word, 1) // put the first letter in the cell that called the function
t = NbCar - 1
For i = 1 To t
ActiveCell.Offset(0, i) = Right(Left(Word, i), 1)
Next
End Function
Run Code Online (Sandbox Code Playgroud)