標題:
[發問]
用二維陣列,轉不出來資料
[打印本頁]
作者:
jesscc
時間:
2011-6-5 23:06
標題:
用二維陣列,轉不出來資料
本帖最後由 jesscc 於 2011-6-5 23:08 編輯
上次承蒙前輩教了我用二維陣列轉多欄位的資料,最近試作了一個檔案,可是資料轉不出來,不知哪裡出了問題,能請各位前輩幫忙看一下嗎?
我的工作是這樣的:
1.在 Test.xlsm 中的 Sheets("AA") 按下按鈕"POR",會自動轉存成一份 "日期"+"已出貨.xlsx" 檔,格式跟原來的 Test.xlsm 是一模一樣的,但沒有任何資料。
2.接著程式會把 Test.xlsm 中 AA、BB、CC 三個工作頁的 B 欄位中只要有 "v" 及 "*" 的那一列資料分別存入空白的 "日期"+"已出貨.xlsx" 檔
[attach]6504[/attach]
作者:
Hsieh
時間:
2011-6-6 14:20
回復
1#
jesscc
Sub ContainerDetails()
Set swb = ThisWorkbook
mypath = "C:\Documents and Settings\Administrator\桌面\"
myfile = Format(Date, "emmdd") & "已出貨.xlsx"
swb.Sheets(Array("AA", "BB", "CC")).Copy
Set wb = ActiveWorkbook
wb.Sheets("AA").Shapes.Range(Array("CommandButton6")).Delete
wb.Sheets("AA").Range("B7:J500").ClearContents
wb.Sheets("BB").Range("B7:J500").ClearContents
wb.Sheets("CC").Range("B7:J500").ClearContents
For Each Sh In swb.Sheets(Array("AA", "BB", "CC"))
Dim Ay()
With Sh
For i = 7 To .Cells(.Rows.Count, 2).End(xlUp).Row
If .Range("B" & i) = "v" Or .Range("B" & i) = "*" Then
ReDim Preserve Ay(s)
Ay(s) = .Range("B" & i).Resize(, 10).Value
s = s + 1
End If
Next
wb.Sheets(.Name).[B7].Resize(s, 10) = Application.Transpose(Application.Transpose(Ay))
Erase Ay
s = 0
End With
Next
wb.SaveAs mypath & myfile
End Sub
複製代碼
作者:
jesscc
時間:
2011-6-6 20:48
好像不需要用到二維陣列,是我想太多了。
不過,Hsieh大大,剛剛試了一下發現,如果在B欄位都沒有標記 "v" 或 "*" 的情形下,沒辦法另存出正確的活頁簿檔名(我的想法是,至少它應該會存成一個空白無資料的新活頁簿),而且會在這一行出現偵錯
wb.Sheets(.Name).[B7].Resize(s, 10) = Application.Transpose(Application.Transpose(Ay))
作者:
Hsieh
時間:
2011-6-6 22:06
回復
3#
jesscc
if s>0 then wb.Sheets(.Name).[B7].Resize(s, 10) = Application.Transpose(Application.Transpose(Ay))
作者:
jesscc
時間:
2011-6-6 22:30
原來只要檢查陣列中有無存入資料即可。
感謝 Hsieh 大再一次的幫忙,祝福你端午節愉快!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)