Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2836|回复: 2

[已解决]VBA有一个数组A,含有数值2,3,6,8,9,12,14,19,删除一个数

[复制链接]
发表于 2016-3-1 10:12 | 显示全部楼层 |阅读模式
VBA有一个数组A,含有数值2,3,6,8,9,12,14,19,删除一个数

1,假设数组从1开始,

2,把原来数组元素输出

3,可选择数组位置删除一个数

4,把删除一个数后的数组元素输出





最佳答案
2016-3-1 11:25
  1. Sub tt()
  2.   On Error Resume Next
  3.   Dim br
  4.   ar = Array(2, 3, 6, 8, 9, 12, 14, 19)
  5.   p = InputBox("请输入删除数组元素位置")
  6.   If p > UBound(ar) Then
  7.      MsgBox "错误:输入的位置大于元素个数,无法删除"
  8.      Exit Sub
  9.   End If
  10.   k = 1: ReDim br(1 To k)
  11.   For i = 1 To UBound(ar)
  12.      If i <> --p Then
  13.        ReDim Preserve br(1 To k)
  14.        br(k) = ar(i - 1)
  15.        k = k + 1
  16.      End If
  17.   Next
  18.   MsgBox "原数组:" & Join(ar, ",") & vbCrLf & vbCrLf & "删除后数组:" & Join(br, ",")
  19. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-1 11:25 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2.   On Error Resume Next
  3.   Dim br
  4.   ar = Array(2, 3, 6, 8, 9, 12, 14, 19)
  5.   p = InputBox("请输入删除数组元素位置")
  6.   If p > UBound(ar) Then
  7.      MsgBox "错误:输入的位置大于元素个数,无法删除"
  8.      Exit Sub
  9.   End If
  10.   k = 1: ReDim br(1 To k)
  11.   For i = 1 To UBound(ar)
  12.      If i <> --p Then
  13.        ReDim Preserve br(1 To k)
  14.        br(k) = ar(i - 1)
  15.        k = k + 1
  16.      End If
  17.   Next
  18.   MsgBox "原数组:" & Join(ar, ",") & vbCrLf & vbCrLf & "删除后数组:" & Join(br, ",")
  19. End Sub
复制代码

评分

参与人数 1 +6 收起 理由
vbyou127 + 6 来学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-3-1 14:16 | 显示全部楼层

Option Base 1
Private Sub Command1_Click()
  Dim a
  a = Array(2, 3, 6, 8, 9, 12, 14, 19)
  s = "原来的数组:" & vbCrLf
  For i = 1 To UBound(a)
    s = s & a(i) & " "
  Next i
  MsgBox s
  n = CInt(InputBox("请输入要删除第几个数?"))
  For i = n To UBound(a) - 1
    a(i) = a(i + 1)
  Next i
  s = "删除后的数组;" & vbCrLf
  For i = 1 To UBound(a) - 1
    s = s & a(i) & " "
  Next i
  MsgBox s
End Sub

Private Sub Command2_Click()
  Dim a
  a = Array(2, 3, 6, 8, 9, 12, 14, 19)
  Print "原来的数组:"
  For i = 1 To UBound(a)
    Print a(i);
  Next i
  Print: Print
  n = CInt(InputBox("请输入要删除第几个数?"))
  Print "要删除第" & n & "个数:" & a(n)
  For i = n To UBound(a) - 1
    a(i) = a(i + 1)
  Next i
  Print "删除后的数组:"
  For i = 1 To UBound(a) - 1
    Print a(i);
  Next i
  Print
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 01:00 , Processed in 0.350814 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表