Excel宏 - 选择案例
问题描述:
我还没有任何人发布过此问题,如果我错了,请不要开枪! :PExcel宏 - 选择案例
我有一个怪物,如果其他结构约300-400行。有了一个案例结构,我可以把它削减到100或更少。麻烦的是,你只能找到具有固定值而非单元格值的选择案例。
代码是做什么的?
C17-C22可以给出一个值,1或0.如果该值为1,则将文本复制到工作表中,如果该值为0,则不会发生任何事情。
Select case ???
Case "C17" = 1
show me text!!
Case "C18" = 1
show me text!!
...
End select
我知道我可以用不同的选择的情况下
Select case "C17".value
Case 1
show me text!!
End select
...
做,但我觉得应该可以做在一个大的选择案例,而不是多重选择个案。
非常感谢!
答
这听起来像你让自己的生活变得更加复杂试图鞋拔子您的问题到Select Case
构造。 Select Case
,顺便说一句,是差不多跟If Else
完全一样;区别主要是化妆品,你原则上可以use them interchangeably。
为什么不能是这样的:
Dim i As Long
Dim varFlags As Variant
Dim varText As Variant
' Load flags from sheet.
varFlags = Range("C17:C22")
' Load text associated with each flag. Here I'll just hardcode them.
varText = Array("Text17", "Text18", "Text19", "Text20", "Text21", "Text22")
For i = LBound(varFlags, 1) To UBound(varFlags, 1)
If varFlags(i, 1) = 1 Then
'It's a 1. Copy the relevant text.
'Here I just MsgBox it.
MsgBox varText(i - 1) 'Sorry for the i-1, my varText array is zero-based!
Else
'It's not a 1. Do nothing.
End If
Next i
答
选择语句是为了区分一个变量可以有的不同值。即Select Case
是等式的左边,下面的等式是等式右边的不同。我认为你的任务不是Select case
如果每个细胞的情况都是相同的,循环遍历你的范围并为每个细胞做选择。但是如果你只检查,如果该细胞是0或1,则使用if
喜欢的东西:
For each c in SourceRange
if c.value Then
...
end if
Next c
是什么每个案例做?你可以给任何人提供示例代码来了解整体情况吗? – shahkalpesh 2011-05-02 07:33:25
@Shahk,我已经稍微编辑了我的代码。每个案例只是复制/粘贴文本,但我知道如何做到这一点。 – CustomX 2011-05-02 07:38:45