Excel VBA公式錯誤檢查

請問一下各位大大~ 爲何我以下的公式會有錯誤呢??

出錯的地方, 會是在這一行~

Range(month & "!A1").NumberFormatLocal = dpformat

但如果, 我把 Range這行, 改成 msgbox month,

卻又可以正常顯示正確的值!?

請問如果我想要達到, 可以正常切換工作表,

並且設定小數點位數, 究竟要改哪裡呢??

P.S.小數點位數的設定已經是正確的了!

我現在只是希望能否透過 For 的函數, 來快速切換各工作表

來設定該區域的小數點區塊~

要不然若有12個月份, 加上很多區域, Code就會變成很長一串@@"

=================公式===========================

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

mon1 = "Jan"

mon2 = "Feb"

decimalpoint = Range("Options!C4")

If decimalpoint = 0 Then

dpformat = "$#,##0_ ;[紅色]-$#,##0_ "

ElseIf decimalpoint > 0 Then

dpformat1 = "$#,##0." & String(decimalpoint, "0") & "_ "

dpformat2 = ";[紅色]-$#,##0." & String(decimalpoint, "0") & "_ "

dpformat = dpformat1 & dpformat2

End If

Dim num, month

For num = 1 To 2 Step 1

month = "mon" & num

Range(month & "!A1").NumberFormatLocal = dpformat

month = ""

Next

End Sub

Update:

我想要的做法是讓公式, 可以自動切換1~12個月分, 自動設定,

請高手指正公式錯誤的修改方式, 有勞了! Orz!

Update 2:

目前大致上已經知道問題是在哪裡, 但對VBA不太懂, 所以不知道該如何改!

問題是 Range中的 month, 必須直接等於一個值, 而不能讓他在對應

另外一個 參數, 也就是他必須寫成...

month = "Jan!A1"

沒辦法變成

month = "mon"& num ( 這樣雖然是等於 mon1 = Jan, 但Range好像無法判斷...)

1 Answer

Rating
  • 世賢
    Lv 7
    1 decade ago
    Favorite Answer

    您可能沒搞懂 Range 的使用方式喔!

    Range("Options!C4"):

    在 ! 前面的為工作表的名稱,而在後面的 C4 即為儲存格的位置

    Range(month & "!A1").NumberFormatLocal = dpformat:

    在迴圈裡面產生的 month 是 mon1 及 mon2,所以會變成:

    Range("mon1!A1").NumberFormatLocal = dpformat

    Range("mon2!A1").NumberFormatLocal = dpformat

    也就是說,沒有 mon1 及 mon2 工作表,就會產生出'Range' 方法 ('_Global' 物件) 失敗

Still have questions? Get your answers by asking now.