Macro Error

S

sross002

Hello,

Can someone please help?

I get a COMPILE ERROR on my MAC. I am running OSX

It says: my sub or function is not defined.

Here is my Code:

Sub Picture1_Click()

Dim chipcnt As Variant
Dim MyRange As Range


'Clear the chip distribution cells
Set MyRange = Worksheets("Calculator").Range("F3:F11")
MyRange.Clear

'Loop through each chip denomination
For i = 3 To 11

newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime


'Determine the maximum number each player can have
chipcnt = Cells(i, 2).Value / Cells(14, 4).Value
'Round the results down
If Round(chipcnt, 0) > chipcnt Then
chipcnt = Round(chipcnt, 0) - 1
Else
chipcnt = Round(chipcnt, 0)
End If


'Grab the desired stack size and determine the current stack size
Cells(i, 6).Value = chipcnt
stack = stack + chipcnt * Cells(i, 3).Value

GoodStack = Cells(15, 4).Value


'Adjust the chip distribution to meet the desired stack size
If stack > GoodStack Then
j = i
Do While stack > GoodStack
Do While stack - GoodStack >= Cells(j, 3).Value
If Cells(j, 6).Value = 0 Then
Exit Do
End If
Cells(j, 6).Value = Cells(j, 6).Value - 1
stack = stack - Cells(j, 3).Value
Loop
j = j - 1
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime

Loop
Exit For
End If



Next

'Warn if the user does not have enough chips to reach stack size
If stack < GoodStack Then
MsgBox "You do not have enough chips to generate this stack size.",
vbCritical, "Stack too big!"
MyRange.Clear
Cells(15, 4).Activate

End If

End Sub





What are my errors?
 
J

Jim Cone

If you are using Office 2008, then you are out of luck.
It does not support VBA.
Otherwise, declare all ten variables and try running the code again.
--
Jim Cone
Portland, Oregon USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)




"sross002"
wrote in message
Hello,
Can someone please help?
I get a COMPILE ERROR on my MAC. I am running OSX
It says: my sub or function is not defined.
Here is my Code:

Sub Picture1_Click()

Dim chipcnt As Variant
Dim MyRange As Range

'Clear the chip distribution cells
Set MyRange = Worksheets("Calculator").Range("F3:F11")
MyRange.Clear

'Loop through each chip denomination
For i = 3 To 11
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
'Determine the maximum number each player can have
chipcnt = Cells(i, 2).Value / Cells(14, 4).Value
'Round the results down
If Round(chipcnt, 0) > chipcnt Then
chipcnt = Round(chipcnt, 0) - 1
Else
chipcnt = Round(chipcnt, 0)
End If


'Grab the desired stack size and determine the current stack size
Cells(i, 6).Value = chipcnt
stack = stack + chipcnt * Cells(i, 3).Value
GoodStack = Cells(15, 4).Value
'Adjust the chip distribution to meet the desired stack size
If stack > GoodStack Then
j = i
Do While stack > GoodStack
Do While stack - GoodStack >= Cells(j, 3).Value
If Cells(j, 6).Value = 0 Then
Exit Do
End If
Cells(j, 6).Value = Cells(j, 6).Value - 1
stack = stack - Cells(j, 3).Value
Loop
j = j - 1
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Loop
Exit For
End If
Next

'Warn if the user does not have enough chips to reach stack size
If stack < GoodStack Then
MsgBox "You do not have enough chips to generate this stack size.",
vbCritical, "Stack too big!"
MyRange.Clear
Cells(15, 4).Activate
End If
End Sub

What are my errors?
 
J

JE McGimpsey

Hmmm.. If you're using Office 2003 on your Mac (not MAC), then you're
running it in a Windows version (i.e., via Parallels or virtual machine
or BootCamp), so it should compile.

If you actually are trying to compile it in Office 2004 (the Mac
version) instead, Mac VBA is at version 5, which doesn't include the
Round() function. Either supply your own or use Application.Round (note
however, that the XL function handles a 5 in the terminal digit
differently than the VBA function does:

=ROUND(0.5, 0) ==> 1

?Round(0.5, 0) ==> 0
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top