ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Read data (https://www.excelbanter.com/excel-programming/363971-read-data.html)

Edmund

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 Im trying to learn
here is using machines 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 dont 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)

Executor

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)




All times are GMT +1. The time now is 12:17 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com