[英]Edit Value In Excel Range
我有一個Excel工作表,其值在我想在vb.net上執行一些計算的范圍內。 我使用COM將范圍傳遞給vb.net。 當我嘗試編輯范圍的值時,沒有任何反應。
我的問題似乎與這些問題非常相似,但是我無法弄清楚我缺少了什么步驟。
如何在VB.net中編輯單元格值-使用.Interop.Excel VB.net Office解決方案-在工作表中訪問命名范圍中的值
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
因此,將價值修改為新的東西似乎是遙不可及的!
編輯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代替,而結果沒有任何變化。
看這個問題/答案:
似乎UDF只能更改調用單元。
因此,我認為這種方法是不可能的。
解決方法是重寫代碼以使用數組,將范圍分配給數組,編輯數組並將其傳遞給新函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.