2012-09-03 33 views
6

Tôi hiện đang tạo một "HĐH" trong PowerPoint và tôi cần biết cách đặt các biến toàn cầu cho các thiết lập.Đặt các Biến Toàn cầu trong VBA

tôi đã thực hiện một module gọi là "Cài đặt" có chứa:

Public Sub Settings() 

Option Explicit 
Public UserName, UserIcon, Background, BrowserHomePage As String 
Public SetupComplete As Boolean 

SetupComplete = False 
UserName = "Administrator" 
UserIcon = Nothing 
Background = Nothing 
BrowserHomePage = Nothing 

'Set the variables 
UserName.Text = UserName 

End Sub 

Bây giờ trên màn hình "đăng nhập", tôi có một hộp văn bản có tên là "UserName". Sau đó tôi thực hiện một nút chỉ để kiểm tra các biến. Nút này thực hiện điều này:

Private Sub CommandButton1_Click() 
UserName.Value = UserName 
End Sub 

Hộp văn bản không có giá trị khi tôi nhấp vào nút. Tôi là siêu mới tại VBA, và muốn biết làm thế nào để làm điều này. Ngoài ra, nếu có ai biết cách tự động thực thi mã khi khởi động PowerPoint, điều đó sẽ thật tuyệt vời.

EDIT: Tôi đang cố gắng tạo mô-đun chỉ chứa các cài đặt. Ai đó có thể chỉ ra cách thay đổi các giá trị từ các trang trình bày? Giống như nếu tôi nhấp vào một nút trong trang trình bày 1, tôi muốn nó thay đổi giá trị "Tên người dùng" trong mô-đun "Cài đặt" thành bất kỳ thứ gì tôi muốn.

Giải pháp: OK, tôi đã tìm thấy một giải pháp. Tôi phải viết các thiết lập vào một tập tin văn bản và lấy nó để đọc.

Cài đặt của tôi mô-đun:

Public UserName As String, Password As String, UserIcon As String, DesktopBackground As String, LogInBackground As String, BrowserHomePage As String 
Public InitialSetupCompleted As Boolean 

Public Sub ReadSettings() 

'Delcaring variables 
TempDir = Environ("Temp") 
SettingsFileName = "\OpenOSSettings.txt" 
SettingsFile = TempDir & SettingsFileName 
ReadFile = FreeFile() 

'Read all settings from file 
Open SettingsFile For Input As #ReadFile 
Do While Not EOF(ReadFile) 
    Line Input #ReadFile, Read 
     If Read Like "UserName = *" Then 
     UserName = Replace(Read, "UserName = ", "") 
     End If 
     If Read Like "Password = *" Then 
     Password = Replace(Read, "Password = ", "") 
     End If 
     If Read Like "UserIcon = *" Then 
     UserIcon = Replace(Read, "UserIcon = ", "") 
     End If 
     If Read Like "DesktopBackground = *" Then 
     DesktopBackground = Replace(Read, "DesktopBackground = ", "") 
     End If 
     If Read Like "LogInBackground = *" Then 
     LogInBackground = Replace(Read, "LogInBackground = ", "") 
     End If 
     If Read Like "BrowserHomePage = *" Then 
     BrowserHomePage = Replace(Read, "BrowserHomePage = ", "") 
     End If 
     If Read Like "InitialSetupCompleted = *" Then 
     InitialSetupCompleted = Replace(Read, "InitialSetupCompleted = ", "") 
     End If 
Loop 
Close #ReadFile 

'Applying settings to all elements 
Slide5.UserName.Caption = UserName 

End Sub 


Public Sub SaveSettings() 

'Declaring variables 
TempDir = Environ("Temp") 
SettingsFileName = "\OpenOSSettings.txt" 
SettingsFile = TempDir & SettingsFileName 
WriteFile = FreeFile() 

'Write all settings to file 
Open SettingsFile For Output As #WriteFile 
Print #WriteFile, "UserName = " & UserName 
Print #WriteFile, "Password = " & Password 
Print #WriteFile, "UserIcon = " & UserIcon 
Print #WriteFile, "DesktopBackground = " & DesktopBackground 
Print #WriteFile, "LogInBackground = " & LogInBackground 
Print #WriteFile, "BrowserHomePage = " & BrowserHomePage 
Print #WriteFile, "InitialSetupCompleted = " & InitialSetupCompleted 
Close #WriteFile 

End Sub 

Bây giờ để lưu các thiết lập, tôi chỉ sử dụng một textbox và một nút. tiết kiệm giá trị của TextBox1 để UserName trong file:

Private Sub CommandButton1_Click() 
UserName = TextBox1.Value 
Settings.SaveSettings 
End Sub 

Đọc giá trị của UserName và đặt nó vào TextBox1:

Private Sub CommandButton2_Click() 
Settings.ReadSettings 
TextBox2.Value = UserName 
End Sub 

mã rất dài, nhưng nó hoạt động tốt. Cảm ơn mọi người!

+0

{cảnh báo chung về biến toàn cầu} –

+0

'Tên người dùng công cộng, UserIcon, nền, BrowserHomePage Vì chuỗi' ở đây chỉ' BrowserHomePage' là một chuỗi, bạn phải lặp lại 'dưới dạng chuỗi' sau mỗi biến –

+13

" Tôi hiện đang tạo "Hệ điều hành" trong PowerPoint ". !! ??? – cja

Trả lời

3

Không đặt các giá trị thiết lập của bạn trong một module. Các mô-đun dành cho mã và bạn sẽ làm nhiều việc hơn để cố gắng lưu trữ dữ liệu trong chúng hơn bạn muốn. Cài đặt cửa hàng trong sổ đăng ký hoặc trong một tệp văn bản. Nếu bạn muốn các thiết lập ở bên trong tập tin, bạn có thể sử dụng CustomDocumentProperties hoặc một slide ẩn - Tôi không biết đủ về PPT để cung cấp cho bạn một gợi ý tốt.

Thực hiện quy trình đọc cài đặt từ bất cứ nơi nào bạn lưu trữ chúng. Sau đó thực hiện một thủ tục để viết chúng trở lại lưu trữ. Khi người dùng nhấp vào một nút nhất định trên trang chiếu, bạn thay đổi biến Tên người dùng, sau đó thực hiện quy trình ghi nó vào bộ nhớ.

Khi khai báo các biến trên cùng một dòng, bạn phải bao gồm loại cho mỗi biến.

Public UserName, UserIcon, Background, BrowserHomePage As String 

dims BrowserHomePage dưới dạng chuỗi, nhưng ba biến khác dưới dạng Biến thể.Sử dụng tùy chọn này thay thế

Public UserName As String, UserIcon As String, Background As String, BrowserHomePage As String 

Hoặc tốt hơn, nhưng tất cả đều nằm trên dòng của riêng chúng.

3

Biến "tên người dùng" của bạn không thực sự là toàn cầu vì nó nằm trong phạm vi của chương trình con Cài đặt của bạn. Di chuyển các khai báo biến của bạn bên ngoài một hàm/chương trình con để làm cho chúng toàn cục.

Hãy thử điều này:

Option Explicit 
Public UserName, UserIcon, Background, BrowserHomePage As String 
Public SetupComplete As Boolean 

Public Sub Settings() 

SetupComplete = False 
UserName = "Administrator" 
UserIcon = Nothing 
Background = Nothing 
BrowserHomePage = Nothing 

'Set the variables 
UserName.Text = UserName 

End Sub