按位置从数组中删除元素

Fub*_*dis 3 arrays excel vba

我试图弄清楚如何从数组中删除某个元素(如果它位于某个位置)。我们还需要调整数组的大小。为了使示例更简单,让我们尝试删除数组中位置一的任何颜色(“绿色”、“蓝色”、“红色”)。

Sub Example()

Dim pos
colors = Array("Green", "Blue", "Red")

pos = 1

colors(pos).Delete 'obviously this doesn't work but what would the correct protocol be?

 End Sub
Run Code Online (Sandbox Code Playgroud)

bre*_*tdj 6

您还可以使用Filter(如果值是唯一的,如本例中所示,任何匹配Green 的字符串都会被删除)。

Colors = Array("Green", "Blue", "Red", "Yellow", "Pink")
Colors = Filter(Colors, Colors(0), False)
Run Code Online (Sandbox Code Playgroud)


Gar*_*ent 5

您可以将特定元素设置为单个空白,并通过TRIM()将其消除:

Sub DropFirstElement()
    Colors = Array("Green", "Blue", "Red")
    Colors(0) = " "
    Mystring = Application.WorksheetFunction.Trim(Join(Colors, " "))
    Colors = Split(Mystring, " ")
End Sub
Run Code Online (Sandbox Code Playgroud)

笔记:

我们使用工作表的Trim()函数而不是 VBA 的Trim()函数来删除多个连续空格。

  • 善用工作表功能的[TRIM功能](https://support.office.com/en-us/article/TRIM-function-410388FA-C5DF-49C6-B16C-9E5630B479F9)将内部双空格减少为单空格VBA 的[修剪函数](https://msdn.microsoft.com/en-us/library/h9wz3dez%28v=vs.90%29.aspx) 不执行的字符。我相信[Join Function](https://msdn.microsoft.com/en-us/library/b65z3h4h%28v=vs.90%29.aspx)默认使用单个空格作为分隔符(即未提供)。 (2认同)