Results 1 to 10 of 17

Thread: Looking at data sheet and then transferring data according to date to fixed range

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Administrator Admin's Avatar
    Join Date
    Mar 2011
    Posts
    1,123
    Rep Power
    10
    Hi

    Try this.

    Code:
    Private Sub CommandButton1_Click()
        
        Dim wksSource   As Worksheet
        Dim wksDest     As Worksheet
        Dim n           As Long
        Dim i           As Long
        Dim j           As Long
        Dim lngDate     As Long
        Dim rngDest     As Range
        Dim Data, arrOP()
        
        If Me.ComboBox1.ListIndex = -1 Then Exit Sub
        j = Me.ListBox1.ListIndex
        If j = -1 Then Exit Sub
        
        lngDate = CLng(DateValue(Me.ComboBox1.Value))
        
        Set wksSource = ThisWorkbook.Worksheets("team a")
        Set wksDest = ThisWorkbook.Worksheets("group a")
        
        Data = wksSource.Range("b8:v" & wksSource.Range("b" & wksSource.Rows.Count).End(xlUp).Row).Value2
        
        If IsArray(Data) Then
            ReDim arrOP(1 To UBound(Data, 1), 1 To 3)
            For i = 1 To UBound(Data, 1)
                If Data(i, 1) = lngDate Then
                    Select Case j 'Listbox Selection
                        Case 0 'Planned stop
                            'check for data
                            If Len(Data(i, 10)) Then
                                n = n + 1
                                arrOP(n, 1) = CDate(Data(i, 1)) 'date
                                arrOP(n, 2) = Data(i, 10) 'Reason
                                arrOP(n, 3) = Data(i, 11) 'time
                            End If
                        Case 1
                            'check for data
                            If Len(Data(i, 13)) Then
                                n = n + 1
                                arrOP(n, 1) = CDate(Data(i, 1)) 'date
                                arrOP(n, 2) = Data(i, 13) 'part
                                arrOP(n, 3) = Data(i, 16) 'time
                            End If
                        Case 2
                            'check for data
                            If Len(Data(i, 18)) Then
                                n = n + 1
                                arrOP(n, 1) = CDate(Data(i, 1)) 'date
                                arrOP(n, 2) = Data(i, 18) 'Reason
                                arrOP(n, 3) = Data(i, 20) 'time
                            End If
                    End Select
                End If
            Next
            If n Then
                Set rngDest = wksDest.Range("o5").Offset(j * 9 + 1)
                rngDest.Resize(6, 3).ClearContents
                rngDest.Resize(n, 3) = arrOP
            End If
        End If
        
        Unload Me
        
    End Sub
    Cheers !

    Excel Range to BBCode Table
    Use Social Networking Tools If You Like the Answers !

    Message to Cross Posters

    @ Home - Office 2010/2013/2016 on Win 10 (64 bit); @ Work - Office 2016 on Win 10 (64 bit)

  2. #2
    Senior Member
    Join Date
    Jul 2013
    Posts
    102
    Rep Power
    13
    Thanks Admin

    I learnt a bit and changed the code so that i included the comments as well.It works so i guess i got it correct.Also added a delete code.

    My only request is how do i have all 3 items in the listbox transfer at the same time.Press the transfer button once and the 3 listed are transfer simultaneously

    Thank you for your help

Similar Threads

  1. Replies: 2
    Last Post: 09-30-2013, 03:40 PM
  2. Replies: 10
    Last Post: 08-31-2013, 06:56 PM
  3. Replies: 3
    Last Post: 07-29-2013, 11:32 PM
  4. Replies: 2
    Last Post: 07-02-2013, 06:52 PM
  5. Replies: 5
    Last Post: 06-15-2013, 12:40 PM

Posting Permissions

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