vb.net - 设置范围值时不评估 Excel 命令

标签 vb.net excel

我正在尝试使用多维字符串数组来填充 Excel 工作表,并且在插入公式时遇到了麻烦。下面的小案例说明了这个问题:

Dim tA(3, 3) As String
tA(1, 1) = "=HYPERLINK(""www.stackoverflow.com"")"
tA(1, 2) = "=HYPERLINK(""www.stackexchange.com"")"
tA(2, 1) = "=2+5"
tA(2, 2) = "Normal Text"
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(4, 4)).Value = tA

评估此代码时,Excel 工作表不会自动转换超链接或评估公式。也就是说,当我查看 Excel 时,(2,1) 处的单元格将根据需要显示“=2+5”而不是“7”。有没有办法强制 excel 评估所有单元格以查看是否存在命令?

我应该注意,如果我将命令插入到单个单元格中,那么它会被正确评估,但这不是一个选择,因为我有数千个单元格并且一次填充一个单元格会慢几个数量级。

最佳答案

您会得到它,因为公式作为值被传输,将以下行添加到您的代码中,您应该很高兴:
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(4, 4)).formular1c1= worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(4, 4)).formular1c1
完整的代码是

Dim tA(3, 3) As String
tA(1, 1) = "=HYPERLINK(""www.stackoverflow.com"")"
tA(1, 2) = "=HYPERLINK(""www.stackexchange.com"")"
tA(2, 1) = "=2+5"
tA(2, 2) = "Normal Text"
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(4, 4)).Value = tA
worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(4, 4)).formular1c1= worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(4, 4)).formular1c1

关于vb.net - 设置范围值时不评估 Excel 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199387/

相关文章:

vb.net - 从后台线程打开模式窗体以阻止UI线程,同时也不会阻止后台线程

vb.net - 在一个处理程序中处理所有文本框事件

python - 如何将使用 Xlsxwriter 创建的公式中的值读入 Pandas 数据帧?

vba - SendKeys 从 Internet Explorer 打开 Excel 文件

excel - 更改散点图vba excel中特定点的颜色

excel - 如何使用powershell将excel 2007保存为html格式?

mysql - 如何使 OleDB 查询读取冒号 :

vb.net - 在应用程序级别处理异常

vba - 事件宏引发错误 "Object Required"

sql-server - 我应该用什么来代替 ping?