Results 1 to 2 of 2
  1. #1
    Join Date
    Jun 2014
    Posts
    1

    Question Unanswered: Access pass checkbox value to a string to print

    I have one form with a calendar and i want to select the days in calendar and click in print button and the result is the list of day selected in calendar, printed.

    Example:
    (image in attach)


    I select the days 1, 2, 16 and 17 so the print result will be:

    1 September 2014

    2 September 2014

    16 September 2014

    17 September 2014

    This is "my" vba code:

    Code:
        Option Explicit
        Option Compare Database
        
        Const constShaded = 12632256         ' Shaded text box
        Const constUnshaded = 16777215       ' Unshaded text box
        Const constBackground = -2147483633  ' Background color for form (for unused textboxes)
        
        Private Sub btnNextMonth_Click()
            Dim ReferenceDate As Date
            Dim NewDate As Date
                
            ' Load the current date from the form
            ReferenceDate = Me.txtCalendarHeading
            
            ' Add 1 month to the date
            NewDate = DateAdd("m", 1, ReferenceDate)
            
            RefreshCalendar DatePart("m", NewDate), DatePart("yyyy", NewDate)
            
        End Sub
        
        Private Sub btnPrevMonth_Click()
            Dim ReferenceDate As Date
            Dim NewDate As Date
            
            ' Load the current date from the form
            ReferenceDate = Me.txtCalendarHeading
            
            ' Subtract 1 month from the date
            NewDate = DateAdd("m", -1, ReferenceDate)
            
            RefreshCalendar DatePart("m", NewDate), DatePart("yyyy", NewDate)
            
        End Sub
        
        Private Sub CalendarOverlay_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
            Dim Row As Integer
            Dim Col As Integer
            Dim TextBoxIndex As Integer
            Dim DayIndex As Integer
            Dim strNum As String
            Dim ctl As Control
            Dim intYear As Integer
            Dim intMonth As Integer
            Dim intMaxDays As Integer
            
            ' MsgBox "Button Mouse Down - X: " & X & " Y: " & Y    '  <== Use this to figure out dimensions
            Const ButtonWidth = 3045 ' Maximum X value (found by experimenting with MsgBox enabled)
            Const ButtonHeight = 2025  ' Maximum Y value (found by experimenting with MsgBox enabled)
                    
            ' Convert X and Y to Row, Col equivalents on the table
            Col = Int(X / (ButtonWidth / 7)) + 1  ' Divide width across 7 days
            Row = Int(Y / (ButtonHeight / 6)) + 0  ' Divide height across 6 rows (for the calendar)
            ' MsgBox "Button Mouse Down - Col: " & Col & " Row: " & Row   ' Debugging statement
        
            ' Calculate the index and figure out which text box
            TextBoxIndex = Row * 7 + Col
            
            ' Test to see if it is a day in the month
            DayIndex = TextBoxIndex - Weekday(Me.txtCalendarHeading) + 1
        
            intMaxDays = Day(DateAdd("d", -1, DateAdd("m", 1, Me.txtCalendarHeading)))
                
            If (DayIndex >= 1) And (DayIndex <= intMaxDays) Then
                
                ' Make a 2-digit string with the number, e.g. "01" or "08" or "12" etc.
                strNum = Right("00" & TextBoxIndex, 2)
                Set ctl = Me("CalDay" & strNum)     ' Note: similar to Me.Caldayxx, but allows a string
                
                ' Toggle shading -- Just for demonstration
                If ctl.BackColor = constUnshaded Then
                    ctl.BackColor = constShaded
                Else
                    ctl.BackColor = constUnshaded
                End If
                
                ' MsgBox the click -- Just for demonstration
                intYear = Year(Me.txtCalendarHeading)
                intMonth = Month(Me.txtCalendarHeading)
                MsgBox "Clicked on " & DateSerial(intYear, intMonth, DayIndex)
                
            End If
        
        End Sub
        
        Private Sub Form_Load()
            
            ' Call the refresh procedure
            ' Use the current date to start
            RefreshCalendar DatePart("m", Date), DatePart("yyyy", Date)
        
        End Sub
        
        Public Function RefreshCalendar(intMonth As Integer, intYear As Integer)
            
            ' Initialize the calendar grid
            ClearCalendar
            
            ' Set the date into the Calendar Heading
            ' Note this date is always the first of the displayed month (but field only shows month/year)
            Me.txtCalendarHeading = DateSerial(intYear, intMonth, 1)
            
            ' Add numbers to the calendar
            NumberCalendar
        
        End Function
        
        Private Sub ClearCalendar()
            Dim TextBoxIndex As Integer
            Dim strNum As String
            Dim ctlCalendar As Control
            Dim ctlInitial As Control
            
            ' Initialize the calendar grid to blanks
            For TextBoxIndex = 1 To 42
            
                ' Make a 2-digit string with the number, e.g. "01" or "08" or "12" etc.
                strNum = Right("00" & TextBoxIndex, 2)
            
                Set ctlCalendar = Me("CalDay" & strNum)  ' Note: similar to Me.Caldayxx, but allows a string
                ctlCalendar.Value = ""
                ctlCalendar.BackColor = constBackground
            Next
            
            Set ctlCalendar = Nothing
            
        End Sub
        
        Private Sub NumberCalendar()
            Dim FirstDay As Integer
            Dim DayIndex As Integer
            Dim TextBoxIndex As Integer
            Dim Done As Boolean
            
            Dim ctlCalendar As Control
            Dim strNum As String
            
            FirstDay = Weekday(Me.txtCalendarHeading)  ' Figure out the first day of the week
            DayIndex = 1   ' Start counting days at 1
            TextBoxIndex = FirstDay   ' Start indexing text boxes at first day in month
            Done = False
            
            While Not (Done)
                ' Set the value of the correct CalDayxx text box
                
                ' Make a 2-digit string with the number, e.g. "01" or "08" or "12" etc.
                strNum = Right("00" & TextBoxIndex, 2)
                
                Set ctlCalendar = Me("CalDay" & strNum) ' Note: similar to Me.Caldayxx, but allows a string
                ctlCalendar.Value = DayIndex
                ctlCalendar.BackColor = constUnshaded
                      
                DayIndex = DayIndex + 1
                TextBoxIndex = TextBoxIndex + 1
            
                ' Are we done?  Check to see if we have indexed into next month
                If (Month(Me.txtCalendarHeading + (DayIndex - 1)) <> Month(Me.txtCalendarHeading)) Then
                   Done = True
                End If
            
            Wend
            
            Set ctlCalendar = Nothing
        End Sub
    How i pass the checkboxs values to a string or table for print?
    Attached Thumbnails Attached Thumbnails calend.JPG  

  2. #2
    Join Date
    Apr 2014
    Location
    Kentucky
    Posts
    496
    Provided Answers: 24
    Are you sure these are checkboxes?...checkboxes are only true or false.

    If they are Text boxes then you need to check txtBox.Backcolor to see if its gray. (or not white)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •