【发布时间】:2021-05-01 00:37:12
【问题描述】:
我已将运行 html 格式字符串的代码复制到 I.E. Web 浏览器将其转换为富文本,然后将其复制回运行代码的单元格中。我已经包含了下面的代码。
但是,我希望能够将此 sub 作为其他用户的功能运行,这样他们就不必访问开发人员选项卡。我一直在纠结如何将这个 sub 转换成一个函数,所以如果有人能帮助我,那就太好了。
Sub Sample()
Dim Ie As Object
Set Ie = CreateObject("InternetExplorer.Application")
With Ie
.Visible = False
.Navigate "about:blank"
.document.body.InnerHTML = Sheets("Sheet1").Range("A1").Value
.ExecWB 17, 0: .ExecWB 12, 2
ActiveSheet.Paste Destination:=Sheets("Sheet1").Range("A1")
.Quit
End With
End Sub
感谢所有回复。
例如,在单元格 A1 中,我有“ 这是 自定义文本”。我希望能够在单元格 A2 '=sample(A1)' 中写入,并将 A1 中的文本转换为格式化文本,即。 '这是自定义文本'由我包含的代码。单元格 A2 将包含转换后的文本。
【问题讨论】:
-
“将其作为格式化的富文本粘贴回该单元格”......我认为这作为 UDF 是不可行的。
-
@NicholasHunter 我相信
Application.Caller无关紧要,因为 UDF 无法修改调用它的单元格,但只能将值(无格式)返回到所述单元格。 -
@NicholasHunter no
Application.Caller.Value = Sheets("Sheet1").Range("A1").Value将不起作用,因为 Scott 在对您已删除答案的评论中已经指出。该函数应该返回值,即Sample = Sheets("Sheet1").Range("A1").Value,但这也无关紧要,因为UDF不能Paste。 -
@Jamesk112 不,UDF 无法复制/粘贴,也无法像您尝试的那样返回格式化文本。为此,您需要
Sub。 -
UDF 不能改变任何单元格的值或格式,它只能返回一个值。输出单元格的格式是单独设置的。这需要保留一个 sub,但就像我说的那样,您可以为 sub 附加一个快捷方式,因此用户只需执行 ctrl-h 之类的操作即可从工作表中运行它。