返回列表 上一主題 發帖

[發問] 變數設定

[發問] 變數設定

請把陣列中的對應位置值設給變數,VBA如何做,謝謝
  1. Option Base 1
  2. Option Explicit

  3. Sub Test()

  4.     '定義變數
  5.     Dim Qref%, kWref%, COPref%, Qev_ref%, Qcd_ref%, Tchws%, Tchwr%, Tcws%, Tcwr%
  6.     Dim a0%, a1%, a2%, a3%, a4%, a5%
  7.     Dim ar
  8.    
  9.     '變數名稱陣列,   說明: 名稱在陣列中的位置是會變的
  10.     ar = Array("Qref", "kWref", "COPref", "Qev_ref", "Qcd_ref", "Tchws", "Tchwr", "Tcws", "Tcwr", _
  11.                 "a0", "a1", "a2", "a3", "a4", "a5")
  12.    
  13.     '把變數名稱在陣列中的位置設給變數
  14.    
  15.     '(如何寫VBA可以得到期望結果)'?
  16.     'Qref = 1
  17.     'kWref = 2
  18.     'COPref = 3
  19.     'Qev_ref = 4
  20.     'Qcd_ref = 5
  21.    
  22.     '   .
  23.     '   .
  24.     '   .
  25.     'a5 = 15
  26.    
  27.    
  28. End Sub
複製代碼

回復 2# stillfish00


    謝謝大大的解惑,答案正是所要的,非常感恩

再請教,
假如事先沒變數設定,是否能從名稱陣列中分離出 使成各個變數並賦于在陣列中的位置值?

TOP

回復 4# stillfish00

非結構化性資料表欄位多,做計算的程式易失去可讀性而混亂;
例如:
       AR(i,j) 的 j 代表欄位,欄位多了 ,j 只是一個數字概念,沒有名詞意義;當然,數字用來做迴圈很重要
       Cells(i,"B").offset(,j) 一樣的意思

假如能用欄位名稱當變數 j, 則是:
     AR(i,欄位名稱)
     cells(i,"B").offset(,欄位名稱)

以上請教 大大  有沒有其他的解法

謝謝

TOP

回復 6# ML089


    謝謝大大的回應
抱歉,我沒把問題描述清楚

問題的目標是要 賦值 給 變數,不只是字串在陣列中的位置
例如:
          Qref =1,因為字串 "Qref" 在 陣列的位置 是 1
          Qev_ref = 4, 因為字串 "Qev_ref" 在陣列的位置是 4

TOP

回復 7# stillfish00


之所以發想要以動態的方式處理,
    就是因為欄位很多且位置會變;直接用 Const 會拉得很長,資料位置變動時也不易更改

提議用 ML 版主的字典法 D("Qref") 應可行

測試後再報告

謝謝

TOP

回復 10# GBKEE
回復 9# stillfish00
回復 6# ML089


    謝謝各位大大的幫忙
經測試後,使用 字典法 的 D("Qref") 或 名稱定義 的 [Qref] 替代 變數 Qref 都可以解決問題

再次感恩

TOP

回復 11# Scott090

有看到 clio 的回文通知但看不到全文

請clio 版大再回文

謝謝

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題