I was searching for a way to do something similar, and thought I'd post what I found:
I have a series of excel sheets that are in the process of being upgraded, and I needed a reminder for the users of one of the upgrades to display the first time the workbook was opened, and give them the option to prevent it from displaying again.
I ended up creating a small form containing my message, a check box asking if the user would like the notice again, and an OK button to close the form. Additionally, I set up a registry key to track if the user had checked the box for this specific sheet.
In the ThisWorkbook object I added a workbook name property so I can reuse all the code, just changing it's assignment for each workbook, a quick if statement to launch the form when the workbook was activated if the registry key value was either "Y" or did not exist:
Code:
Private workshtName As String
Private Sub Workbook_Activate()
If workshtName = vbNullString Then
workshtName = "book1"
End If
If GetSetting("workbookGroup", workshtName, "showWarningValue", "Y") = "Y" Then
noSemiColons.chkShowAgain = False
noSemiColons.Show
End If
AddMenus
End Sub
Public Property Get myName() As String
myName = workshtName
End Property
Public Property Let myName(ByVal inName As String)
workshtName = inName
End Property
The form consisted of a text box containing my message, a check box asking if the user wanted to see this warning in the future and an OK button. On the back end it only required a hide function and check box evaluator for the OK button:
Code:
Private Sub btnOK_Click()
'Update the registry key based on the check box
If chkShowAgain.Value = True Then
SaveSetting "workbookGroup", ThisWorkbook.myName, "showWarningValue", "N"
Else
SaveSetting "workbookGroup", ThisWorkbook.myName, "showWarningValue", "Y"
End If
'close the form
Me.Hide
End Sub
I've tested it extensively and it works wonderfully! Each user will now be able to define if they want to view the warnings on each workbook, and will be forced to view it at least once. The really cool thing about this is it stores the registry key in the current user settings, and has two layers of grouping.
You can find more detailed info on the get and set setting methods here:
http://msdn.microsoft.com/en-us/library/3kz7fyks(v=VS.71).aspx
http://msdn.microsoft.com/en-us/library/kb0c3wb9(v=VS.71).aspx
There is a great example of the methods being used here:
http://j-walk.com/ss/excel/tips/tip60.htm