ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Subscript out of Range (https://www.excelbanter.com/excel-programming/358230-subscript-out-range.html)

Jon[_22_]

Subscript out of Range
 
Hey, this seems so simple but I've been staring at this code for an
hour or so and can't figure out what's wrong. I'm a new VBA
programmer, so forgive me if this is a really dumb question.

I keep getting Error 9 - Subscript out of range for this Sub. It
happens on the first time through the loop, on this line:
dealercard(cardnum).Picture = images(10).Picture

I'm not sure why at that point the array index wouldn't be out of
range, but if you can help, please do. Here's the code (sorry its
long):

---------------------------------------------------------------------------------------

Private Sub CommandButton1_Click()
Dim images(1 To 13) As Image
Dim cardnum, total, house As Integer
Dim result As String
Dim dealercard() As Image
Dim playercard() As Image

Set images(1) = New Image
Set images(2) = New Image
Set images(3) = New Image
Set images(4) = New Image
Set images(5) = New Image
Set images(6) = New Image
Set images(7) = New Image
Set images(8) = New Image
Set images(9) = New Image
Set images(10) = New Image
Set images(11) = New Image
Set images(12) = New Image
Set images(13) = New Image

images(1).Picture = imgTwod.Picture
images(2).Picture = imgThreed.Picture
images(3).Picture = imgFourd.Picture
images(4).Picture = imgFived.Picture
images(5).Picture = imgSixd.Picture
images(6).Picture = imgSevend.Picture
images(7).Picture = imgEightd.Picture
images(8).Picture = imgNined.Picture
images(9).Picture = imgTend.Picture
images(10).Picture = imgJackd.Picture
images(11).Picture = imgQueend.Picture
images(12).Picture = imgKingd.Picture
images(13).Picture = imgAced.Picture



result = vbYes

Do Until result = vbNo

house = Int(13 * Rnd()) + 1

For cardnum = 1 To 7

If house = 1 Then
dealercard(cardnum).Picture = images(1).Picture
house = 2
ElseIf house = 2 Then
dealercard(cardnum).Picture = images(2).Picture
house = 3
ElseIf house = 3 Then
dealercard(cardnum).Picture = images(3).Picture
house = 4
ElseIf house = 4 Then
dealercard(cardnum).Picture = images(4).Picture
house = 5
ElseIf house = 5 Then
dealercard(cardnum).Picture = images(5).Picture
house = 6
ElseIf house = 6 Then
dealercard(cardnum).Picture = images(6).Picture
house = 7
ElseIf house = 7 Then
dealercard(cardnum).Picture = images(7).Picture
house = 8
ElseIf house = 8 Then
dealercard(cardnum).Picture = images(8).Picture
house = 9
ElseIf house = 9 Then
dealercard(cardnum).Picture = images(9).Picture
house = 10
ElseIf house = 10 Then
'error occurs at this line
dealercard(cardnum).Picture = images(10).Picture
house = 10
ElseIf house = 11 Then
dealercard(cardnum).Picture = images(11).Picture
house = 10
ElseIf house = 12 Then
dealercard(cardnum).Picture = images(12).Picture
house = 10
ElseIf house = 13 Then
dealercard(cardnum).Picture = images(13).Picture
house = 1
End If

total = house

cardnum = cardnum + 1

result = MsgBox("You have a total of " & total & "." & Chr(13) &
Chr(13) & "Do you want another card?", vbYesNo, "Total")

Next

Loop

End Sub


Tom Ogilvy

Subscript out of Range
 
I don't see any statement that dimensions dealercard (or playercard either)

also, if you are looping over cardnum, then why are you doing

Cardnum = cardnum + 1
inside the loop?

Redim DealerCard(1 to 7)

--
Regards,
Tom Ogilvy


"Jon" wrote:

Hey, this seems so simple but I've been staring at this code for an
hour or so and can't figure out what's wrong. I'm a new VBA
programmer, so forgive me if this is a really dumb question.

I keep getting Error 9 - Subscript out of range for this Sub. It
happens on the first time through the loop, on this line:
dealercard(cardnum).Picture = images(10).Picture

I'm not sure why at that point the array index wouldn't be out of
range, but if you can help, please do. Here's the code (sorry its
long):

---------------------------------------------------------------------------------------

Private Sub CommandButton1_Click()
Dim images(1 To 13) As Image
Dim cardnum, total, house As Integer
Dim result As String
Dim dealercard() As Image
Dim playercard() As Image

Set images(1) = New Image
Set images(2) = New Image
Set images(3) = New Image
Set images(4) = New Image
Set images(5) = New Image
Set images(6) = New Image
Set images(7) = New Image
Set images(8) = New Image
Set images(9) = New Image
Set images(10) = New Image
Set images(11) = New Image
Set images(12) = New Image
Set images(13) = New Image

images(1).Picture = imgTwod.Picture
images(2).Picture = imgThreed.Picture
images(3).Picture = imgFourd.Picture
images(4).Picture = imgFived.Picture
images(5).Picture = imgSixd.Picture
images(6).Picture = imgSevend.Picture
images(7).Picture = imgEightd.Picture
images(8).Picture = imgNined.Picture
images(9).Picture = imgTend.Picture
images(10).Picture = imgJackd.Picture
images(11).Picture = imgQueend.Picture
images(12).Picture = imgKingd.Picture
images(13).Picture = imgAced.Picture



result = vbYes

Do Until result = vbNo

house = Int(13 * Rnd()) + 1

For cardnum = 1 To 7

If house = 1 Then
dealercard(cardnum).Picture = images(1).Picture
house = 2
ElseIf house = 2 Then
dealercard(cardnum).Picture = images(2).Picture
house = 3
ElseIf house = 3 Then
dealercard(cardnum).Picture = images(3).Picture
house = 4
ElseIf house = 4 Then
dealercard(cardnum).Picture = images(4).Picture
house = 5
ElseIf house = 5 Then
dealercard(cardnum).Picture = images(5).Picture
house = 6
ElseIf house = 6 Then
dealercard(cardnum).Picture = images(6).Picture
house = 7
ElseIf house = 7 Then
dealercard(cardnum).Picture = images(7).Picture
house = 8
ElseIf house = 8 Then
dealercard(cardnum).Picture = images(8).Picture
house = 9
ElseIf house = 9 Then
dealercard(cardnum).Picture = images(9).Picture
house = 10
ElseIf house = 10 Then
'error occurs at this line
dealercard(cardnum).Picture = images(10).Picture
house = 10
ElseIf house = 11 Then
dealercard(cardnum).Picture = images(11).Picture
house = 10
ElseIf house = 12 Then
dealercard(cardnum).Picture = images(12).Picture
house = 10
ElseIf house = 13 Then
dealercard(cardnum).Picture = images(13).Picture
house = 1
End If

total = house

cardnum = cardnum + 1

result = MsgBox("You have a total of " & total & "." & Chr(13) &
Chr(13) & "Do you want another card?", vbYesNo, "Total")

Next

Loop

End Sub



Jon[_22_]

Subscript out of Range
 
Well, playercard is going to come later in the program, that's why I
haven't used it.

Also, at first I was going to control the loop using cardnum = cardnum
+ 1 but changed it and forgot to take it out.

So, after that out and placing the ReDim dealercard(1 to 7) just inside
the For loop, it's giving me an error onthe same line stating: "Runtime
91: Object variable or With block variable not set".

I apologize again for not being very good with this. Like I said, I'm
a newbie.


Jon[_22_]

Subscript out of Range
 
Nevermind, I got it. I had to set all of the dealercards as New
Images. Thanks for your help.


Tom Ogilvy

Subscript out of Range
 
Doing that is a waste of time.

--
Regards,
Tom Ogilvy

"Jon" wrote in message
ups.com...
Nevermind, I got it. I had to set all of the dealercards as New
Images. Thanks for your help.





All times are GMT +1. The time now is 12:03 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com