RICVBA 发表于 2014-1-26 11:28:16

Redim阵列

我想从两个数组中删除重复的x及其相关的y,但我收到了以下错误:
&nbsp&nbsp 阵列已标注尺寸
什么'我的密码有问题吗
假设我有这些值,我想删除被复制的第三行[(X2)和Y(2)]:Dim x(0到3)作为Double,Y(0到三)作为doug 3)=0.12
Y(3)=0.86Private Sub Remove_Duplicate(X() as double,Y() as double )
Dim i As Long, elem As Variant
For Each elem In x
   For i = elem.Index + 1 To UBound(x)
      x(i - 1) = x(i)
         ReDim Preserve x(i - 1)
             y(i - 1) = y(i)
               ReDim Preserve y(i - 1)
   Next
Next elem
End Sub

同年同月同日生 发表于 2014-1-27 02:41:37

您无法在多个阵列中重新定义第一个维度,只能重新定义第二个维度。以下是在删除重复后重新创建新阵列的方法:
'make sure you checked in Tools->Options->General->Error trapping->'Break on Unhandled Errors'
Sub TestRemove_Dupes()
Dim x(0 To 3) As Double, y(0 To 3) As Double
x(0) = 0.29
y(0) = 0.89
x(1) = 0.34
y(1) = 0.44
x(2) = 0.29
y(2) = 0.89
x(3) = 0.12
y(3) = 0.86
Dim coll As New Collection
Dim i, j
Dim itm(0 To 1)
For i = 0 To UBound(x)
itm(0) = x(i): itm(1) = y(i)
On Error Resume Next
coll.Add itm, CStr(x(i)) & CStr(y(i))
Next
ReDim ar(0 To coll.Count - 1, 0 To 1)
'colllection items starts from 1
For i = 1 To coll.Count
ar(i - 1, 0) = coll.item(i)(0): ar(i - 1, 1) = coll.item(i)(1)
Next
For i = 0 To UBound(ar)
Debug.Print ar(i, 0) & " | " & ar(i, 1)
Next
End Sub

火影灌水 发表于 2014-1-28 07:50:07


嗨,Fixo。感谢您高效的解决方案。本人'不过,我很抱歉反应太晚。我有点忙,有一些事情要做
真诚的,罗伯特

随心所欲 发表于 2014-1-28 11:17:50

祝你有愉快的一天

为什么 发表于 2014-1-29 01:59:06

或者,您可以声明在主Sub中没有维度的向量(调用“Remove\u Duplicate”Sub的向量),并立即用初始已知维度重新命名它们(在此阶段不需要“Preserve”关键字)。然后用“重新命名”;保留“;移位值循环完成后,子对象内的关键字。如下所示Sub Main()
Dim X() As Double, Y() As Double
ReDim X(0 To 3)
ReDim Y(0 To 3)
X(0) = 0.29
Y(0) = 0.89
X(1) = 0.34
Y(1) = 0.44
X(2) = 0.29
Y(2) = 0.89
X(3) = 0.12
Y(3) = 0.86
Call Remove_Duplicate(X, Y, 2)
End Sub
Private Sub Remove_Duplicate(X() As Double, Y() As Double, MyIndex As Long)
Dim i As Long
Dim UbX As Integer
UbX = UBound(X) ' we'll assume the same dimension for Y()
For i = MyIndex + 1 To UbX
    X(i - 1) = X(i)
    Y(i - 1) = Y(i)
Next
ReDim Preserve Y(UbX - 1)
ReDim Preserve X(UbX - 1)
End Sub
它'肯定没有Fixo有趣;他的一条建议(他的知识总是让我惊讶)。和don#039;我不知道效率是否较低。另一方面,它是#039;它很短,这一直吸引着我。再见

韩妃 发表于 2014-1-29 06:05:31

好球,我喜欢

香甜云尼拿 发表于 2014-1-29 09:12:26

鼓掌;RICVBA,很好的技巧当然,我'我今晚会用的。谢谢,祝你愉快。。。
页: [1]
查看完整版本: Redim阵列