問題總結
我正在嘗試為我重視并遇到障礙的股票創建一個資料庫。我正在嘗試創建一個強大的資料輸入表,使該程序更容易,我是通過使用 VBA 來實作的。我正在嘗試使用“股票”資料型別函式使用以下行將股票代碼復制到資料庫中:
.Cells(iRow, 3).Value = frm.Range("F5").Value
然而,當它被復制到資料庫時,它會吐回#VALUE!錯誤。
我試過的
我試圖指定RangeValueDataType但這似乎不是我想要的。我還嘗試將 Range 語法更改為.Value2和.ConvertToLinkedDataType,梯形圖將資料庫中的最終輸出從 #VALUE 更改了!到“真”。
附加代碼
這是 sub 開頭的代碼,可以說明正在發生的事情:
Dim frm As Worksheet
Dim database As Worksheet
Dim iRow As Long
Dim iSerial As Long
Set frm = ThisWorkbook.Sheets("input")
Set database = ThisWorkbook.Sheets("database")
If Trim(frm.Range("L1").Value) = "" Then
iRow = database.Range("B" & Application.Rows.Count).End(xlUp).Row 1
If iRow = 2 Then
iSerial = 1
Else
iSerial = database.Cells(iRow - 1, 2).Value 1
End If
Else
iRow = frm.Range("K1").Value
iSerial = frm.Range("L1").Value
End If
我對 VBA 的理解非常初級,所以我確信它很簡單,我只是不了解我正在使用的功能。非常感謝任何幫助,謝謝!
uj5u.com熱心網友回復:
當您將單元格區域設定為 Stocks 資料型別時,它實際上不是 Excel 中存在的傳統資料型別,而是 Excel 將所選區域轉換為新的物件類 LinkedDataType 268435456。
您嘗試使用的方法
Target_Range = Source_Range
不會將目標范圍轉換為新的物件型別。它既不會復制物件后面的擴展資料,也不會復制您輸入的純文本公司名稱或股票代碼。因此,您將沒有位于目標范圍內的正確資料來重新應用ConvertToLinkedDataType
您可以使用的唯一兩種可行方法是如下所示,
frm.Range("F5").copy
Database.Cells(iRow, 3).select
ActiveSheet.Paste
這會將目標范圍轉換為相同的物件型別,或在輸入期間將公司名稱/股票代碼捕獲到變數中,并將純文本粘貼到目標范圍中,然后重新應用ConvertToLinkedDataType。
如果我是你,我會選擇復制和粘貼。
uj5u.com熱心網友回復:
多虧了 Harry Lee 我才明白。我最終不得不按照他的建議使用復制功能,結果如下:
frm.Range("F5").Copy
database.Select
.Cells(iRow, 3).Select
database.Paste
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/315577.html
