gpt4 book ai didi

vb.net - 在 Excel 范围内编辑值

转载 作者:行者123 更新时间:2023-12-04 21:03:21 24 4
gpt4 key购买 nike

我有一个 Excel 表,其值在我想在 vb.net 中执行一些计算的范围内。我使用 COM 将该范围传递给 vb.net。当我尝试编辑范围的值时,没有任何 react 。

我的问题似乎与这些问题非常相似,但我无法弄清楚我错过了哪一步。

How to edit cell value in VB.net - Using .Interop.Excel
VB.net Office Solution - Accessing value in named Range in a Worksheet

VBA代码:

Function MyTestRange (Byref myrng as range)

Set classLib = New VBProject.CClass
MyTestRange = classLib.MyTestRange(myrng)

End Function

VB.NET 代码
Imports Microsoft.Office.Interop.Excel

Public Class CClass
Function MyTestRange(ByRef myrng As Range) As Double
Dim newrng As Range
Dim b As Integer = myrng.Rows.Count
Dim i As Integer

newrng = myrng
For i = 1 To b
newrng.Value2(i, 1) = myrng.Value2(i, 1) + 1
Next i
MyTestRange = newrng.Value2(1, 1)
End Function
End class

虽然此代码不会产生错误,但它不会更改 newrng 中的值。

编辑:

我根据提供的链接尝试了许多迭代,但总是得到相同的错误:

mscorlib.dll 中出现“System.Runtime.InteropServices.COMException”类型的异常,但未在用户代码中处理

附加信息:HRESULT 异常:0x800A03EC

这是生成错误的最简单方法:
    Dim c As Object

c = myrng.Value
myrng.Value = c

因此,将值(value)观修改为新的东西似乎遥不可及!

编辑2:

在与用户 Mat's Mug 聊天后,我尝试在一个范围内编辑一个值,纯粹是在 VBA 中。

这个子完美地工作:
Sub rangesub()
Dim example As Range
Set example = Range("A1:A4")
example.Value = Application.Transpose(Array(1, 2, 3, 4))
End Sub

Excel 函数似乎也能够处理传递范围:
Function SimpleCopyRange(myrng)
SimpleCopyRange = myrng
End Function

此代码的一个非常简单的组合可以工作:
Function EditRange(myrng)
Dim example As Range
Set example = Range("A1:A4")
EditRange = example
End Function

但是,如果我尝试编辑范围,则会出现未指定的错误:
Function EditRange(myrng)
Dim example As Range
Set example = Range("A1:A4")
example.Value = Application.Transpose(Array(1, 2, 3, 4))
EditRange = example
End Function

application.transpose 部分明显增加了一层复杂度,可以用example.Value = 8代替,结果没有任何变化。

最佳答案

看这个问题/答案:

Excel VBA: Iterating over range parameter and change cell values

似乎 UDF 只能更改调用单元格。

因此我认为这种方法是不可能的。

解决方法是重写代码以使用数组,将范围分配给数组,编辑数组并将其传递给新函数。

关于vb.net - 在 Excel 范围内编辑值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212341/

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