如果之前已经问过这个问题,请原谅,但我是 Excel VBA 和 stackoverflow 的新手。
我正在尝试编写一个自定义函数来将两个单元格合并在一起,同时保持两个单元格中的原始格式。 IE。 Cell1 包含粗体的“Hello”,Cell2 包含正常的“World”,那么我希望 Cell3(包含公式)返回“Hello World”。 显然,我需要使用 .Characters 调用来循环原始字符串并将其应用于最终字符串。 所以我不能只返回一个字符串(因为我丢失了格式)我必须返回一个 .Range 对象。 但在我到达.字符位之前,我就陷入了痛苦的世界。
我的第一次尝试是这样的:
Public Function Merge_Formats(inCellOne As Range, inCellTwo As Range) As Range
On Error GoTo ErrorTrap
Merge_Formats.Text = inCellOne.Text & inCellTwo.Text
Exit Function
ErrorTrap:
MsgBox Err.Description
End Function
返回: 未设置对象变量或With块变量
然后我尝试访问包含我的函数的单元格:
Public Function Merge_Formats(inCellOne As Range, inCellTwo As Range) As Range
Dim tempCell As Range
On Error GoTo ErrorTrap
Set tempCell = Application.Caller
tempCell.Text = inCellOne.Text & inCellTwo.Text
Exit Function
ErrorTrap:
MsgBox Err.Description
End Function
这会抛出这个: 需要对象
我还尝试(作为一种令人讨厌的解决方法)传递第三个单元格以用作中转站:
Public Function Merge_Formats(inCellOne As Range, inCellTwo As Range, tempCell As Range) As Range
On Error GoTo ErrorTrap
tempCell.Text = inCellOne.Text & inCellTwo.Text
Exit Function
ErrorTrap:
MsgBox Err.Description
End Function
这还会返回“需要对象”错误消息。
我知道我可以引用另一个单元格:
Function SimpleTest() As Range
Dim tempCell As Range
Set tempCell = Range("A1")
Set SimpleTest = tempCell
End Function
显然我已经超出了我的能力范围。 是否可以编写一个返回 .Range 对象的自定义函数,该对象不仅引用另一个对象,而且允许操作内容。 如果可以的话,是怎么做到的?
以下剪辑来自:Excel 中自定义函数的限制说明
]1