2015-01-08 86 views
2

我試圖保存一個文件,但作爲一個小列表中的隨機名。這是我到目前爲止有:保存爲一個隨機文件名從一個列表

Option Explicit 
Option Base 1 

Public Sub SaveToDrive() 

Dim categorys(5) As String 
categorys(1) = "Adam" 
categorys(2) = "James" 
categorys(3) = "Henry" 
categorys(4) = "William" 
categorys(5) = "Keith" 

ThisWorkbook.SaveAs Filename:="e:\" & categorys(Int((5 - 1 + 1) * Rnd + 1)).Name 

End Sub 

目前,這個返回在第二「的categorys」的無效限定符錯誤最後一行。

我完全不熟悉VBA,但我想知道這是否可行,或者是否有其他更好的方法。

謝謝。

+1

字符串沒有名稱屬性。爲什麼你在行尾有'.Name'? –

+0

可能是因爲他「對VBA來說是全新的」。 – mwolfe02

回答

3

查看下面的工作示例。一些注意事項:

  • 默認情況下,VBA中的數組基於0。這可以通過Option Base 1Option Base 0在模塊頭被改變,但是最安全的方法是在聲明數組時簡單地指定上限和下限兩個(Dim categorys(5) - >Dim categorys(1 To 5)

  • 不知道是什麼目的,你- 1 + 1服讓我擺脫它:Int((5 - 1 + 1 - >Int((5

  • 我分手的表達並增加了一些中間變量,以使事情更容易閱讀和維護前進(& categorys(Int((5 - 1 + 1) * Rnd + 1)).Name - >Dim RandomIndex...

  • 個字符串是不是在VBA對象,所以他們不能有方法或屬性,如.Name


Public Sub SaveToDrive() 
    Dim categorys(1 To 5) As String 
    categorys(1) = "Adam" 
    categorys(2) = "James" 
    categorys(3) = "Henry" 
    categorys(4) = "William" 
    categorys(5) = "Keith" 

    Dim RandomIndex As Integer 
    RandomIndex = Int((5 * Rnd) + 1) 

    Dim FName As String 
    FName = categorys(RandomIndex) 

    ThisWorkbook.SaveAs FileName:="e:\" & FName 

End Sub 
相關問題