Board logo

標題: [發問] 請各位大大幫忙! [打印本頁]

作者: koiiven    時間: 2011-3-10 23:21     標題: 請各位大大幫忙!

小弟以錄製巨集的方式將原始檔中之某些欄位
選定特定的儲存格數目之後
貼到A1工作表的特定儲存格中

但是因為每次所選定的列數不一定一樣
所以想請教各位大大
能否在Sheet1中直接設定我所要選取原始檔的列數(欄的部分都固定)
而我所設定的數值能直接影響巨集裡面的程式碼
進而使巨集能夠複製我所想要的儲存格數目到A1表格中

詳細情形如附件所述

感謝各位大大幫忙!
作者: Hsieh    時間: 2011-3-11 10:31

回復 1# koiiven
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro
  4. '

  5. '
  6. k = InputBox("輸入最終列位", , 532)
  7.     Sheets("原始檔").Select
  8.     Range("B5:D" & k).Select   '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
  9.     Selection.Copy
  10.     Sheets("A1").Select
  11.     Range("C7").Select
  12.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  13.         :=False, Transpose:=False
  14.     Sheets("原始檔").Select
  15.     Range("H5:H" & k).Select   '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
  16.     Application.CutCopyMode = False
  17.     Selection.Copy
  18.     Sheets("A1").Select
  19.     Range("F7").Select
  20.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  21.         :=False, Transpose:=False
  22.     Sheets("原始檔").Select
  23.     Range("G5:G" & k).Select   '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
  24.     Application.CutCopyMode = False
  25.     Selection.Copy
  26.     Sheets("A1").Select
  27.     Range("G7").Select
  28.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  29.         :=False, Transpose:=False
  30.     Sheets("原始檔").Select
  31.     Range("I5:I" & k).Select   '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
  32.     Application.CutCopyMode = False
  33.     Selection.Copy
  34.     Sheets("A1").Select
  35.     Range("H7").Select
  36.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  37.         :=False, Transpose:=False
  38.     Application.WindowState = xlNormal
  39.     Range("A7").Select
  40.     Application.CutCopyMode = False
  41.     ActiveCell.FormulaR1C1 = "1"
  42.     Range("A8").Select
  43.     ActiveCell.FormulaR1C1 = "2"
  44.     Range("A7:A8").Select
  45.     Selection.AutoFill Destination:=Range("A7:A" & k + 2), Type:=xlFillDefault '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
  46.     Range("I7").Select
  47.     ActiveCell.FormulaR1C1 = "500"
  48.     Range("I7").Select
  49.     Selection.AutoFill Destination:=Range("I7:I" & k + 2), Type:=xlFillDefault '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
  50.     Range("J7").Select
  51.     ActiveCell.FormulaR1C1 = "=IF(RC[-2]>RC[-1],""是"",""否"")"
  52.     Range("J7").Select
  53.     Selection.AutoFill Destination:=Range("J7:J" & k + 2), Type:=xlFillDefault '是否能在Excel儲存格直接輸入數字範圍而直接帶入Range()?
  54.    
  55. 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/)