返回列表 上一主題 發帖

[發問] 初學不才,請問這如何簡化?

[發問] 初學不才,請問這如何簡化?

各位老師好:

以下是我跨檔案依指定儲存格值而取的另一檔案儲存格值所寫,但是.........我要從F4......G4......H4.....一直做到Z4,RANGE()的變動不會寫,只能一直COPY做.....:'(

還請老師指導....感謝!

Public Sub test()
Range("f4:f9") = "='D:\Desktop\a\[" & [F2] & ".xlsm]b'!" & [$d4] & ""
Range("f10:f14") = "='D:\Desktop\a\[" & [F2] & ".xlsm]b'!" &  [$d10] & ""
Range("f15:f20") = "='D:\Desktop\a\[" & [F2] & ".xlsm]b'!" &  [$d15] & ""
Range("g4:g9") = "='D:\Desktop\a\[" & [G2] & ".xlsm]b'!" & [$d4] & ""
Range("g10:g14") = "='D:\Desktop\a\[" & [G2] & ".xlsm]b'!" & [$d10] & ""
Range("g15:g20") = "='D:\Desktop\a\[" & [G2] & ".xlsm]b'!" & [$d15] & ""

end sub

回復 1# dakiu

Public Sub test2()
    For Each xR In [F1:Z1]
        Range(xR(4), xR(9)) = "='D:\Desktop\a\[" & xR(2) & ".xlsm]b'!" & [$d4] & ""
        Range(xR(10), xR(14)) = "='D:\Desktop\a\[" & xR(2) & ".xlsm]b'!" & [$d10] & ""
        Range(xR(15), xR(20)) = "='D:\Desktop\a\[" & xR(2) & ".xlsm]b'!" & [$d15] & ""
    Next
End Sub
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 luhpro 於 2016-6-1 22:04 編輯

回復 1# dakiu
也可以寫這樣 :
  1. Public Sub test()
  2.   Dim iI%, iC%, iR%, vR()
  3.   
  4.   iC = 6
  5.   vR = Array(4, 10, 15, 21)
  6.   While iC <= 26
  7.     For iI = 0 To 2
  8.       iR = vR(iI)
  9.       Range(Cells(iR, iC), Cells(vR(iI + 1) - 1, iC)) = _
  10.           "'D:\Desktop\a\[" & Cells(2, iC) & ".xlsm]b'!" & Cells(iR, 4) & ""
  11.     Next
  12.     iC = iC + 1
  13.   Wend
  14. End Sub
複製代碼

TOP

謝謝2位指導,會在細心研究學習了!感謝

TOP

回復 2# ML089


    版大,能否再請教?
1)資料都放在同一資料夾,如果此資料夾移動後,這  'D:\Desktop\a\  能否自動變更位置?

再次求教,感謝!

TOP

回復 5# dakiu

可以使用 ThisWorkbook.Path 來替代

ThisWorkbook.Path  為程式檔案的目錄位置
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 6# ML089


    謝謝版大,解決了...感謝指導!!

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題