Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'paste this into a module.
- 'Call the randomness from a form with "ChangeTheme (Me.Name)" in any event that you want to cause a theme change.
- 'You do not need to use the form name. Use it exactly as shown here.
- 'I recommend putting "ChangeTheme (Me.Name)" in the Form Load.
- 'Note that your form MUST have a header, footer, and detail!
- 'Although you can get rid of that requirement by remove the 4 lines at the end that start with "Frm"
- 'This VBA was created in Access 2016 64 bit. I do not know if it will work in other versions.
- Public Function RandomRGB(MinR As Integer, MaxR As Integer, MinG As Integer, MaxG As Integer, MinB As Integer, MaxB As Integer) As Long
- 'produce a random RGB value with a min and max for each r, g, and b
- RandomRGB = RGB(Int((MaxR - MinR + 1) * Rnd + MinR), Int((MaxG - MinG + 1) * Rnd + MinG), Int((MaxB - MinB + 1) * Rnd + MinB))
- End Function
- Public Function RandomFont()
- 'returns a random font name
- Dim FontList(4) As String
- FontList(0) = "Webdings"
- FontList(1) = "Batangs"
- FontList(2) = "Papyrus"
- FontList(3) = "Arial"
- FontList(4) = "Tahoma"
- 'Int(lowerbound + Rnd * ( upperbound – lowerbound + 1 ) )
- RandomFont = FontList(Int(0 + Rnd * (4 - 0 + 1)))
- End Function
- Public Function RandomFontSize() As Integer
- 'Int(lowerbound + Rnd * ( upperbound – lowerbound + 1 ) )
- RandomFontSize = Int(4 + Rnd * (15 - 4 + 1))
- End Function
- Public Function ChangeTheme(FormName As String)
- Dim ColorsNeedToBeChanged As Boolean
- Dim ctlVar As Control
- Dim Frm As Form
- Dim MinToUseRGB As Integer
- Dim MaxToUseRGB As Integer
- Dim MultToUseRGB As Integer
- Set Frm = Forms(FormName)
- MinToUseRGB = 0
- MaxToUseRGB = 10
- MultToUseRGB = 25
- ColorsNeedToBeChanged = False
- Randomize
- For Each ctlVar In Frm.Controls
- ctlVar.Width = ctlVar.Width + Int((140 - (-140) + 1) * Rnd + (-140))
- ctlVar.Height = ctlVar.Height + Int((70 - (-30) + 1) * Rnd + (-30))
- ctlVar.Left = ctlVar.Left + Int((100 - (-0) + 1) * Rnd + (-0))
- ctlVar.Top = ctlVar.Top + Int((100 - (-0) + 1) * Rnd + (-0))
- If ctlVar.ControlType = acTextBox Or ctlVar.ControlType = acComboBox Then
- ctlVar.FontName = RandomFont
- ctlVar.FontSize = RandomFontSize
- ctlVar.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.ForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.BorderColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- End If
- If ctlVar.ControlType = acLabel Then
- ctlVar.FontName = RandomFont
- ctlVar.FontSize = RandomFontSize
- ctlVar.ForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- End If
- If ctlVar.ControlType = acCommandButton Then
- ctlVar.FontName = RandomFont
- ctlVar.FontSize = RandomFontSize
- ctlVar.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.BorderColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.ForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.HoverColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.HoverForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.PressedColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.PressedForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.Gradient = Int((26 - 0 + 1) * Rnd + 0)
- End If
- If ctlVar.ControlType = acRectangle Then
- ctlVar.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.BorderColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- End If
- If ctlVar.ControlType = acTabCtl Then
- ctlVar.FontName = RandomFont
- ctlVar.FontSize = RandomFontSize
- ctlVar.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.BorderColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.ForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.HoverColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.HoverForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.PressedColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.PressedForeColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- End If
- If ctlVar.ControlType = acAttachment Then
- ctlVar.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- ctlVar.BorderColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- End If
- Next
- Frm.FormHeader.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- Frm.Detail.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- Frm.Detail.AlternateBackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- Frm.FormFooter.BackColor = RandomRGB(MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB, MinToUseRGB, MaxToUseRGB) * MultToUseRGB
- Set Frm = Nothing
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement