gpt4 book ai didi

vba - 添加到带有 select case 的数组

转载 作者:行者123 更新时间:2023-12-03 02:52:57 25 4
gpt4 key购买 nike

希望有人能帮忙解决一个令人费解的问题。

我有一个 Excel 工作表,其中有很多行需要移动到不同的工作表。

我有一个 select case 语句,根据第一列中的数字是否与 case 语句匹配,将 3 个变量设置为 true 或 false。这工作正常,但我现在想在值为 true 时向数组添加一个名称。

select case语句如下:

While LContinue
If LRow = Lastrow Then
LContinue = False
Else
Select Case Range("A" & LRow).Value
Case 30 To 39
MainSheet = True
'Tabs(0) = "Main"
Case 40 To 49
SecondSheet = True
'Tabs(1) = "Second"
Case 111 To 112
ThirdSheet = True
'Tabs(2) = "Third"
End Select
LRow = LRow + 1
End If
Wend

这用于查看是否需要添加工作表。要添加工作表,我使用以下代码:

For i = LBound(Tabs) To UBound(Tabs)
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Tabs(i)
Next i

所以我想知道的是如何将工作表名称添加到数组中,但前提是选择案例中的值为 true。

任何帮助将不胜感激。

谢谢

最佳答案

Why not use worksheet function 'CountIfs'?

它依赖于多个条件,并且您不需要任何循环,因此您的代码将运行得更快。

CountIfs(testedRange, ">=30", testedRange, "<=39")

...计算“testedRange”中大于等于 30 且小于等于 39 的值的数量。如果至少有一个,那么只需添加您的工作表即可。没有循环,没有数组,不需要额外的变量。 HTH。

Public Sub test()
Dim testedRange As Range
Dim Lastrow As Long

Lastrow = 10
Set testedRange = ActiveSheet.Range("A1:A" & Lastrow)

With Application.WorksheetFunction
If .CountIfs(testedRange, ">=30", testedRange, "<=39") > 0 Then
ThisWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Main"
End If

If .CountIfs(testedRange, ">=40", testedRange, "<=49") > 0 Then
ThisWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Second"
End If

If .CountIfs(testedRange, ">=111", testedRange, "<=112") > 0 Then
ThisWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Third"
End If
End With
End Sub

关于vba - 添加到带有 select case 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com