【问题标题】:VBA If, elseif statement, how to set a constant when the first IF statement is not metVBA if,elseif语句,不满足第一个IF语句时如何设置常量
【发布时间】:2013-03-21 14:25:11
【问题描述】:

我有一个 If, Elseif, Else 语句。如果满足第一个 If,我想插入径流和渗透的计算值。但是,如果不满足第一个 IF 条件,则径流和渗流将始终被指定为 0。我在下面粘贴了我的代码。我遇到的问题是,如果我在第一个 IF 语句之后设置 percolation 和 runoff=0,我的 print sub 将始终打印 0,而不是计算值。如果不满足第一个 IF 条件,如何将径流和渗透分配为​​常数?我知道我可以在每个后续条件中分配 runoff=0, percolation=0,但我正在尝试减少代码的体积。

 Do
         If (fc - WC(j - 1) + RefET(i)) <= Precip(i) Then
                WC(j) = fc
                WCinit(j) = WC(j)
                Runoff(j - 1) = (Precip(i) - (fc - WC(j - 1) + RefET(i))) * 0.5
                Percolation(j - 1) = (Precip(i) - (fc - WC(j - 1) + RefET(i))) * 0.5
'    Runoff(j - 1) = 0 <-If I assign these here, it "overrides" the value I calculated on the previous line. I want to reduce the bulkiness of my code by assigning these values if the first IF condition is not met
'    Percolation(j - 1) = 0
          ElseIf (WC(j - 1) + Precip(i) - RefET(i)) > pwp Then
                 WC(j) = WC(j - 1) + Precip(i) - RefET(i)
                 WCinit(j) = WC(j)
                 Runoff(j - 1) = 0
                 Percolation(j - 1) = 0
        Else
                WC(j) = pwp
                WCinit(j) = WC(j)
                Runoff(j - 1) = 0
                Percolation(j - 1) = 0
        End If
                j = j + 1
                i = i + 1
                Loop While j < 14

【问题讨论】:

  • 在第一个 if 语句之前分配 runoff=0, percolation=0。
  • 但是,如果在第一个 IF 语句上满足条件,我不希望它们等于 0,而是等于计算值,只有满足 2 和 3 条件时它们才等于 0 . 如果我在第一个 IF 语句之前将它们设置为 0,它们将始终返回 0

标签: excel if-statement vba


【解决方案1】:

或者当您标注它们时。 Dim Percolation as int = 0

【讨论】:

  • 这不是 VB.Net :) 在第二轮设置 Do Loop 之外的变量不会将其值设置为 0 :)
猜你喜欢
  • 2018-10-01
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多