2017-12-06 12 views
0

配列を使用して2つのテキストボックスから入力を取得し、リストを含むメッセージボックスを作成しようとしています。フォームを開くと、リストに追加する「名前の数」が表示され、その番号が保持されます。名前の数が5に達するまで「名前を追加」をクリックします。次に、リストがいっぱいであることを示すメッセージボックスがポップアップ表示されます。ランタイムエラーが発生する - 範囲外のスクリプトを出力するAccess VBA

Option Compare Database 
Option Explicit 

Dim intItems As Integer 

Dim strFName() As String, strLName() As String 



Private Sub Form_Load() 
intItems = Val(InputBox("How many names?", "Name Count")) 
Do While intItems <= 0 
MsgBox "Please provide a number greater than 0", vbCritical, "Correct Value 
Required" 
intItems = Val(InputBox("How many names do you have?", "Name List")) 
Loop 
ReDim strFName(intItems - 1) 
End Sub 


Private Sub cmdAddName_Click() 
Dim intI As Integer 
If IsNull(Me.txtFirstName.Value) Or IsNull(Me.txtLastName.Value) = True Then 
MsgBox "There must be values for both First and Last names", vbCritical, 
"Data Entry Error" 
Else 
If strFName(intItems - 1) <> "" Then 
MsgBox "Sorry, the list is full!" 
Me.txtFirstName.Value = Null 
Me.txtLastName.Value = Null 
Else 
For intI = 0 To intItems - 1 
If strFName(intI) = "" Then 
strFName(intI) = Me.txtFirstName.Value 
strLName(intI) = Me.txtLastName.Value 
Me.txtFirstName.Value = Null 
Me.txtLastName.Value = Null 
Exit For 
End If 
Next 
End If 
End If 
End Sub 

私はstrFName(intItems - 1)が」の「範囲外のスクリプト」ランタイムエラーを取得<> 『は』次に誰理由として任意のアイデアがありますか?

+0

のデータ型をリセットするのを忘れて、常に投稿するときにコードをインデントすることができます - 私たちは、その後何が起こっているのか見することがはるかに簡単です。 –

+0

「下付き文字が範囲外です」エラーは、どの行にありますか? – YowE3K

+0

strFName(intItems - 1)<> "" Then –

答えて

0

あなたは他の配列をREDIM、配列

+0

しかし、** strLNameにアクセスする前にエラーが発生しています。 (それは修正する必要があるかもしれませんが、問題の原因ではありません) – YowE3K

+1

ReDim strFName(intItems - 1)を\tに変更してください ReDim strFName(intItems - 1)をString:ReDim strLName(intItems - 1)as String –

+0

FWIW、 'ReDim'の' As String'部分はオプションです。 'ReDim'はデータ型を変更することができないので、VBAは元の' Dim'に従ったデータ型を使用して再度データ型のアドバイスを行いません。 – YowE3K

関連する問題