Vba 多If语句缩进错误?

Vba 多If语句缩进错误?,vba,if-statement,indentation,Vba,If Statement,Indentation,所以,我认为我做错了什么,但需要一些指导 下面的代码假定是一种基于组合框“奖励”结果的单向计算。目前我的计算不正确(因为它认为这是“两个半相同的术语”)。我相信这是由于我缩进或不正确地使用了多个嵌套if语句造成的 If Awarding = "First Half All Credits in One Half" Or Awarding = "Second Half Only" Then If LEU.Value <> "" And PLEU < CalcElig

所以,我认为我做错了什么,但需要一些指导

下面的代码假定是一种基于组合框“奖励”结果的单向计算。目前我的计算不正确(因为它认为这是“两个半相同的术语”)。我相信这是由于我缩进或不正确地使用了多个嵌套if语句造成的

 If Awarding = "First Half All Credits in One Half" Or Awarding = "Second Half Only" Then
     If LEU.Value <> "" And PLEU < CalcElig Then
         Payment1.Value = PLEU
     If PAmtUnused < CalcElig Then
         Payment1.Value = PAmtUnused
     Else: Payment1.Value = Payment1.Value = Round(CLng(PSchAward) *      PTotalAyWeeks / PMinAyWeeks / 2, 0)
     End If

     PPayment1 = Payment1.Value
     PPayment2 = 0
     TotalPayment = PPayment1 + PPayment2
     End If
 End If


 If Awarding = "Both Halfs Same Term" Then
     If LEU.Value <> "" And PLEU < CalcEligA Then
         Payment1.Value = PLEU
     ElseIf PAmtUnused < CalcEligA Then
         Payment1.Value = PAmtUnused
     Else: Payment1.Value = CalcEligA
     End If


     PPayment1 = Payment1.Value


     If LEU.Value <> "" And PLEU > 0 Then
         Payment2.Value = PLEU - PPayment1
     Else: Payment2.Value = CalcEligB
     End If

     If PAmtUnused - PPayment1 < PLEU - PPayment1 Then
         Payment2.Value = PAmtUnused - PPayment1
     ElseIf PAmtUnused - PPayment1 < CalcEligB Then
         Payment2.Value = PAmtUnused - PPayment1
     Else: Payment2.Value = CalcEligB
     End If


     PPayment2 = Payment2.Value

     TotalPayment = PPayment1 + PPayment2

     End If

 End If

 End Sub
如果授予=“前半部分全部学分”或授予=“仅下半部分”,则
如果LEU.值“”和PLEU0,则
Payment2.Value=PLEU-PPayment1
其他:付款2.价值=CalcEligB
如果结束
如果PAmtUnused-PPayment1
问题似乎出现在您的第一个区块

您的代码(添加缩进以显示流程):

将在付款中显示正确或错误1。这与:

 Else: Payment1.Value = (Payment1.Value = Round(CLng(PSchAward) *      PTotalAyWeeks / PMinAyWeeks / 2, 0))
其中,括号中的部分用于评估等号两侧的两个值是否相等

您可能只想拥有一个等式:

Else: Payment1.Value = Round(CLng(PSchAward) *      PTotalAyWeeks / PMinAyWeeks / 2, 0)

找出此类错误的最佳方法是逐级检查代码,并查看与预期相比,代码到底发生了什么以及程序是如何运行的。

尽管OpiesDad提供了很大的帮助,但事实证明存在一些非常糟糕的语法问题。我不得不对整个事情进行重组,以减少混乱,使之更有意义。解决方案不同于原来的帖子,但我想做出回应

争论的要点:

Trying to separate calculations 
Multiple static value declarations
Being dumb

缩进对编译器来说并不重要,它只是为了人类的利益。好吧,我出于某种原因认为缩进很重要?那么,你介意教育我我明显的疏忽吗?如果你用Python编程,那么你可能已经内化了缩进很重要的概念。原则上,它在VBA中并不重要——尽管换行符形式的空白作为语句终止符是重要的。尽管如此,一致性缩进仍然是一个绝好的主意,即使除了您之外没有人可能阅读代码,因为除其他外,它是调试的主要帮助。感谢您指出所有语法错误。主要问题仍然是,当我有“Preding=”First Half All Credits in One Half”或“Preding=”Second Half Only”时,出现“If Preding=”两个Half相同期限“的代码结尾是用户表单的最终输出,这意味着什么?“用户表单的最终输出”?生成此输出的是哪一行代码?哪一行导致它出现在用户表单上?您提供了哪些投入(就可变奖励而言),以及这些投入的具体结果是什么?在逐步完成代码之后,程序是如何执行的?此外,如果我提供的修复导致了相同的问题,那么我会更新问题,以包含具有固定语法的代码,然后解释问题所在,包括我在前面的评论中提出的问题的答案。
 Else: Payment1.Value = (Payment1.Value = Round(CLng(PSchAward) *      PTotalAyWeeks / PMinAyWeeks / 2, 0))
Else: Payment1.Value = Round(CLng(PSchAward) *      PTotalAyWeeks / PMinAyWeeks / 2, 0)
Trying to separate calculations 
Multiple static value declarations
Being dumb