標題:
[發問]
請各位大大幫忙!
[打印本頁]
作者:
koiiven
時間:
2011-3-10 23:21
標題:
請各位大大幫忙!
小弟以錄製巨集的方式將原始檔中之某些欄位
選定特定的儲存格數目之後
貼到A1工作表的特定儲存格中
但是因為每次所選定的列數不一定一樣
所以想請教各位大大
能否在Sheet1中直接設定我所要選取原始檔的列數(欄的部分都固定)
而我所設定的數值能直接影響巨集裡面的程式碼
進而使巨集能夠複製我所想要的儲存格數目到A1表格中
詳細情形如附件所述
感謝各位大大幫忙!
作者:
Hsieh
時間:
2011-3-11 10:31
回復
1#
koiiven
Sub Macro1()
'
' Macro1 Macro
'
'
k = InputBox("輸入最終列位", , 532)
Sheets("原始檔").Select
Range("B5:D" & k).Select '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
Selection.Copy
Sheets("A1").Select
Range("C7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("原始檔").Select
Range("H5:H" & k).Select '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
Application.CutCopyMode = False
Selection.Copy
Sheets("A1").Select
Range("F7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("原始檔").Select
Range("G5:G" & k).Select '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
Application.CutCopyMode = False
Selection.Copy
Sheets("A1").Select
Range("G7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("原始檔").Select
Range("I5:I" & k).Select '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
Application.CutCopyMode = False
Selection.Copy
Sheets("A1").Select
Range("H7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.WindowState = xlNormal
Range("A7").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "1"
Range("A8").Select
ActiveCell.FormulaR1C1 = "2"
Range("A7:A8").Select
Selection.AutoFill Destination:=Range("A7:A" & k + 2), Type:=xlFillDefault '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
Range("I7").Select
ActiveCell.FormulaR1C1 = "500"
Range("I7").Select
Selection.AutoFill Destination:=Range("I7:I" & k + 2), Type:=xlFillDefault '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
Range("J7").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-2]>RC[-1],""是"",""否"")"
Range("J7").Select
Selection.AutoFill Destination:=Range("J7:J" & k + 2), Type:=xlFillDefault '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
End Sub
複製代碼
作者:
koiiven
時間:
2011-3-11 12:43
本帖最後由 koiiven 於 2011-3-11 12:58 編輯
感謝Hsieh大大幫忙
執行OK
小弟想實驗看看如果在自行加上
j = InputBox("輸入起始列位", , 0)
k = InputBox("輸入最終列位", , 532)
Sheets("原始檔").Select
Range("B5:D" & k).Select
Range括號內的程式碼該如何編寫呢?
小弟有試過Range("B & j:D" & k).Select
和Range("B:D" & j & k).Select
但好像都不行
此外
如果想要設定輸入列位的值自動+4
舉例來說 輸入列位值1
程式讀取到的列位值則為5
則需要在何處作修改呢?
感謝!
作者:
hugh0620
時間:
2011-3-11 13:24
本帖最後由 hugh0620 於 2011-3-11 13:37 編輯
回復
3#
koiiven
Q1:小弟有試過Range("B & j:D" & k).Select
和Range("B:D" & j & k).Select但好像都不行
A1: 寫法錯誤 (我以前也有這樣的錯誤,多練習+筆記 就好了~)
Range("B" & J & ":D" & k).Select <---正確的寫法
Q2:此外,如果想要設定輸入列位的值自動+4
舉例來說 輸入列位值1,程式讀取到的列位值則為5,則需要在何處作修改呢?
A2:加入一個固定參數值+4
例:Range("B" & J
+4
& ":D" & k).Select
這樣的話,當你輸入列數=1時,列數值實際上運算後的結果1+4=5
個人在學VBA時,不會用錄製巨集,單純直接撰寫程式碼
後來會用錄製巨集的時候,這個功能變成我需要某種功能但是不知道程式碼怎麼寫時的小工具
一個步驟一個步驟錄是可以解決問題,但還是要先從基本的觀念開始學
這樣才能了解程式碼要怎麼改唷~
我也是個低階撰寫者 與您共勉之
作者:
koiiven
時間:
2011-3-11 15:34
感謝hugh0620大大的回答
程式執行都OK
謝謝大大的經驗
小弟剛接觸VBA
覺得真的很有趣
也是想要去買書來了解VBA的基本觀念
從最基本的開始學起
感謝大大的勉勵
作者:
hugh0620
時間:
2011-3-11 16:28
回復
5#
koiiven
可以先不買書
中台科技大學的私房教師數位學習系統 看一看
對你在學VBA會所幫助
http://estudy.ctust.edu.tw/estudy/html/excel2003vba.html
等看完後 再去書局買書 看哪些東西是上面沒有的再買
最後書是死滴唷~ 有問題可以爬爬文~ 問問題~ 這樣才能了解別人的想法與寫法~
作者:
oobird
時間:
2011-3-13 10:22
同意樓上
初學vba時也買過書
不過沒基礎也看不下去
要用時翻遍了也找不到合用的範例
直到現在那本書還是新的
作者:
koiiven
時間:
2011-3-14 19:31
小弟這幾天花了一些時間去鑽研大大給的網站
講解的方式的確讓人比較易懂
總比在書局一本一本的翻
卻還找不到適合自己的書
感謝大大
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)