作者shirley82025 (颖)
看板Visual_Basic
标题Re: [VBA ] 请帮我看一下排序的code出了甚麽问题~
时间Sat Jun 21 03:03:26 2008
我後来加了大家建议的Redim a(50)
虽然侦错时没问题
可是执行巨集时"乱数"跟"气泡排序"都没反应
请问是为甚麽呢?
我把後来的式子放在下面
Option Explicit
Option Base 1
Dim i As Integer
Dim a() As Integer
Sub MakeArr()
ReDim a(50)
For i = 1 To 50
a(i) = Int(Rnd * 49 + 1)
Next i
End Sub
Sub BubblingSort()
Dim j As Integer
Dim Temp As Integer
ReDim a(50)
For i = 1 To 49
For j = i + 1 To 50
If a(i) > a(j) Then
Temp = a(j)
a(j) = a(i)
a(i) = Temp
End If
Next j
Next i
End Sub
PS: 我上面的乱数巨集如果成功执行的话,是会产生不重复的数字吗?
我不大确定要怎麽让乱数出现的数字不重复,有人知道吗??
我要的是1~50的乱数
※ 引述《shirley82025 (颖)》之铭言:
: 因为我才刚开始学写VBA,所以很多东西都不是很懂
: 所以这些code都是我从网路找再自己改的,
: 我是想做排序 先写一个可以产生50个一直列乱数的code
: 然後用气泡排序法做排序
: 可是我要执行的时候一直跑出阵列索引超出范围
: 请大家帮我看一下下面的式子到底哪里出了问题
: Option Explicit
: Dim i As Integer
: Dim a() As Integer
: Sub MakeArr()
: For i = 1 To 50
: a(i) = Int(Rnd * 49 + 1)
: Next i
: End Sub
: Sub BubblingSort()
: Dim j As Integer
: Dim TEMP As Integer
: For i = 1 To 49
: For j = i + 1 To 50
: If a(i) > a(j) Then
: TEMP = a(j)
: a(j) = a(i)
: a(i) = TEMP
: End If
: Next j
: Next i
: End Sub
: -->出问题的是a(i) = Int(Rnd * 49 + 1) 跟If a(i) > a(j) Then这两行
: 请问我要怎麽改才不会说我超出范围呢? 先谢谢大家帮忙~
: PS: 如果我只是要有一直列的乱数排序
: 我自己打数字 然後再用上面气泡排序的式子
: 这样可以吗?? 还是有别的方法去排序呢?
: (我知道有快速排序法 可是那个我不知道要怎麽改成我要的样子....)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.165.219.124