- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 106
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-5-3
               
|
2#
發表於 2013-12-13 14:40
| 只看該作者
回復 1# jasonwu0114
那是因為交易部位的名稱不同所致工作表1的A02110多了一個空白鍵
除了一一寫入的方法,也可一次寫入陣列
你的欄位偏移量應該是5不是8吧?- Sub 債券貼()
- Dim rng As Range, rng1 As Range, TP As Range, TP1 As Range
- Dim D(1) As Object
- Set D(1) = CreateObject("scripting.dictionary")
- Sheets("工作表1").Select
- With Range("a1:a50")
- Set TP = .Find(what:="交易部位", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)
- End With
- Set rng = TP.Offset(2)
- Do While rng <> ""
- With rng
- D(1)(Trim(rng)) = Array(Val(.Offset(, 8)), Val(.Offset(, 9)), Val(.Offset(, 10)), Val(.Offset(, 11)), Val(.Offset(, 12)))
- End With
- Set rng = rng.Offset(1)
- Loop
- Sheets("債券-已交割部位(台幣)").Select
- With Range("a1:a50")
- Set TP1 = .Find(what:="交易部位", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)
- End With
- Set rng1 = TP1.Offset(1)
- Do While rng1 <> ""
- With rng1
- If IsArray(D(1)(Trim(rng1))) Then
- '.Offset(, 5).Resize(, 5) = D(1)(Trim(rng1))'一次寫入陣列
- '以下為逐一寫入
- .Offset(, 5) = D(1)(Trim(rng1))(0)
- .Offset(, 6) = D(1)(Trim(rng1))(1)
- .Offset(, 7) = D(1)(Trim(rng1))(2)
- .Offset(, 8) = D(1)(Trim(rng1))(3)
- .Offset(, 9) = D(1)(Trim(rng1))(4)
- End If
- End With
- Set rng1 = rng1.Offset(1)
- Loop
- End Sub
複製代碼 |
|