有两个数组,a()、b(),我要把b中的记录插入到a中。就是比如在a数组中有0,1,2,3,4,5,6,7,8,9,我要把b数组中的数据5和2插入到a数组中,并且要在a数组的3后面插入“5”,在a数组的7后面插入“2”,插入后的结果就是0,1,2,3,5,4,5,6,7,2,8,9。我就是已知b数组中需要插入的数据和插入的位置都知道,这个怎样写?

解决方案 »

  1.   

    首先需要数组A是一个动态数组,这样才能改变数组长度。
    然后循环A,从头到尾,到了插入的地方就将该处的元素向后移动一个位置:
    ...
    IF 到了你要插入的位置 THEN
    A(I+1)=A(I)
    A(I)=B(L)
    L=L+1
    END IF
    ...
      

  2.   

    SORRY 犯了一个错误,A要移动的是后面所有的元素,不只是一个
    ... 
    IF 到了你要插入的位置 THEN 
       FOR M=I TO UBOUND(A)
        A(I+1)=A(I) 
       NEXT
     A(I)=B(L) 
     L=L+1 
    END IF 
    ...
      

  3.   

    已知A(10)For i = 0 To 9 '模拟一组数 0-9的 
    a(i) = i 
    Print a(i) & ","; 
    Next i 然后写插入记录的代码该怎么写?
      

  4.   

    For i = 0 To 10If m < a(i) And n = 0 Then'M是要插入记录的位置,S是要插入的记录数
    b(i) = S
    n = n + 1
    Else
    b(i) = a(i - n)
    End If
    Next i
    If n = 0 Then b(i - 1) = m这段代码只能插入一个记录,我想插入多条记录,而插入记录时,是已知插入记录的位置,将数据插入进去的,这段代码该如何修改?
      

  5.   

    A为动态数组,对B进行循环,而不是对A
    对于B中每个要插入的值和位置,对A做一次改动
    改动的经过是这样的:
      先把A数组增大1 用 REDIM A(UBOUND(A)+1)
    然后把插入位置处的值都往后移动,循环来做,移动完成后,把空下来的那个位置放插入的值.重复上面直到B中数全部被插入到A中
      

  6.   

    那就用最笨的方法
    生成个新的数组 总可以了吧
    Private Sub Command1_Click()
    Dim a(10)
    For i = 0 To 9   '创建数组a
    a(i) = i
    Next iFor i = 0 To 3   '提取出0-3
    s = s & i & ","
    Next is = s & "5" & vbCrLf ' 后面加上5For i = 4 To 7     '提取4-7
    s = s & i & ","
    Next is = s & "2" & ","   '后面加上2For i = 8 To 9     '最后提取剩余
    s = s & i & ","
    Next i
    b = Split(s, ",")  '分割这个数据“ 0,1,2,3,5,4,5,6,7,2,8,9,”For i = 0 To UBound(a)  '循环打印出
    ss = ss & b(i) & vbCrLf
    Next iPrint ss
    End Sub
      

  7.   

    这类应用建议将数组改成Collection对象,Add方法可以指定插入位置。
      

  8.   

    Option Explicit
    '使用 API 快速插入数组元素:Private Declare Sub CopyMemory Lib "kernel32" _
    Alias "RtlMoveMemory" (Destination As Any, _
    Source As Any, ByVal Length As Long)Private Sub Command1_Click()'这里是数组的准备过程
    Dim a() As Integer, b(0 To 1, 0 To 2) As Integer
    Dim i As Integer, n As Integer, j As Integern = 9
    ReDim a(n)
    For i = 0 To n
        a(i) = i
    Next ib(0, 0) = 3  '数据要插入的位置,5 插在 3 后
    b(1, 0) = 5  '第一个数据
    b(0, 1) = 7  '数据要插入的位置,2 插在 7 后
    b(1, 1) = 2  '第二个数据
    b(0, 2) = 9  '数据要插入的位置,4 插在 9 后
    b(1, 2) = 4  '第三个数据'插入过程
    ReDim Preserve a(UBound(a) + UBound(b, 2) + 1)For i = 0 To UBound(b, 2)
        If b(0, i) < n Then CopyMemory a(b(0, i) + i + 2), a(b(0, i) + i + 1), (n + i - b(0, i)) * Len(a(0))
        a(b(0, i) + i + 1) = b(1, i)
    Next i'打印结果
    For i = 0 To UBound(a)
        Debug.Print a(i);
    Next i
    End Sub 0  1  2  3  5  4  5  6  7  2  8  9  4