Read data

G

Guest

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
 
E

Executor

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top