標題:
[發問]
在每列第1欄輸入筆數, 依筆數覆製每列訊息後另存成一個新檔
[打印本頁]
作者:
melvinhsu1105
時間:
2011-5-10 21:43
標題:
在每列第1欄輸入筆數, 依筆數覆製每列訊息後另存成一個新檔
本帖最後由 melvinhsu1105 於 2011-5-12 00:20 編輯
再請問, 各位先進及老師,
小弟, 希望在一資料表內的第1欄, 輸入需覆製的筆數, 而後在執行巨集, 依每列第1欄的筆數,覆製後, 再另存(開)一新檔, 不知應如何製作.
[attach]6111[/attach]
[attach]6121[/attach]
[attach]6122[/attach]
[attach]6132[/attach]
作者:
GBKEE
時間:
2011-5-10 21:53
回復
1#
melvinhsu1105
同樣的問題
覆製後???
http://forum.twbts.com/redirect.php?goto=findpost&pid=19728&ptid=3503
3
作者:
melvinhsu1105
時間:
2011-5-10 23:58
先進,不是同樣問題,𣎴好意思。
另,所覆製之格式,除在原資料表第一欄外,其餘皆依選取的列資料依筆數全數(未鍵入筆數的列資料,不覆製)在新的工作表的第一列,第一欄依序貼上。
如有不清楚之處,再指教
作者:
GBKEE
時間:
2011-5-11 08:51
回復
3#
melvinhsu1105
是這樣媽?
Option Explicit
Sub Ex()
Dim AR(), C%, i%, ii%
ReDim AR(0) 'ReDim:重新配置動態陣列變數的儲存空間 ->0到0
With ActiveSheet
C = .[B1].End(xlToRight).Column '取的:B1往右連續資料表頭最後的欄位數
AR(0) = .Range("B1", .Cells(1, C)).Value '指定:陣列的元素值
For i = 2 To .Cells(2, "A").End(xlDown).Row '迴圈:從A2開始往下直到沒資料的列位
For ii = 1 To .Cells(i, "A").Value '迴圈:從1開始到.Cells(i, "A").Value =複製的筆數
ReDim Preserve AR(UBound(AR) + 1) 'ReDim:重新配置動態陣列變數的儲存空間->原有維數+1
'Preserve:當改變原有陣列最後一維的大小時,仍然保有原來的資料的關鍵字。
'UBound:表示指定陣列某維最大可使用的陣列索引
AR(UBound(AR)) = .Range(.Cells(i, "B"), .Cells(i, C)).Value '指定:陣列最大的元素值
Next
Next
End With
With Workbooks.Add.Sheets(1).Range("A1") 'With: 在一個單一物件或一個使用者自訂型態上執行一系列的陳述式。
For i = 0 To UBound(AR) '迴圈:從AR的第1個元素(0)到AR的最大元素UBound(AR)
.Offset(i).Resize(, C - 1) = AR(i) '.Offset(i):在此i表往下的列數
'.Resize(, C - 1): 擴充的範圍為(1列,C - 1欄)=陣列元素的值
Next
End With
End Sub
複製代碼
作者:
melvinhsu1105
時間:
2011-5-11 09:57
回復
4#
GBKEE
板主, 感謝您一直耐心回覆, 而 剛利用你回覆的碼套用, 似乎無法執行. 但也沒有程式偵錯的訊息.
作者:
GBKEE
時間:
2011-5-11 10:18
剛利用你回覆的碼套用,
似乎無法執行
. 但也沒有程式偵錯的 ...
melvinhsu1105 發表於 2011/5/11 09:57
我也不知道? 沒看到你的檔案 不知你如何套用 [
同樣的問題
]
PS: 2樓 同樣的問題 ->你沒將你確切想法說詳細 用範例來表達.
作者:
melvinhsu1105
時間:
2011-5-11 13:47
再補上想完成的範列圖, 再請板主幫忙. 不好意思了.
作者:
Hsieh
時間:
2011-5-11 14:17
回復
7#
melvinhsu1105
Sub ex()
Dim Ar()
With ActiveSheet
a = .Range("A1").CurrentRegion
ReDim Preserve Ar(s)
Ar(s) = Application.Index(a, 1)
s = s + 1
For i = 2 To UBound(a, 1)
For j = 1 To a(i, 1)
ReDim Preserve Ar(s)
Ar(s) = Application.Index(a, i)
s = s + 1
Next
Next
End With
With Workbooks.Add
.Sheets(1).[A1].Resize(s, UBound(a, 2)) = Application.Transpose(Application.Transpose(Ar))
.Sheets(1).Columns("A").Delete
'.SaveAs "D:\Test.xls" '新檔存檔目錄自行修改
End With
End Sub
複製代碼
作者:
melvinhsu1105
時間:
2011-5-12 00:22
回復
8#
Hsieh
老師, 謝謝你的回應.
而小弟我在直接覆製上後, 執行, 未有任何作用, 原因為何, ? 已在補上照.
多有勞煩.
作者:
luhpro
時間:
2011-5-12 00:48
本帖最後由 luhpro 於 2011-5-12 00:49 編輯
回復
9#
melvinhsu1105
可能是你程式碼放錯地方了.
Sub ex() 與最底下的 End Sub 都不要 Copy,
只 Copy 中間的程式碼就好,
然後點兩下 CommandButton1 它會自動建立 :
Private Sub CommandButton1_Click()
End Sub
把 Copy 的程式碼放在上述兩行 Sub 敘述的中間即可.
作者:
Hsieh
時間:
2011-5-12 07:22
回復
9#
melvinhsu1105
上傳你作的檔案看看
作者:
melvinhsu1105
時間:
2011-5-12 11:15
本帖最後由 GBKEE 於 2011-5-12 11:44 編輯
回復
10#
luhpro
的確.是醬子的. 我昨天沒用好. 感謝. 先進.
回復
11#
Hsieh
老師, 抱歉我昨天沒用好, 故未能成功. 再次謝謝您的協助.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)