前提・実現したいこと
ここに質問の内容を詳しく書いてください。
VBAのコマンドボタンを押して、数字を入れていき、999という数字が入る、または件数が100件を超えるまで入れた数字をセルA1からA2,A3 という風に入れていき、バブルソートを使って入れた数字を昇順に並び替えた後、再びセルA1からA2,A3と入れていくプログラムを作っているのですが、なぜかうまくいかないです。なので、どこをどう直したら思い通りに動いてくれるか教えてください。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
VBA
Private Sub CommandButton1_Click()
Dim T As Integer
Dim num As Integer
Do
T = InputBox(" 点数を入力してください ") num = num + 1 Cells(num, 1) = T ' セル A1、A2、A3という風に下へ順番に点数を入れていく
Loop Until T = 999 Or num > 100 '999が入るか点数の入力が 100 件を超えるまで入力
If Cells(num, 1) = 999 Then
Cells(num, 1).Clear
End If '999 はデータに含まないので消す
Dim n As Long
n = Cells(1, 1).Cells(num, 1) ' ソート対象のデータ数を特定
Dim S() As Long
ReDim S(n) ' 数列を格納する配列の準備
Dim i As Long
For i = 1 To n
S(i) = Cells(i, 1)
Next i ' ソート対象の数字を配列に格納
Dim x As Long
x = n - 1
Do While x > 0 ' 隣り合う数字を比較して並び替え
For i = 1 To x
If S(i) > S(i + 1) Then Dim tmp As Long ' 一次変数を利用して値を入れ替える tmp = S(i) S(i) = S(i + 1) S(i + 1) = tmp End If Next i x = x - 1
Loop
For i = 1 To n
Cells(i, 1) = S(i)
Next i ' ソート結果を再びセルA1、 A2 、 A3 という風に下へ順番に入れていく
End Sub
試したこと
https://vbabeginner.net/配列のソート(バブルソート)/ このURL先に書いてあるコードを参考に作ったのですがうまく動きませんでした。
補足情報(FW/ツールのバージョンなど)
VBA初心者なので、猿でもわかるように説明していただければ嬉しいです。