相关疑难解决方法(0)

在Excel中使用UDF更新工作表

这不是一个问题,而是发布此评论,因为我不记得以前看过这种方法.我回答了对之前回答的评论,并尝试了以前我没有尝过的事情:结果很有趣所以我虽然把它作为一个独立的问题发布,但我自己的回答.

在SO(以及许多其他论坛)上出现了许多关于"我的用户定义函数有什么问题"的问题,答案是"你无法从UDF更新工作表" - 这里的限制:

Excel中自定义函数的限制说明

有一些方法可以解决这个问题,例如,请参阅此处(https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-cell)但我不要以为我的确切方法就在其中.

另请参阅:从UDF更改单元格注释

excel vba

63
推荐指数
2
解决办法
5254
查看次数

如何从Excel单元格调用VBA函数?

我是一个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函数?

excel vba excel-vba

19
推荐指数
2
解决办法
13万
查看次数

从函数中设置单元格值

单元格的内容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包含2A1包含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)

excel vba excel-vba

14
推荐指数
3
解决办法
3万
查看次数

无法在函数中将VBA数据写入Excel 2007/2010中的单元格

我想通过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在函数内具有值?

excel vba excel-2007 excel-vba excel-2010

6
推荐指数
2
解决办法
3万
查看次数

VBA - 通过用户定义的函数更新其他单元格

我在VBA中有一个UDF(用户定义函数),需要在Excel上修改单元格范围.

由于UDF无法做到这一点,我尝试使用事件调用.

当我提出自定义事件并尝试写入单元格时,我得到#Value错误.另一方面,Application事件 Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)可以写入单元格.

我的问题是如何通过调用UDF更新其他单元格?

excel events vba handlers excel-vba

4
推荐指数
1
解决办法
2万
查看次数

Excel用户定义的功能:更改单元格的颜色

我在Excel中有一个用户定义的函数.它被称为电子表格单元格中的公式函数,并且工作正常.

我希望该函数能够根据返回的值更改单元格的颜色.基本上,改变细胞的颜色是该功能的副作用.

我试过了

Application.ThisCell.Interior.ColorIndex = 2
Run Code Online (Sandbox Code Playgroud)

但它失败了.

excel vba

2
推荐指数
2
解决办法
3万
查看次数

将字符串分割成多个字符的函数

我想创建一个自定义函数,它接受选定的参数并将其内容拆分到不同的单元格上。

例子 :

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)

excel vba

1
推荐指数
1
解决办法
3万
查看次数

标签 统计

excel ×7

vba ×7

excel-vba ×4

events ×1

excel-2007 ×1

excel-2010 ×1

handlers ×1