想請問一下
底下附件Book1.xls裡面有三頁
HAD 表頭
ROW 資料
DATA 要印出來的畫面
因為資料查出來後不確定會產生幾組HAD和ROW
HAD一組搭配數條ROW然後貼到DATA去,列印出來
HAD和ROW與其他組中間用空白一行相隔
請問我要如何先把第一組HAD和ROW貼到DATA後印出
再把DATA資料清掉換下一組列印一直到沒資料為止?
小弟沒學過VB只會簡單的錄製巨集,可以告訴小弟該如何做嗎?感謝
想請問一下
底下附件Book1.xls裡面有三頁
HAD 表頭
ROW 資料
DATA 要印出來的畫面
因為資料查出來後不確定會產生幾組HAD和ROW
HAD一組搭配數條ROW然後貼到DATA去,列印出來
HAD和ROW與其他組中間用空白一行相隔
請問我要如何先把第一組HAD和ROW貼到DATA後印出
再把DATA資料清掉換下一組列印一直到沒資料為止?
小弟沒學過VB只會簡單的錄製巨集,可以告訴小弟該如何做嗎?感謝
這個用錄的一定錄不出來...因為有不確定的列數..
應該要寫一段VBA Code吧....
寫法應該是以HAD當master...HAD每列之間不用空白...
一列就去抓ROW裡面的資料...一抓到空白就停...
應該是這樣...@@?
一個巨集就夠,Macro2不需要了。
語法:Sub Macro1() Sheets("DATA").Select Set head_cell = [B3] 'HAD要貼的位置 Set rows_cell = [A7] 'ROW要貼的位置 'heads和rowss分別是HAD和ROW的所有資料 Set heads = Sheets("HAD").Cells.SpecialCells(xlCellTypeConstants) Set rowss = Sheets("ROW").Cells.SpecialCells(xlCellTypeConstants) '判斷共有幾組資料,逐一進行迴圈 For n = 1 To heads.Areas.Count '複製第 n 組HAD,以轉置(橫變直)的方式貼上 heads.Areas(n).Copy head_cell.PasteSpecial Transpose:=True '清除DATA的ROW區域(不含標題) rows_cell.CurrentRegion.Offset(1, 0).Clear '複製第 n 組ROW到DATA的ROW區域 rowss.Areas(n).Copy Destination:=rows_cell 'MsgBox "列印第" & n & "組" ActiveSheet.PrintOut Copies:=1, Collate:=True Next n [A1].Select End Sub
值得注意的是 SpecialCells,
它的妙用就是可以取得符合指定資料類型(此例為常數)的儲存格物件,
而且因符合的儲存格可能是不連續的範圍區域,
可利用 Areas 取得區域個數及每個區域的內容,
如此就省去判斷每一組資料的位置和範圍了。
補充:
要應用這個程式需注意兩個資料來源 (此例為HAD, ROW) 必須相對應,
除了組數要相同,每組之間也都至少要空一行。
有這些限制是因為巨集是為此案例量身打造的,
要適用別種情形也許要稍做修改。
書籤