+ Reply to Thread
Results 1 to 2 of 2

Read data

Hybrid View

  1. #1
    Edmund
    Guest

    Read data

    VBA rookie here.

    How do I get VBA to “read” data of a selected range? The range is dynamic
    (which can contain any number of rows or columns) & is determined by user
    selection.

    I heard that codes can run faster without selecting range. So instead of
    having VBA to keep flipping between the source sheet (copy) & target
    sheet(paste), I plan to get Excel to “memorize” the content of each row &
    column, then returning it on the target sheet in one go.

    I know I can do this via copy & paste method but what I’m trying to learn
    here is using machine’s memory to read rows & columns.

    I got the below method from a book & changed it a little. But this example
    only generates reads a single column. I just don’t know how to make it read
    from a dynamic range of selected cells with uncertain number of rows & column.

    Pls show me. Thank you.

    Private Sub Testing_ReadData ()
    Dim MyArray() As Double
    RowCount = Selection.Rows.Count
    ReDim MyArray(RowCount)
    For r = 1 To RowCount
    MyArray(r) = Selection.Cells(r, 1)
    Next
    For Each n In MyArray
    Debug.Print n
    Next n
    End Sub

    --
    Edmund
    (Using Excel XP)

  2. #2
    Executor
    Guest

    Re: Read data

    Hi Edmund,

    I look at your question and made this:

    Public Sub CopyRange()
    Dim lRowLoop As Long
    Dim lRowMax As Long
    Dim lColLoop As Long
    Dim lColMax As Long

    Dim sSource As Worksheet
    Dim sTarget As Worksheet

    Dim rStart As Range

    Application.ScreenUpdating = False
    Set sSource = Sheets("Sheet1")

    Set sTarget = Sheets("Sheet2")
    sTarget.Select
    Set rStart = ActiveCell

    sSource.Select

    lRowMax = Selection.Rows.Count
    lColMax = Selection.Columns.Count

    For lRowLoop = 1 To lRowMax
    For lColLoop = 1 To lColMax
    rStart.Offset(lRowLoop - 1, lColLoop - 1).Value =
    Selection.Cells(lRowLoop, lColLoop).Value
    Next
    Next

    Application.ScreenUpdating = True
    End Sub

    This solution assumes that on your target sheet the cell for the
    upperleft corner where the values must be placed is allreadye selected.

    HTH,

    Executor


    Edmund wrote:
    > VBA rookie here.
    >
    > How do I get VBA to "read" data of a selected range? The range is dynamic
    > (which can contain any number of rows or columns) & is determined by user
    > selection.
    >
    > I heard that codes can run faster without selecting range. So instead of
    > having VBA to keep flipping between the source sheet (copy) & target
    > sheet(paste), I plan to get Excel to "memorize" the content of each row &
    > column, then returning it on the target sheet in one go.
    >
    > I know I can do this via copy & paste method but what I'm trying to learn
    > here is using machine's memory to read rows & columns.
    >
    > I got the below method from a book & changed it a little. But this example
    > only generates reads a single column. I just don't know how to make it read
    > from a dynamic range of selected cells with uncertain number of rows & column.
    >
    > Pls show me. Thank you.
    >
    > Private Sub Testing_ReadData ()
    > Dim MyArray() As Double
    > RowCount = Selection.Rows.Count
    > ReDim MyArray(RowCount)
    > For r = 1 To RowCount
    > MyArray(r) = Selection.Cells(r, 1)
    > Next
    > For Each n In MyArray
    > Debug.Print n
    > Next n
    > End Sub
    >
    > --
    > Edmund
    > (Using Excel XP)



+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

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

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1