首页 > 解决方案 > 从整数数组中删除元素

问题描述

我正在尝试使用数组模拟多甲板绘图。发完第一张牌后,如何从牌组数组中删除这个随机数(“p1”),这样我就可以拥有一个包含 51 个元素的数组而无需选择第一个元素?

到目前为止我就是这样做的

Dim deck(1 To 52) As Variant
Dim p1 As Integer


For i = 1 To 52

    deck(i) = i

Next

p1 = Int((UBound(deck) * Rnd) + 1)

标签: excelvba

解决方案


根据我的评论,这里有一个关于如何ArrayList为此目的使用 an 的示例:

Sub preflop()

Dim arr As Object: Set arr = CreateObject("System.Collections.ArrayList")
Dim item As Variant, ResultArr As Variant
Dim i As Long, p1 As Long

With arr

    'Load all variables
    For i = 1 To 52
        .Add i
    Next i

    'Get random number
    p1 = ((.Count - 1) - 1) * Rnd

    'Remove the random card from the deck
    .Remove (p1)

    'To use an array in further code somewhere
    ResultArr = .Toarray

End With

End Sub

AFAIK 使用ArrayList更多本机Collection将打开使用方法的方法,例如Toarray将 arrayList 导出到数组而无需昂贵的Redim循环。

如果您不需要以数组结尾,则不妨使用该Collection方法。


推荐阅读