我听说过很多关于.Select在Excel VBA 中使用的可理解的憎恶,但我不确定如何避免使用它.我发现如果我能够使用变量而不是Select函数,我的代码将更加可重用.但是,ActiveCell如果不使用,我不确定如何引用事物(如等)Select.
我发现这篇关于范围的文章和这个例子关于不使用select的好处却找不到怎么样的东西?
我在下面有一些代码,应该检查一个值是否在数组中.
Sub test()
vars1 = Array("Examples")
vars2 = Array("Example")
If IsInArray(Range("A1").Value, vars1) Then
x = 1
End If
If IsInArray(Range("A1").Value, vars2) Then
x = 1
End If
End Sub
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
Run Code Online (Sandbox Code Playgroud)
如果单元格A1中包含单词Examples出于某种原因两者的IsInArray检测为现有两个数组时,它应该只找到它存在的在vars1阵
我需要更改什么才能使我的IsInArray功能完全匹配?
我试图找到一种方法:
但是,我想不出一种方法来遍历一列并获取这些值,并将它们存储在一个数组中。我已经浏览了 Stack Overflow 和谷歌,但没有找到成功的解决方案。
在此先感谢您的帮助。
Sub collectNums()
Dim eNumStorage() As String ' initial storage array to take values
Dim i as Integer
Dim j as Integer
Dim lrow As Integer
lrow = Cells(Rows.Count, "B").End(xlUp).Row ' The amount of stuff in the column
For i = lrow To 2 Step -1
If (Not IsEmpty(Cells(i, 2).Value)) Then ' checks to make sure the value isn't empty
i = eNumStorage ' I know this isn't right
Next i …Run Code Online (Sandbox Code Playgroud) 来自问题Excel宏过滤器基于多个单元格值并使用从VBA中的范围创建数组的答案
我试图使用数组创建一个广泛的自动过滤器.但是,它只使用数组范围内的最新值.
如何使用过滤器中的所有值?
Sub Test()
Dim DirArray As Variant
DirArray = [A2:A5].Value2
ActiveSheet.range("$B$1:$C$10").AutoFilter Field:=2, Operator:=xlFilterValues, Criteria1:=DirArray
End Sub
Run Code Online (Sandbox Code Playgroud) Sub GMC()
strike = 100
cap = 120
part = 3.25
KO = 60
For i = 1 To 1000
exp(i) = Worksheets("Speeder premium").Cells(i + 1, 32)
If exp(i) >= cap Then
cash = strike + (part * (cap - strike))
ElseIf exp(i) >= strike And exp(i) < cap Then
cash = strike + (part * (exp(i) - strike))
ElseIf exp(i) < strike And exp(i) >= KO Then
cash = strike
ElseIf exp(i) < strike And exp(i) < KO Then …Run Code Online (Sandbox Code Playgroud)