【问题标题】:reading the values of a run-time variables in a for loop在 for 循环中读取运行时变量的值
【发布时间】:2017-09-07 03:59:22
【问题描述】:

在下面的代码中... kk1 =“一”,kk2 =“二”,kk3 =“三”和kk4 =“四”的值。

我希望 msgbox 显示一、二、三和四,而不是 KK1、KK2、KK3 和 KK4

For i = 1 To 4
    vari_value = "kk" & i
    MsgBox vari_value
Next

【问题讨论】:

  • 没有指定kk1 = "one"等...
  • 不可能。改为使用数组。
  • 无法在 VBA 中动态构建变量名称。您只是将文字字符串“kk”与索引号连接起来,并将 vari_value 设置为此构造的字符串值。正如@Andre 所说,数组可能会满足您的需求。

标签: ms-access


【解决方案1】:

使用Select case语句可以实现,参考下面的代码,从1循环到4,值为“KK1”、“KK2”、“KK3”、“KK4”

Public Sub run()
For i = 1 To 4
vari_value = "kk" & i
Select Case vari_value
    Case Is = "kk1"
        MsgBox "One"
    Case Is = "kk2"
        MsgBox "Two"
    Case Is = "kk3"
        MsgBox "Three"
    Case Is = "kk4"
        MsgBox "Four"
End Select
'MsgBox vari_value
Next
End Sub

希望这能解决您的问题。

【讨论】:

  • 其实@Nishit, KK1, KK2, KK3 和 KK4 是带有样本值的表单变量 - “一”、“二”、“三”和“四” 我想要 KK1、KK2 的值, KK3 和 KK4 要显示在不是固定值的消息框中
  • 你有多少变量,如果是可编码的,你可以使用它。如果不是,则 vba 无法在 VBA 中动态构建变量名。您能否更具体地说明您的需求。
  • 如果您想将 KK1,KK2,KK3 定义为动态变量,则无法完成。出于一个简单的原因,LHS 或 RHS 或两者都应该是静态的才能使用。以您的情况为例,当 vari_value 的值在第一个实例中为 KK1 = "One" 时,只要 "i" 的值增加 vari_value 的值,即 KK1 更改为 KK2,因此 KK1 丢失
  • 非常感谢....我想创建和使用动态变量来缩短我的代码。似乎不可能,因此我将多次编写重复的“insert into”语句,并为每个 insert into 语句硬编码变量名
猜你喜欢
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多