Board logo

標題: Application.Sum(Sheet.[g10:g20]) 裡面的Sheet 可用代碼取代嗎? [打印本頁]

作者: cji3cj6xu6    時間: 2013-4-11 18:17     標題: Application.Sum(Sheet.[g10:g20]) 裡面的Sheet 可用代碼取代嗎?

大大好,
請問,假設我有十張Sheet,分別為Sheet1, Sheet2... Sheet10,
而我有辦法將Sum 裡面的 Sheet 名稱改用代碼取代嗎?

例如,
For DQ=1 To 10

Application.Sum(DQ[g10:g20])

Next

請問以上的寫法可行嗎?

謝謝
作者: cji3cj6xu6    時間: 2013-4-11 18:25

看到2008年有人寫過類似的寫法

a = Worksheets("sheet1").Range("a1:a10")
Application.Sum(a)

所以我可以改為以下嗎?


For DQ=1 To 10

a = Worksheets(DQ).Range("g10:g20")
Application.Sum(a)

Next
作者: cji3cj6xu6    時間: 2013-4-11 18:38

這樣的寫法好像怪怪的,
會想要寫這個主要是因為兩的excel 檔案,
要將a 檔案的資料 第一頁g10 ~G20 的和 丟到b檔案的第一頁的某個位置(假設是a1好了)
繼續想想看∼
作者: GBKEE    時間: 2013-4-11 18:50

回復 3# cji3cj6xu6
設定物件(Range,Workbook....)變數 前面要加 Set
   
  1. Option Explicit
  2. Sub Ex()
  3.     Dim DQ As Integer, A As Range
  4.     For DQ = 1 To 10     '工作表索引 1 TO 10
  5.         Set A = Worksheets(DQ).Range("a1:a10")
  6.         MsgBox Application.Sum(A)
  7.     Next
  8. End Sub
複製代碼

作者: cji3cj6xu6    時間: 2013-4-11 22:19

謝謝板主費心,找時間再試看看。

所以我應該寫成

Sub Ex()

Dim DQ As Integer, A As Range, Address1 as Integer

Address1=1

For DQ = 1 To 10     '工作表索引 1 TO 10

Windows("file1.xls").Active

Set A = Worksheets(DQ).Range("a1:a10")

MsgBox Application.Sum(A)

Windows("file2.xls").Active

Worksheets(DQ).Range("a"& Address1).value=A

Next

End Sub

這樣對嗎?

另外一點, MsgBox 的功能是打開一個對話框是嗎?

在程式中一定要寫是嗎?

謝謝~
作者: mark15jill    時間: 2013-4-12 08:10

謝謝板主費心,找時間再試看看。

所以我應該寫成

Sub Ex()

Dim DQ As Integer, A As Range, Addr ...
cji3cj6xu6 發表於 2013-4-11 22:19



    MsgBox Application.Sum(A)  <== 這是跳出一個小對話框 顯示Application.Sum(A)   的結果...
可寫可不寫
寫了是妳到時候還要將那個小對話框按掉..
作者: cji3cj6xu6    時間: 2013-4-12 08:52

謝謝M大分享∼
作者: cji3cj6xu6    時間: 2013-4-12 12:40

謝謝板主,可以了,最後一句
Worksheets(DQ).Range("a"& Address1).value=A
應該改為
Worksheets(DQ).Range("a"& Address1).value=Application.Sum(A)

所以整段應該是
Sub Ex()

Dim DQ As Integer, A As Range, Address1 as Integer

Address1=1

For DQ = 1 To 10     '工作表索引 1 TO 10

Windows("file1.xls").Activate

Set A = Worksheets(DQ).Range("a1:a10")

MsgBox Application.Sum(A)

Windows("file2.xls").Activate

Worksheets(DQ).Range("a"& Address1).value=Application.Sum(A)

Next

End Sub




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