Board logo

標題: [發問] 請問不同工作表的變數如何設? [打印本頁]

作者: skyutm    時間: 2012-8-22 22:43     標題: 請問不同工作表的變數如何設?

各位先進大家好,小弟又來打擾了。又有問題求助。我的成績系統第一個工作表是設定比例,第二個工作表是填入成績。第三個則是成績總表。問題是:假設國語
的加權比例是sheet1 c2這一格,國語成績輸入欄是sheet2  c3這一格,成績單國語欄是sheet3  c5 ,請問1.這種跨工作表變數的語法要怎麼寫,麻煩各位了(我知道算式怎麼寫,但是不同工作表則不懂)!2.這種語法是不是應該寫在sheet2 的 worksheet_change 呢?萬分感謝!
作者: luhpro    時間: 2012-8-25 03:29

... 這種跨工作表變數的語法要怎麼寫 ...
skyutm 發表於 2012-8-22 22:43


儲存格的引用可以用好幾種方式,
底下舉幾個比較簡單易用的:
1. Sheet名稱.[儲存格]
例 :  Sheet1.[c2] = 120 '加權比例
     Sheet2.[c3] = 86 '國語成績輸入欄
     Sheet3.[c5] = Sheet2.[c3] '成績單國語欄

2. Sheets("工作表名稱").Cells(儲存格列序, 儲存格欄序)
  Sheets("Sheet1").Cells(2, 3) = 120 '加權比例
  Sheets("Sheet2").Cells(3, 3) = 86 '國語成績輸入欄
  Sheets("Sheet3").Cells(5, 3) = Sheets("Sheet2").Cells(3, 3) '成績單國語欄

3. 設定 Sheet 指標, 然後以指標代替 Sheet 名稱來引用
  Dim sh1 As Sheet1, sh2 As Sheet2, sh3 As Sheet3
  
  Set sh1 = Sheet1
  Set sh2 = Sheet2
  Set sh3 = Sheet3
  
  sh1.Range("c2") = 120  '加權比例
  sh2.Range("C3") = 86  '國語成績輸入欄
  sh3.Range("C5") = sh2.Range("c3")   '成績單國語欄

上述方式中, Sheet 引用方式與 儲存格 引用方式都可以互相代換,
例如你可以用
Sheet1.Cells(2, 3) = 120 '加權比例

這裡要略微提一下 Office 說明中不友善的地方, (我用的是 2003 版)
若我們用 工作表 或 儲存格 來搜尋相關的使用方式,
會發現找不到想要的說明,
而要用 Range 或 Sheets 才能 (若用 Sheet 也不能) 找到 使用 Range 物件參照儲存格 或 使用名稱參照工作表 之類的說明,
我剛學習 Excel VBA 時往往浪費很多時間在找想要看的說明與範例,
有時還真的滿容易讓人洩氣的.
作者: GBKEE    時間: 2012-8-25 06:39

回復 1# skyutm
  1. '宣告變數為公用變數,可在任何模組中呼叫
  2. '此公用變數如在物件模組中,於其他模組中呼叫須加上模組名稱  如  Sheet1.加權比例
  3. '此公用變數如在一般模組中,於其他模組中呼叫不須加上模組名稱如  加權比例

  4. Option Explicit
  5. Public 加權比例 As Range
  6. Public 國語成績 As Range
  7. Public 成績單國語 As Range
  8. Sub Ex()
  9.     Set 加權比例 = Sheet1.[c2]
  10.     Set 國語成績 = Sheet2.[c3]
  11.     Set 成績單國語 = Sheet3.[c5]
  12. End Sub
複製代碼

作者: skyutm    時間: 2012-8-25 22:08

感謝兩位先進,小弟此階段的語法已經完成,再次感謝!




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