簡體   English   中英

在Excel范圍內編輯值

[英]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代替,而結果沒有任何變化。

看這個問題/答案:

Excel VBA:遍歷范圍參數並更改單元格值

似乎UDF只能更改調用單元。

因此,我認為這種方法是不可能的。

解決方法是重寫代碼以使用數組,將范圍分配給數組,編輯數組並將其傳遞給新函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM