ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Help with VB macro (https://www.excelbanter.com/excel-programming/429209-help-vbulletin-macro.html)

valkyrie

Help with VB macro
 
Can someone help me edit this macro? It currently reads an array and
converts it to a column, for example.

1 2 3
4 5 6

Becomes

1
4
2
5
3
6

However, I need it to become

1
2
3
4
5
6

Can anyone help me edit it to do so, I've been struggling with this for too
long. Thank you!

Sub Matrix2Column()
Dim v As Variant
Dim nCol As Long
Dim nRow As Long
Dim rOut As Range
Dim iCol As Long

On Error Resume Next
v = Application.InputBox("Select range to copy", Type:=8).Value
If IsEmpty(v) Then Exit Sub
nRow = UBound(v, 1)
nCol = UBound(v, 2)

Set rOut = Application.InputBox("Select destination",
Type:=8).Resize(nRow, 1)
If rOut Is Nothing Then Exit Sub

For iCol = 1 To nCol
rOut.Value = WorksheetFunction.Index(v, 0, iCol)
Set rOut = rOut.Offset(nRow)
Next iCol
End Sub



AltaEgo

Help with VB macro
 
Insert in the appropriate place:

v = WorksheetFunction.Transpose(v)


--
Steve

"valkyrie" wrote in message
...
Can someone help me edit this macro? It currently reads an array and
converts it to a column, for example.

1 2 3
4 5 6

Becomes

1
4
2
5
3
6

However, I need it to become

1
2
3
4
5
6

Can anyone help me edit it to do so, I've been struggling with this for
too
long. Thank you!

Sub Matrix2Column()
Dim v As Variant
Dim nCol As Long
Dim nRow As Long
Dim rOut As Range
Dim iCol As Long

On Error Resume Next
v = Application.InputBox("Select range to copy", Type:=8).Value
If IsEmpty(v) Then Exit Sub
nRow = UBound(v, 1)
nCol = UBound(v, 2)

Set rOut = Application.InputBox("Select destination",
Type:=8).Resize(nRow, 1)
If rOut Is Nothing Then Exit Sub

For iCol = 1 To nCol
rOut.Value = WorksheetFunction.Index(v, 0, iCol)
Set rOut = rOut.Offset(nRow)
Next iCol
End Sub



AltaEgo

Help with VB macro
 
Combined, of course with:

Select Case MsgBox("Do you wish to transpose by rows first?", vbYesNo ...
--
Steve

"AltaEgo" <Somewhere@NotHere wrote in message
...
Insert in the appropriate place:

v = WorksheetFunction.Transpose(v)


--
Steve

"valkyrie" wrote in message
...
Can someone help me edit this macro? It currently reads an array and
converts it to a column, for example.

1 2 3
4 5 6

Becomes

1
4
2
5
3
6

However, I need it to become

1
2
3
4
5
6

Can anyone help me edit it to do so, I've been struggling with this for
too
long. Thank you!

Sub Matrix2Column()
Dim v As Variant
Dim nCol As Long
Dim nRow As Long
Dim rOut As Range
Dim iCol As Long

On Error Resume Next
v = Application.InputBox("Select range to copy", Type:=8).Value
If IsEmpty(v) Then Exit Sub
nRow = UBound(v, 1)
nCol = UBound(v, 2)

Set rOut = Application.InputBox("Select destination",
Type:=8).Resize(nRow, 1)
If rOut Is Nothing Then Exit Sub

For iCol = 1 To nCol
rOut.Value = WorksheetFunction.Index(v, 0, iCol)
Set rOut = rOut.Offset(nRow)
Next iCol
End Sub



r

Help with VB macro
 

"valkyrie" wrote:

Can someone help me edit this macro? It currently reads an array and
converts it to a column, for example.

1 2 3
4 5 6

Becomes

1
4
2
5
3
6

However, I need it to become

1
2
3
4
5
6

Can anyone help me edit it to do so, I've been struggling with this for too
long. Thank you!

Sub Matrix2Column()
Dim v As Variant
Dim nCol As Long
Dim nRow As Long
Dim rOut As Range
Dim iCol As Long

On Error Resume Next
v = Application.InputBox("Select range to copy", Type:=8).Value
If IsEmpty(v) Then Exit Sub
nRow = UBound(v, 1)
nCol = UBound(v, 2)

Set rOut = Application.InputBox("Select destination",
Type:=8).Resize(nRow, 1)
If rOut Is Nothing Then Exit Sub

For iCol = 1 To nCol
rOut.Value = WorksheetFunction.Index(v, 0, iCol)
Set rOut = rOut.Offset(nRow)
Next iCol
End Sub


Sub Matrix2Column()
Dim v As Range
Dim rOut As Range
Dim i As Long

On Error Resume Next
Set v = Application.InputBox("Select range to copy", Type:=8)
If TypeName(v) = "Nothing" Then Exit Sub

Set rOut = Application.InputBox("Select destination", Type:=8)
If TypeName(rOut) = "Nothing" Then Exit Sub

For i = 1 To v.Count
rOut.Offset(i) = v.Item(i)
Next i
End Sub

regards
r

Il mio ultimo lavoro ...
http://excelvba.altervista.org/blog/...ternative.html




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

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