討論區快速選單
知識庫快速選單
討論區最近新進100則主題 下載Alexa Toolbar讓你上網更有趣
[ 回上頁 ] [ 討論區發言規則 ]
excel vba如何取得欄數及列數
更改我的閱讀文章字型大小
作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/31 下午 10:31:54
各位大大好
歡迎各位加入討論
或不吝給小弟指教
小弟的問題如下
有2ㄍexcel檔案
小弟想把第一個excel檔案中的工作表中a1:c10拷貝到另一個excel檔案中的工作表中a1:c10
並想利用excel vba取得該a1:c10的欄位數或列數
如何可以辦得到ㄋ
各位先進可指導嗎
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/3 下午 08:40:19
>並想利用excel vba取得該a1:c10的欄位數或列數

是指這個嗎?
Range("a1:c10").Columns.Count
Range("a1:c10").Rows.Count
作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/4 上午 07:47:53
對不起
大大
可能小弟沒說清楚
重新描述問題:
有2ㄍexcel檔案
想把第一個excel檔案中的工作表中a1:c10(此範圍為變動的,即範圍非固定)拷貝到另一個excel檔案中的工作表中a1:c10(此範圍為變動的,即範圍非固定)
並想利用excel vba取得該a1:c10(此範圍為變動的,即範圍非固定)的欄位數或列數
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/4 下午 10:53:17
>並想利用excel vba取得該a1:c10(此範圍為變動的,即範圍非固定)的欄位數或列數

是不是好像 Ctrl +方向鍵的功能?
lastrow = Cells(1, 1).End(xlDown).Row

作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/6 上午 11:30:38
首先感謝HKLN.net(hkln)你多次熱心且不厭其煩為小弟解惑
真的非常感謝你
********************
你之前所回覆小弟lastrow = Cells(1, 1).End(xlDown).Row
確實是小弟所需
只不過小弟的範圍資料中並非全部皆有資料
所以使用此法並非完全能合乎小弟的需求
小弟把問題再仔細提出一遍(以免各位大大不能完整了解)
希望把檔案a中的a1:c10中的檔案拷貝到b檔案中a1:c10在拷貝動作的同時兼取得該所拷貝的總欄數及列數
以上a1:c10係為舉例此範圍每次拷貝時皆因所選取a檔案的範圍不同而不同
例:第一次可能拷貝a1:c10,第二次可能拷貝a1:d100,第三次可能又拷貝其他不同儲存格範圍
    即欄列數每次皆可能不定,且所拷貝選取範圍中的儲存格並非全部皆有資料,即有空白的儲 存格存在其中
********************************
各位大大能為小弟解惑

作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/6 下午 04:41:49
>例:第一次可能拷貝a1:c10,第二次可能拷貝a1:d100,第三次可能又拷貝其他不同儲存格範圍

不用謝,可否寫出用來拷貝的程式碼?因為可以有多種方法。

要做拷貝的動作,應該會有一個 Range ,例如 Range("a1:c10") ,
或 .Range(.Cells(1,1), .Cells(10, 3)),那就可以用 Range.Columns.Count 去取得欄數。
作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/7 上午 08:22:26
其實小弟並無寫什麼拷貝公式
腹案是想把某一a檔案資料拷貝到(欄數固定)b檔案處(每次起始儲存格都是同一處)
但想截取計算出列數
利用所擷取的列數來決定那一已預設排版好的表格
***********
這樣說會不會太丟臉
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/7 下午 01:40:37
>其實小弟並無寫什麼拷貝公式

是不是用 Range.Copy ?

>腹案是想把某一a檔案資料拷貝到(欄數固定)b檔案處(每次起始儲存格都是同一處)
>但想截取計算出列數

要看過程式碼才能知道。
作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/8 上午 08:36:43
小弟是採用錄製方式並稍作修改得到以下程式碼
Sub Macro2()
    Windows("檔案1.xls").Activate
    Range("A1:AF21").Copy
    Windows("檔案2.xls").Activate
    Range("A1:AF21")..Paste
End Sub
請大大參考
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/9 上午 12:09:34
另一種拷貝方法:

Dim rng As Range
Set rng = Workbooks("book1").ActiveSheet.Range("A1:AF21")
Debug.Print rng.Rows.Count
' book1 => book2
rng.Copy Workbooks("book2").ActiveSheet.Range("A1")
作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/10 下午 03:40:40
感恩
理解中
抱歉喔
等我ㄧ些時間
作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/19 下午 09:44:02
HKLN.net大大抱歉
過這麼段時間才又上線
你上次教小弟的另外1種的拷貝方式
Debug.Print rng.Rows.Count
這一行程式碼小弟看不太懂,尤其Debug及Print在這裡的意義
可否請大大再進一步解釋幫小弟解惑
另之前的主題
小弟的拷貝動作為
1.打開b檔再開a檔。
2.將a檔的sheet1中某一範圍mark起來,按複製功能鍵。
3.到b檔的sheet1以a1儲存格為基準點(即為mark的左上角),按貼上。
※以上希望由1-3步驟中截取到這個複製動作mark到多少欄多少列
並希望能將該所得數字結果顯示於b檔的sheet2的a1儲存格中
※ ※複製的動作毎次mark的範圍都不同,a檔也非毎次都同1個檔。
例:Sub Macro2()
    Windows("檔案a.xls").Activate ’ 並非每次都是由”檔案a” (”檔案a”不是固定)。
    Range("A1:AF21").Copy ’ 並非每次都是同一範圍(A1、AF21不是固定)。
    Windows("檔案b.xls").Activate ”檔案b”是固定不變。
    Range("A1:AF21").Paste ’ 並非每次都是同一範圍(A1、AF21不是固定)。
End Sub

作者 : vliana(liana)
[ 貼文 1 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/30 下午 11:30:46
'加減參考一下
Windows("E002").Activate '已開之檔名
st = "a" & 1 '設定初始A1
For sh = 2 To Worksheets.Count '迥圈選取各個sheet

Windows("E002").Activate
Worksheets(sh).Activate
'Range("c7").Select '從C7開始計算列數
'wname = ActiveCell.Value
Countx = 0
    
    Range("B9").Select '從B9開始計算列數
    Do While ActiveCell.Value > ""
    Countx = Countx + 1 '共找到countx 列
    ActiveCell.Offset(1, 0).Activate
    Loop
    
    rc = "B9:g" & Countx + 8
    Range(rc).Select
    Selection.Copy 'copy
   
    
    Windows("LARGE").Activate '目標檔
     Range(st).Select
   ' ActiveCell.Value = wname
    ActiveCell.Offset(1, 0).Activate
    'Range(st).Select
    ActiveSheet.Paste '貼上
    ref1 = ref1 + Countx + 2 '下一個sheet之參考儲放位置
    st = "a" & ref1
 Next
作者 : oak0723(oak0723)
[ 貼文 55 | 人氣 2592 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/9/4 下午 11:25:59
感謝大大您
這ㄍ版
好像只有大大您願意給小弟回應
深深感謝您
有關你給小弟的資訊
小弟會努力ㄑ理解
感謝您
 板主 : Jammy , simula
 > 一般討論區 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 一般討論區 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
一般討論區
1 青衫 5360 
2 HKLN.net 1370 
3 冼鏡光 650 
4 simula 610 
5 joe 560 
6 DEMO999 520 
7 小朱 490 
8 jonay 480 
9 BlueTulip 460 
10 Jammy 370 
一般討論區
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.296875