返回列表 上一主題 發帖

[發問] 陣列及另一個小問題(已解決)

[發問] 陣列及另一個小問題(已解決)

本帖最後由 icestormer 於 2012-5-3 09:33 編輯

原本想法是 當要設定格式時先呼叫 資料格式判斷 副程式 弄成陣列後 回傳

然後根據陣列內的(由0 -3)不同數字來對資料整欄進行不同的格式化
-------------------------------------------------------------------------------
我是想說 可不可以把 資料格式判斷 這個副程式 由 private sub workbook_open()  在打開EXCEL時就先做好

然後 當  判斷資料格式_1()需要用mydata()內的資料時就拿來使用

而不用要跑一次時就去執行一次資料格式判斷?

不知道能不能照我說的這樣改呢還是一定要要用時就得去執行一次取得陣列的值並回傳  謝謝幫忙

另外問小小問題. 我想利用以下程式碼關掉EXCEL(整個關掉)
不管我是採用ThisWorkbook.Close 或是Application.Quit或是 ActiveWindow.Close 還是三個一起用..都沒法整個關閉EXCEL

Application.DisplayAlerts = False
                  ThisWorkbook.Close
                   Application.Quit
                   ActiveWindow.Close
Application.DisplayAlerts = true


這是圖片連結,上述指令只會關關activeworkbook而已,這是為什麼呢?我是想要把它完完整整的關閉 就好像你沒有打開EXCEL一樣

                              格式設定.rar (8.95 KB)

回復 1# icestormer

1.簡化一下
  1. Sub 設定格式()
  2. Dim mydata()
  3. 最後資料行 = [A5].End(xlDown).Row
  4. 資料長度 = [A5].End(xlToRight).Column
  5. ReDim mydata(資料長度)
  6. For i = 1 To 資料長度
  7.   Set Rng = Range("A6:A" & 最後資料行).Offset(0, i - 1)
  8.   Select Case Left(Cells(5, i), 1)
  9.   Case "%"
  10.      mydata(i) = 2
  11.      Rng.NumberFormatLocal = "0.00%"
  12.   Case "$"
  13.      mydata(i) = 1
  14.      Rng.NumberFormatLocal = "$#,##0.00"
  15.   Case "你"
  16.      mydata(i) = 3
  17.      Rng.NumberFormatLocal = "G/通用格式"
  18.   Case Else
  19.      mydata(i) = 0
  20.      Rng.NumberFormatLocal = "#,##0.00_ "
  21.   End Select
  22. Next
  23. End Sub
複製代碼
2.Application.Quit

TOP

回復 2# register313
請教一下,您在程式裏宣告了
Dim mydata()  為何接著又宣告一次 ReDim mydata(資料長度),其用意何在?
謝謝您!

TOP

回復 3# c_c_lai
ReDim 陳述式 在程序層次中用來重新配置動態陣列變數的儲存空間。 可查看Vba 的說明

Dim mydata()  為動態陣列
進入程序後可以 依所需再次宣告陣列元素長度
ReDim mydata(資料長度)

TOP

  1. Sub 設定格式()
  2. 最後資料行 = [A5].End(xlDown).Row
  3. 資料長度 = [A5].End(xlToRight).Column
  4. For i = 1 To 資料長度
  5.   Set Rng = Range("A6:A" & 最後資料行).Offset(0, i - 1)
  6.   Select Case Left(Cells(5, i), 1)
  7.   Case "%"
  8.      Rng.NumberFormatLocal = "0.00%"
  9.   Case "$"
  10.      Rng.NumberFormatLocal = "$#,##0.00"
  11.   Case "你"
  12.      Rng.NumberFormatLocal = "G/通用格式"
  13.   Case Else
  14.      Rng.NumberFormatLocal = "#,##0.00_ "
  15.   End Select
  16. Next
  17. End Sub
複製代碼

TOP

回復 3# c_c_lai


    如同GBKEE大解說一樣

用在陣列長度可能會變動的情況下 這寫法 很方便^^

TOP

本帖最後由 icestormer 於 2012-4-22 20:56 編輯

回復 5# register313
感謝你的幫忙 來試看看^^

請問 我用了application.quit 是可以直接關掉EXCEL但關之荝還是會問我要不要存檔   
使用 application.displayalerts=false  怎會沒有作用呢?(不想被問到有沒有要存檔就宜接關閉EXCEL)

application.displayalerts=false

  application.quit
application.displayalerts=true

TOP

回復 7# icestormer
ThisWorkbook.Save
Application.Quit
學海無涯_不恥下問

TOP

        靜思自在 : 口說一句好話,如口出蓮花;口說一句壞話如口吐毒蛇。
返回列表 上一主題