2015-08-16 34 views
0

这是我第一次在这里发布问题。我正在写一个MS Excel VBA项目,我在子程序之间传递一个字符串。在第二个子例程中,我使用字符串来确定CASE条件。 EG 4000至9999; 4050至5000,5050; 5051至6000,6051至7000是三个例子。当这些字符串在CASE后键入时,它可以工作,但将值作为字符串传递不会。我的项目涉及多次运行子案例,每次都要求更改案例。有什么建议么?传递要在CASE语句中使用的字符串

非常感谢 NC 这里是我的代码示例。我已经离开了所有的变暗和计算 - 我肯定的是,这些都于事无补, 感谢

Sub Calling_Sub() 
'Operating Income 
Title = "Operating Income" 
GL_Range = "5000 to 9499" 
add_me_up Title, GL_Range 

'Other Income 
Title = "Other Income" 
GL_Range = "4050 to 5000, 5050" 
add_me_up Title, GL_Range 

'Debts 
Title = "Debts" 
GL_Range = "5051 to 6000, 6051 to 7000" 
add_me_up Title, GL_Range 

'Other 
Title = "Other" 
GL_Range = "8051, 8055, 8070, 8075" 
add_me_up Title, GL_Range 

'and so on and so forth for all the other combinations 
End Sub 


Sub add_me_up (Title as string, GL_Range as string) 

... 

For Each lrowC In lrngC.Cells  'pivot table data rows 

    Select Case lrowC.Cells.Offset(0, 1) 

     Case ****GL_Range**** 
      If lrowC.Cells(1, 1) = Fin_Year Then  'current month & YTD 
       Select Case Period 
        Case 1 
... 

end sub 
+2

您可以发布您的代码示例吗? –

+0

子Calling_Sub() “营业收入 名称= “营业收入” GL_Range = “5000〜9499” add_me_up标题,GL_Range 结束子 – NanetteC

回答

0

不知道这是否是错误的,由于代码还原你的,但你必须调用add_me_up - 例程与Call和括号。例如。像这样:

Call add_me_up(Title, GL_Range) 

检查出来的MSDN

+0

由于Klaster,它没有麻烦调用第二子,只有当它进入了选择案例,GL_Range将该字符串视为文字字母,而不是我想要的值。例如。我想它读取: - 案件5000至9499 但它得到: - 案件“5000至9499” – NanetteC

+0

好吧,现在我明白了。显然,将数字作为字符串来处理是非常有意义的。如果你不想改变'calling_sub',你也可以解析字符串中的数字。已经有Stackoverflow上的[解决方案](https://stackoverflow.com/questions/15369485/how-to-extract-groups-of-numbers-from-a-string-in-vba)。 – Klaster

+0

再次感谢Klaster,不幸的是,明显的是我花了更长的时间,实际上当我对你做出回应时,当时解决方案打击了我。解析也是一个非常有效的选择,我可能会在下次使用。我真诚地感谢你的麻烦。 – NanetteC

0

感谢您的建议,但我有一个可行的解决方案。我现在将这些数字分别传递给'加入者',通过这个,case语句能够将它们读为数字,而不是之前的字符串。我很欣赏任何给我的问题的想法,谢谢。

相关问题