Excel 宏,而无需选择和CtrlC

Excel 宏,而无需选择和CtrlC,excel,vba,Excel,Vba,仅当我从A22-78中选择并按ctrl键控制C行时,此宏才起作用。 我希望它能在我不必这样做的情况下工作。 此函数将(#行)*(每行中有#列)组成一列 谢谢你,我试用了你的代码,它似乎是从左到右读取这些值,并将它们按各自的顺序放在A列中。 这是否有助于: Sub Test() Dim oRange As Range Dim oSheet As Excel.Worksheet Dim vArray() As Variant Dim lCnt_A

仅当我从A22-78中选择并按ctrl键控制C行时,此宏才起作用。 我希望它能在我不必这样做的情况下工作。 此函数将(#行)*(每行中有#列)组成一列


谢谢你,我试用了你的代码,它似乎是从左到右读取这些值,并将它们按各自的顺序放在A列中。 这是否有助于:

Sub Test()

Dim oRange          As Range
Dim oSheet          As Excel.Worksheet
Dim vArray()        As Variant

Dim lCnt_A          As Long
Dim iCnt_B          As Integer
Dim lCnt_C          As Long
Dim iCnt_Cols       As Integer


Set oSheet = ThisWorkbook.Sheets(1)

Columns(1).Insert
Set oRange = oSheet.UsedRange
iCnt_Cols = oRange.Columns.Count

vArray = oRange
oRange.ClearContents

For lCnt_A = 1 To UBound(vArray)
    For iCnt_B = 1 To iCnt_Cols
        lCnt_C = lCnt_C + 1
        ThisWorkbook.Sheets(2).Cells(lCnt_C, 1).Value = vArray(lCnt_A, iCnt_B)

    Next iCnt_B
Next lCnt_A

Set oSheet = Nothing
Set oRange = Nothing

End Sub
如果我误解了你的意图,请告诉我

Sub Test()

Dim oRange          As Range
Dim oSheet          As Excel.Worksheet
Dim vArray()        As Variant

Dim lCnt_A          As Long
Dim iCnt_B          As Integer
Dim lCnt_C          As Long
Dim iCnt_Cols       As Integer


Set oSheet = ThisWorkbook.Sheets(1)

Columns(1).Insert
Set oRange = oSheet.UsedRange
iCnt_Cols = oRange.Columns.Count

vArray = oRange
oRange.ClearContents

For lCnt_A = 1 To UBound(vArray)
    For iCnt_B = 1 To iCnt_Cols
        lCnt_C = lCnt_C + 1
        ThisWorkbook.Sheets(2).Cells(lCnt_C, 1).Value = vArray(lCnt_A, iCnt_B)

    Next iCnt_B
Next lCnt_A

Set oSheet = Nothing
Set oRange = Nothing

End Sub