返回列表 上一主題 發帖

請教語法上的問題?

請教語法上的問題?

各位先進大家好!約莫六年前小弟開始學習vba語法,為的是設計一個可以計算成績的excel檔,

但是後來成績系統都已經改成網路化了,所以我的 excel檔就擱置了,一直到了最近。因為

成績系統改版,所以我又把excel檔拿出來使用了,但是人事已非,我完全忘了語法怎麼使用。

想請教一個語法問題:我想要在打開「總成績」的工作表時,「總成績」的c2欄位就會自動複製

「國平時」工作表的Q2:Q22的數值,所以寫了下列語法,但是不知哪裡有錯,還請指正。感謝

Sub 自動複製成績()
Sheets("國平時").Range("Q2:Q22").Select
Selection.Copy
Sheets("總成績").Range("C2").Select
ActiveSheet.Paste
End Sub

回復 1# skyutm

要先切換工作表,所以要多一句Sheets("總成績").Activate,完整程式碼:
  1. Sub 自動複製成績()
  2. Sheets("國平時").Range("Q2:Q22").Select
  3. Selection.Copy
  4. Sheets("總成績").Activate
  5. Sheets("總成績").Range("C2").Select
  6. ActiveSheet.Paste
  7. End Sub
複製代碼
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

回復 1# skyutm
  1. '******ThisWorkbook模組的程式碼********
  2. Option Explicit

  3. '**活頁簿開啟時自動執行
  4. Private Sub Workbook_Open()
  5.     自動複製成績
  6. End Sub
  7. '**活頁簿:工作表中移動時自動執行
  8. Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  9.     If Sh.Name = "總成績" Then 自動複製成績
  10. End Sub
  11. Sub 自動複製成績()
  12.     Sheets("國平時").Range("Q2:Q22").Copy Sheets("總成績").Range("C2")
  13. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# skyutm
感謝兩位先進的解答,小弟測試之後果然可以執行,但是問題又來了,

因為前面所說的「國平時」工作表的q2到22欄位是由前面算出平均的,

所以在「總成績」複製之後會出現=AVERAGE(#REF!)這樣的訊息,我推測應該是

應該更換了工作表,所以算不出成績,不知該如何解決呢?謝謝。

TOP

回復 6# skyutm

這種複製方法是複製相對位置,請問S大是只要複製數字就好嗎?
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

回復 7# iamaraymond


  
是的!它應該複製到公式了。我剛剛也在網路上尋找,是否有選擇性貼上的語法嗎?

TOP

回復 8# skyutm
  1. Sub 自動複製成績()
  2. Sheets("國平時").Range("Q2:Q22").Copy
  3. Sheets("總成績").Activate
  4. Sheets("總成績").Range("C2").PasteSpecial Paste:=xlPasteValues
  5. End Sub
複製代碼
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

回復 9# iamaraymond

感謝您的幫助,可是程式碼無法自動執行ㄝ,我來整合看看。

TOP

回復 10# skyutm

哈哈!真是有趣。我把程式碼整合在一起就可以了。

'******ThisWorkbook模組的程式碼********
Option Explicit

'**活頁簿開啟時自動執行
Private Sub Workbook_Open()
    自動複製成績
End Sub
'**活頁簿:工作表中移動時自動執行
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "總成績" Then 自動複製成績
End Sub
Sub 自動複製成績()
Sheets("國平時").Range("s2:s22").Copy
Sheets("總成績").Activate
Sheets("總成績").Range("C2").PasteSpecial Paste:=xlPasteValues
End Sub

TOP

回復 10# skyutm

應該把程式加入版主的程式就OK了
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題