为什么我的If条件返回错误结果?

时间:2017-11-16 22:02:56

标签: arrays excel vba excel-vba

我是一名正在我的某个班级学习VBA的学生,其中当前的作业是从.txt文件中提取数据并显示它,以及总计,然后对总数进行评分。使用数组我在使用数组的前两个部分中取得了成功,但是当尝试计算等级的总数时,数组只考虑起始数字。有什么想法吗?代码

/* Variables
================================== */
@bw: 3px;  // border width

/* Tables
================================== */
.table {
  display: flex;
  flex-wrap: wrap;
  margin: 0 0 3em 0;
  padding: 0;
}
.table-cell {
  box-sizing: border-box;
  flex-grow: 1;
  width: 100%;  // Default to full width
  padding: 0.8em 1.2em;
  overflow: hidden; // Or flex might break
  list-style: none;
  border: solid @bw white; // margins would overflow row and cause early wrapping
  background: fade(slategrey,20%);
  > h1, > h2, > h3, > h4, > h5, > h6 { margin: 0; }
}

/* Table column sizing
================================== */
.table2cols > .table-cell  { width: 50%; }
.table3cols > .table-cell  { width: 33.33%; }
.table4cols > .table-cell  { width: 25%; }

/* Page styling
================================== */

body {
  border: 1px solid grey;
  margin: 0 auto;
  max-width: 800px;
  padding: 2em;
}
h1, h2, h3, h4, h5, h6 { margin-top: 0; }

1 个答案:

答案 0 :(得分:2)

问题在于您的If条件。在VBA 1 < 2 < 1评估为true。这就是为什么即使你的total(i)超过100,它总是评估为真,你的elseif没有发挥作用。

在VBA / VB6中,类型转换只是邪恶的。

您需要重写Ifelseif条件

示例:

Sub test()

    Dim x   As Long
    Dim y   As Long

    x = 101
    y = 99

    '/ What you are doing
    If 0 <= x < 1 Then
        MsgBox "This is not python."
    End If

    '/ How you should do it.
    If y >= 0 And y < 100 Then
        MsgBox "This is how you do it in VBA."
    End If

End Sub