gpt4 book ai didi

vb.net - 无法将公式分配给 Excel 中的单元格区域

转载 作者:行者123 更新时间:2023-12-02 07:58:27 25 4
gpt4 key购买 nike

项目中其他人的代码,我正在尝试修复。

listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j)

其中FormulaMatrix(i, j) 始终是String 值。无论我尝试使用什么随机/测试值,都会成功分配,除非它是一个公式,例如。

=IF(LENGTH([@Units])>0;[@SalesAmount]-[@DiscountAmount]0)

如果我删除公式开头的 = 符号,它会被正确分配,但它就没用了,因为它不是公式。

@Units@SalesAmount@DiscountAmount 是列的引用/名称。

因此,在分配公式时,我收到异常HRESULT:0x800A03EC。我抬头看in this answer为了获得解释并遵循那里的一些说明。我确定我的问题如下:问题是由于在单元格中输入的函数而发生的,并且它正在尝试更新另一个单元格。

还查看了this post.我尝试了完全不同的方法(比如只输入不带 = 的公式,然后再次运行并输入等号),但问题相同。

我不知道如何解决这个问题。

最佳答案

.formulalocal有效!(而 .formula.value.formular1c1 不。)

我刚刚开始使用 VB.NET,并遇到了一个非常类似的问题。这是我最初的简化数据(Sheet1 中的 Table1):

before

然后应用下面的代码后我得到了这个:

after

表单的完整代码:

Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
'~~> Define your Excel Objects
Dim xlApp As New Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim strAddress As String = "C:\Temp\SampleNew.xlsx"
Dim list1 As Object


Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
'~~> Add a New Workbook (IGNORING THE TWO DOT RULE)
xlWorkBook = xlApp.Workbooks.Open(strAddress)

'~~> Display Excel
xlApp.Visible = True

'~~> Set the relevant sheet that we want to work with
xlWorkSheet = xlWorkBook.Sheets("Sheet1")

With xlWorkSheet

'~~> Change the range into a tabular format
list1 = .ListObjects("Table1")

End With

list1.range(2, 4).formulalocal = "=IF(LEN([@Month])>5;[@Income]-[@MoneySpent];0)"

'~~> Save the file
xlApp.DisplayAlerts = False
xlWorkBook.SaveAs(Filename:=strAddress, FileFormat:=51)
xlApp.DisplayAlerts = True

'~~> Close the File
xlWorkBook.Close()

'~~> Quit the Excel Application
xlApp.Quit()

'~~> Clean Up
releaseObject(xlApp)
releaseObject(xlWorkBook)
End Sub


'~~> Release the objects
Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
End Class

@Siddharth Rout为构建此代码提供了很多帮助,因为他拥有这个很棒的网站:http://www.siddharthrout.com/

关于vb.net - 无法将公式分配给 Excel 中的单元格区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29896481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com