You'd better work in memory than in sheets/ranges/cells
Sub test2() with ActiveSheet .Cells(1, 1).Value = 111 .Cells(2, 1).Value = 222 .Cells(3, 1).Value = 333 .Cells(4, 1).Value = 444 .Cells(1, 2).Value = 555 .Cells(2, 2).Value = 666 .Cells(3, 2).Value = 777 .Cells(4, 2).Value = 888 end with sn = ActiveSheet.Cells(1, 1).CurrentRegion For j=1 To ubound(sn) MsgBox sn(j,1) & vbtab & sn(j,2) Next End Sub