Board logo

標題: [發問] 如何簡化程式? [打印本頁]

作者: luke    時間: 2012-4-27 23:09     標題: 如何簡化程式?

各位大大

小弟寫了一些程式如下
  fnra = fd & "RRR\" & A.Offset(, -4) & "\LAN0"
  fnrb = fd & "RRR\" & A.Offset(, -4) & "\LAN1"
  fnrc = fd & "RRR\" & A.Offset(, -4) & "\LAN2"
  fnrd = fd & "RRR\" & A.Offset(, -4) & "\LAN3"
  fnre = fd & "RRR\" & A.Offset(, -4) & "\LAN4"
  fnrf = fd & "RRR\" & A.Offset(, -4) & "\LAN5"
  fnrg = fd & "RRR\" & A.Offset(, -4) & "\LAN6"
  fnrh = fd & "RRR\" & A.Offset(, -4) & "\LAN7"
  fnri = fd & "RRR\" & A.Offset(, -4) & "\LAN8"   

  fso.copyfolder fnra, fr, True  
  fso.copyfolder fnrb, fr, True  
  fso.copyfolder fnrc, fr, True  
  fso.copyfolder fnrd, fr, True  
  fso.copyfolder fnre, fr, True  
  fso.copyfolder fnrf, fr, True  
  fso.copyfolder fnrg, fr, True  
  fso.copyfolder fnrh, fr, True  
  fso.copyfolder fnri, fr, True  

  如何簡化程式?

  煩請先進 大大指導
作者: GBKEE    時間: 2012-4-28 06:53

回復 1# luke
  1. Dim xi As Integer
  2.     For xi = 0 To 8
  3.         fnra = fd & "RRR\" & A.Offset(, -4) & "\LAN" & xi
  4.         fso.copyfolder fnra, fr, True
  5.     Next
複製代碼

作者: c_c_lai    時間: 2012-4-28 07:43

本帖最後由 c_c_lai 於 2012-4-28 07:46 編輯

回復 2# GBKEE
A.Offset(, -4) 其中的 Offset(, -4) 指的到底是甚麼含意? 為何又使用 -4? 前面有時是 "(,:" 、"(0,"、 "(1,"、或是 "(2,"?
不好意思,初淺的我、對 Excel 的某些指令不甚理解? Offset 是移位之意?
謝謝您!
作者: GBKEE    時間: 2012-4-28 09:56

回復 3# c_c_lai
VBA 的說明 及範例
Offset 屬性  Range 物件時用 Offset 屬性。
傳回 Range 物件,用以代表某個指定區域以外的範圍。唯讀。
expression.Offset(RowOffset, ColumnOffset)
  1. Worksheets("Sheet1").Activate
  2. ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate
複製代碼
說明如看不懂 多操作幾次範例 修改參數 就會明白
RowOffset         負數為向上移動
ColumnOffset  負數為向左移動
作者: c_c_lai    時間: 2012-4-28 10:26

回復 4# GBKEE
RowOffset                         負數為向上移動         ' 本身所在欄位不算,再加上移位多少列。
ColumnOffset                  負數為向左移動         ' 本身所在欄位不算,再加上移位多少欄。
原來如此,按 Excel F1 說明時,不知是個人資質不佳、還是過笨兒,有時真是有看沒懂。
謝謝您! 這回真的懂了,亦即開竅了!
作者: sleepycat    時間: 2012-4-29 21:51

回復 2# GBKEE

大大您好
我看到這個問題時直觀也是像您這樣簡化
但是我又想到一個問題
您目前的寫法應該只會有fnra這個變數
若考慮到 fnra, fnrb,  fnrc, ..... 等這些變數如還是需要
其他地方可能會使用到這些變數名稱
那這樣的話該如何修改會比較好??
作者: Hsieh    時間: 2012-4-29 22:29

回復 6# sleepycat

這就是簡化啊!
把原本需要多個變數改到只需一個變數可以執行

你要問的應該不是這個問題吧!
你是說在迴圈中要得到多個變數來儲存對應的值,對嗎?
這可使用動態陣列來儲存
例如:變數名稱fnra,  fnrb,  fnrc.....有很多變數
Dim fnr()
for i=0 to 100
ReDim Preserve fnr(i)
fnr(i)=i
next
這樣fnr就是一個含有101個元素的陣列,每個元素就代表一個變數。
作者: luke    時間: 2012-4-29 23:01

本帖最後由 luke 於 2012-4-30 19:29 編輯

回復 7# Hsieh

謝謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)