Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 02-23-2012, 06:31 AM
tinfanide tinfanide is offline How to reserve an array in a public function? Windows 7 64bit How to reserve an array in a public function? Office 2010 32bit
Expert
How to reserve an array in a public function?
 
Join Date: Aug 2011
Posts: 312
tinfanide is on a distinguished road
Default How to reserve an array in a public function?



Code:
Sub test()

Dim x As Integer

For x = 0 To 3
    MsgBox (ReturnRandomNumber(0, 3, x))
Next x

End Sub

Public Function ReturnRandomNumber(lower As Integer, upper As Integer, turn As Integer) As String
    
    Dim n As Integer, arr() As Variant
    
Redo:
    n = Int((upper - lower + 1) * Rnd + lower)
    
    ReDim Preserve arr(turn)
    
    ''' I want to store every n to check if the random number generated is repeated
    For Each a In arr
        If a = n Then GoTo Redo
    Next a
    
    ''' Within this function, the Array arr() does not store every n
    arr(turn) = n
    ReturnRandomNumber = n
    
End Function
If I move the foreach loop and the array within the sub, it can loop through the array and check if the newly generated random number is repeated.

But it does not work within a public function.
Reply With Quote
  #2  
Old 02-24-2012, 09:44 PM
macropod's Avatar
macropod macropod is offline How to reserve an array in a public function? Windows 7 64bit How to reserve an array in a public function? Office 2010 32bit
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,343
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

From the Word vba help file:

This array is fixed or temporarily locked (Error 10)

You attempted to assign a value to a Variant variable containing an array, but the Variant is currently locked. For example, if your code uses a For Each...Next loop to iterate over a variant containing an array, the array is locked on entry into the loop, and then released at the termination of the loop
...
Use a For...Next rather than a For Each...Next loop to iterate. When an array is the object of a For Each...Next loop, you can read the array, but not write to it.
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #3  
Old 02-27-2012, 06:51 AM
tinfanide tinfanide is offline How to reserve an array in a public function? Windows 7 64bit How to reserve an array in a public function? Office 2010 32bit
Expert
How to reserve an array in a public function?
 
Join Date: Aug 2011
Posts: 312
tinfanide is on a distinguished road
Default

Code:
Sub test()

Dim x As Integer

For x = 0 To 3
    MsgBox (ReturnRandomNumber(0, 3, x))
Next x

End Sub

Public Function ReturnRandomNumber(lower As Integer, upper As Integer, turn As Integer) As String
    
    Dim n As Integer, arr() As Variant
    
Redo:
    n = Int((upper - lower + 1) * Rnd + lower)
    Debug.Print (n)
    
    ReDim Preserve arr(turn)
    
    For a = lower To upper
        If arr(a) <> "" Then
            If arr(a) = n Then GoTo Redo
        Else
            Exit For
        End If
    Next a
    
    arr(turn) = n
    ReturnRandomNumber = n
    
End Function
But the array is still empty every the function restarts. It fails when I want the array that stores every n to check if n is duplicated.
Reply With Quote
Reply



Similar Threads
Thread Thread Starter Forum Replies Last Post
How to reserve an array in a public function? Complex array formula andrei Excel 9 02-03-2012 03:40 AM
How to capture start and ending Ref. Nos. in an array KIM SOLIS Excel 5 09-07-2011 07:43 AM
Look up an array based on user input johnsmb Excel 2 01-07-2011 01:12 PM
outlook programmatically read an attachment into byte array chriskaza81 Outlook 0 11-19-2010 01:03 AM
How to reserve an array in a public function? Array into ComboBox + Macro-Text into ActiveDocument Vivi Word VBA 1 01-27-2010 07:03 AM

Other Forums: Access Forums

All times are GMT -7. The time now is 04:16 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft