472,139 Members | 1,642 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,139 software developers and data experts.

Changing Background Color Theme in Access 2016

485 256MB
I've installed Office 365 and when I bring up Access the back ground color is White, I've looked in the File, Account, but when I click on the Office Theme I only get two choices Colorful, White, no matter what I choose I only get the white. In Access 2007 I had the I had a choice of Blue Silver or Black.
How do I get my Blue back in Access 2016 any ideas.

Jan 18 '16 #1
2 15087
5,501 Expert Mod 4TB
Welcome to the new MS paradigm
MS> What's New and Improved in Office 2016 for Office 365 (read more)
Office Themes

In Word, PowerPoint, Excel, OneNote, Outlook, Access, Project, Visio, and Publisher

Pick the Office theme that's right for you. The Dark Gray theme provides a high contrast look and feel that is easy on the eyes. The Colorful theme offers a modern and fresh look. The White theme provides a traditional Office look.

Learn more about changing the Office theme (read more)
The choices you have are the choices you have unless you can possibly find a hack... and people have been trying without much success, especially with Office360 where MS has total control of every file and setting you can possibly think of...

This is a continuation of the madness started with Office2013 where we had "White" "Light Grey" and "Dark Grey"

All you can do is complain to Microsoft, who appears to not care one whit about the end users' preferences. In one thread alone, there are 22 pages of complaints spanning from 2013 thru just last month, in the Microsoft Answers forum alone about this particular, "feature" for Office2013 and there are many more such threads and one already for Office2016.
Jan 18 '16 #2
While you can't change the background color, I've come up with a solution that effectively allows you to change the background color.

First, I've created a new form called "background" that is completely empty, very large (large enough to fill the screen of your largest monitor), and has a dark gray background. It is not modal or popup, it auto resizes and centers, fits to screen, has no borders, record selectors, navigation buttons, dividing lines, scroll bars, control button, close button, or min max button, and it is not movable. All it has a little bit of VBA in its On Got Focus property:

Expand|Select|Wrap|Line Numbers
  1. Private Sub Form_GotFocus()
  2.   Dim db As DAO.Database
  3.   Dim rst As DAO.Recordset
  4.   Set db = CurrentDb
  5.   Set rst = db.OpenRecordset("SELECT ID, FormName, FrmRpt FROM FormStack ORDER BY ID", dbOpenSnapshot)
  6.   If rst.EOF Then
  7.     DoCmd.OpenForm "frmMenu"
  8.   Else
  9.     While Not rst.EOF
  10.       If rst.Fields("FrmRpt") = "Form" Then
  11.         If FormIsOpen(rst.Fields("FormName")) Then
  12.           Forms(rst.Fields("FormName")).SetFocus
  13.         Else
  14.           Call CloseFormStack(rst.Fields("FormName"))
  15.         End If
  16.       Else
  17.         If ReportIsOpen(rst.Fields("FormName")) Then
  18.           DoCmd.SelectObject acReport, rst.Fields("FormName")
  19.         Else
  20.           Call CloseFormStack(rst.Fields("FormName"))
  21.         End If
  22.       End If
  23.       rst.MoveNext
  24.     Wend
  25.   End If
  26.   rst.Close
  27.   Set rst = Nothing
  28. End Sub
NOTE: the line
Expand|Select|Wrap|Line Numbers
  1. DoCmd.OpenForm "frmMenu"
will open my menu form if no other form or report is open. Doing this is of course optional and you would want to change the name of the form that it opens.

I also created a table named "FormStack" that has the following fields:
ID (long integer, primary key)
FormName (short text)
FrmRpt (short text)

As for the other code which is saved in a separate module:

Expand|Select|Wrap|Line Numbers
  1. Public Sub FormStack(fName As String, frmrpt As String)
  2.   Dim sSQL As String
  3.   sSQL = "DELETE * FROM [FormStack] WHERE [FormName] = '" & fName & "'"
  4.   DoCmd.RunSQL (sSQL)
  5.   Dim Temp As Integer
  6.   Temp = 1
  7.   Dim db As DAO.Database
  8.   Dim rst As DAO.Recordset
  9.   Set db = CurrentDb
  10.   Set rst = db.OpenRecordset("SELECT [ID], [FormName] FROM [FormStack] ORDER BY [ID]", dbOpenSnapshot)
  11.   With rst
  12.     While Not .EOF
  13.       Temp = ![id] + 1
  14.       .MoveNext
  15.     Wend
  16.   End With
  17.   rst.Close
  18.   Set rst = Nothing
  19.   sSQL = "INSERT INTO [FormStack] ([ID], [FormName], [FrmRpt]) VALUES (" & Temp & ", '" & fName & "', '" & frmrpt & "')"
  20.   DoCmd.RunSQL (sSQL)
  21. End Sub
  23. Public Sub CloseFormStack(fName As String)
  24.   Dim sSQL As String
  25.   sSQL = "DELETE * FROM [FormStack] WHERE [FormName] = '" & fName & "'"
  26.   DoCmd.RunSQL (sSQL)
  27. End Sub
  29. Public Function FormIsOpen(strForm As String) As Boolean
  30.     Dim a As String
  31.     Dim Frm As Form
  33.     On Error GoTo ErrHandler
  35.     Set Frm = Forms(strForm)
  36.     a = Frm.Caption
  38.     FormIsOpen = True
  40. FormIsOpenExit:
  41.     Exit Function
  43. ErrHandler:
  44.     FormIsOpen = False
  45.     Resume FormIsOpenExit
  47. End Function
After this you need to insert the following code into every forms (but NOT subforms) Activate, On Open and On Close events:

Expand|Select|Wrap|Line Numbers
  1. Private Sub Form_Activate()
  2.   Call FormStack("frmName", "Form")
  3. End Sub
  5. Private Sub Form_Close()
  6.   Call CloseFormStack("frmName")
  7. End Sub
  9. Private Sub Form_Open(Cancel As Integer)
  10.   Call FormStack("frmName", "Form")
  11. End Sub
And for reports (but NOT subreports) this code:

Expand|Select|Wrap|Line Numbers
  1. Private Sub Report_Activate()
  2.   Call FormStack("rptName", "Report")
  3. End Sub
  5. Private Sub Report_Close()
  6.   Call CloseFormStack("rptName")
  7. End Sub
  9. Private Sub Report_Open(Cancel As Integer)
  10.   Call FormStack("rptName", "Report")
  11. End Sub
Of course you can still have other code in these events as well. And you will have to put in the correct name of each form or report.

What all this code will do is ensure that your forms and reports are always on top of the background form. Should you ever accidentally click the background form, it will restore focus to every open form or report in the appropriate order (in other words, you are effectively sending the background to the back).

Now this isn't without a few problems. First, this code will not work with tables or queries. If a table or query is open and you click on the background, they will wind up forever beneath the background, the only way to get it back is to open it from the Navigation Pane again. I consider this a minor problem as your end users should only be working with forms and reports, but it is a bit of a pain for a developer. The other problem is that you want the background to cover the entire background, and you don't know how large the end users monitor will be, so it is wise to make the background form excessively large. While scroll bars will be disabled on the background form, they are not disabled in Access itself, and since the background is larger than the access window, you will wind up with scroll bars in your access window. Luckily your scroll wheel on your mouse does not effect these scroll bars, and I've had no one complain about to me in the month that we have been using the application so this too I consider a minor issue.
Nov 30 '18 #3

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

reply views Thread by pradeep | last post: by
3 posts views Thread by mcnewsxp | last post: by
1 post views Thread by rpapaiof | last post: by
2 posts views Thread by davehirend | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.