繁体   English   中英

VBA范围和字符串混淆

[英]VBA Range and String confusion

认为我在范围和字符串之间的区别上有问题。 试图让它在范围内的单元格中搜索任何获胜者,然后吐出一个点值。

Sub it()
Dim Round1 As Range
Dim Round2 As Range
Dim lngCnt As Long
Dim Winner() As String
Dim pointSum As Double
ReDim Winner(1 To 4)
    Winner(1) = "Mohler"
    Winner(2) = "Scotter"
    Winner(3) = "DKGAY"
    Winner(4) = "Lassie"
Set Round1 = Range("L3,L11,L22,L32").Text
For Each Winner In Round1
lngCnt = lngCnt + 10
Winner(lngCnt) = pointSum.Value
Next
MsgBox pointSum.Value    
End Sub

您将需要两个循环:

Sub it()
Dim Round1 As Range
Dim Round2 As Range
Dim lngCnt As Long
Dim Winner() As String
Dim pointSum As Double
Dim rng As Range
Dim i As Long
ReDim Winner(1 To 4)
    Winner(1) = "Mohler"
    Winner(2) = "Scotter"
    Winner(3) = "DKGAY"
    Winner(4) = "Lassie"
Set Round1 = Range("L3,L11,L22,L32")
For Each rng In Round1
    For i = 1 To UBound(Winner)
        If rng.Value = Winner(i) Then
            pointSum = pointSum + 10
            Exit For
        End If
    Next i
Next rng

MsgBox pointSum.Value
End Sub

第一个循环通过范围,第二个循环通过字符串数组。 当找到相等位置​​时,将增加10。

只有一个循环的解决方案,我不在电脑旁,所以无法测试或使用代码标签对其进行格式化

Sub Main
 Dim Round1 As Range, rng As Range
 Dim Winners As Variant
 Dim pointSum As Double

 Winners =Array ("Mohler","Scotter","DKGAY", "Lassie")
 Set Round1 = Range("L3,L11,L22,L32")
 WinnersStr = "-" & Join (Winners, "-") & "-"
 For Each rng In Round1
     If Instr(WinnersStr, "-" & rng.Value & "-") > 0 Then pointSum = pointSum + 10
Next rng

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM