【问题标题】:Optional Variable with Range and String inside VBA codeVBA代码中带有范围和字符串的可选变量
【发布时间】:2013-08-06 01:21:25
【问题描述】:

我想问一下在Excel中的VBA中是否有可能将部分代码存储在例如字符串中,我的意思是在下面的示例中显示(此代码不起作用):

Sub newMacro()

Dim wb As Workbook
Dim ws As Worksheet
Dim sAdditional As String

Dim rngWhereCount_1 As Range
Dim rngWhereCount_2 As Range

Dim iCellValue As Integer
Dim i as integer

Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)

Set rngWhereCount_1 = ws.Columns(1)
Set rngWhereCount_2 = ws.Columns(2)

For i = 1 To 10
    If (i = 1) Or (i = 2) Then
        sAdditional = ", rngWhereCount_2, i"
    Else
        sAdditional = ""
    End If

    iCellValue = Application.WorksheetFunction.CountIfs(rngWhereCount_1, 1 & sAdditional)
Next i


End Sub

所以问题是是否有一种简单而聪明的方法来声明 sAdditional(可能不是字符串),而是让它在循环内成为可选的,同时 sAdditional 在里面包含 Range 和字符串......

提前致谢! P.

【问题讨论】:

  • 我知道CountIf 函数接受RangeRange 接受String 所以那里可能有一些东西......因为你可以存储额外的范围作为Strings,只需致电Range(strValue)...
  • 问题是sAdditional并不总是RangeString,而是这两者的结合。

标签: excel vba


【解决方案1】:

我认为不可能有一个同时包含StringRange 的变量。假设您正在计算正数,您可以执行以下操作:

  • 定义一个字符串变量strCriterion2。那么strCriterion2 = IIf(i=1 or i=2,"i",">=0"). 所以strCriterion2 等于"i"">=0",这取决于i 的值。
  • 将您的CountIfs 写为CountIfs(rngWhereCount_1, 1, rngWhereCount_2, strCriterion2)

这个想法是,当我们不希望激活第二个标准时,我们输入一个我们知道对该范围内的所有条目都有效的标准。因此,如果所有条目都是正数,那么如果我们强加">=0",第二个标准将被取消。如果您想包含负数,您可以使用">=-2.2251E-308" 而不是">=0"(也取决于您拥有的excel 版本,我给出的数字对于Excel 2003 是最低的)。

我希望以上内容有所帮助。

【讨论】:

  • 是的,我想这是一个解决方案,但是,这只是一个示例,我有它与字符串,但它可以与 strCriterion2="<> "" " 一起工作,假设所有变量都不为空,所以谢谢很多!有帮助,干杯!
  • 很高兴知道它对我有帮助,感谢您的评论,也可以为我学习一些东西!
  • 抱歉打错了,应该是strCriterion2="<>",谢谢合作!
猜你喜欢
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多