Sub iMsgBox() Dim arr Dim i As Long Dim tmp As String arr = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value For i = 1 To UBound(arr) tmp = tmp & arr(i, 1) & vbCrLf Next MsgBox tmp End Sub
[/vba]
[vba]
Код
Sub iMsgBox() Dim arr Dim i As Long Dim tmp As String arr = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value For i = 1 To UBound(arr) tmp = tmp & arr(i, 1) & vbCrLf Next MsgBox tmp End Sub
Вот как раз в коллекции-то такой возможности и нет, только в словаре.[vba]
Код
Sub Otp()
Dim i As Integer Dim slov As Object
Set slov = CreateObject("Scripting.Dictionary") For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row On Error Resume Next slov.Add Cells(i, 1).Value, "" Next i MsgBox Join(slov.keys(), ", ")
Вот как раз в коллекции-то такой возможности и нет, только в словаре.[vba]
Код
Sub Otp()
Dim i As Integer Dim slov As Object
Set slov = CreateObject("Scripting.Dictionary") For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row On Error Resume Next slov.Add Cells(i, 1).Value, "" Next i MsgBox Join(slov.keys(), ", ")
Sub tt() r1_ = Cells(Rows.Count, 1).End(3).Row ar = Cells(1).Resize(r1_) Set slov = CreateObject("Scripting.Dictionary") With slov For i = 1 To r1_ aaa = .Item(ar(i, 1)) Next i MsgBox Join(.keys(), ", ") End With End Sub
[/vba]
Еще вариант на словаре [vba]
Код
Sub tt() r1_ = Cells(Rows.Count, 1).End(3).Row ar = Cells(1).Resize(r1_) Set slov = CreateObject("Scripting.Dictionary") With slov For i = 1 To r1_ aaa = .Item(ar(i, 1)) Next i MsgBox Join(.keys(), ", ") End With End Sub
[/vba]Только если в боевом файле колонок не одна и строки не полностью повторяются, то он испортится, так что лучше предварительно выводимую колонку скопировать на дополнительный лист.
[/vba]Только если в боевом файле колонок не одна и строки не полностью повторяются, то он испортится, так что лучше предварительно выводимую колонку скопировать на дополнительный лист.StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Конечно возможно. Вы б спросили, Вам бы сразу сказали [vba]
Код
Sub ee() Application.ScreenUpdating = 0 Application.Calculation = xlCalculationManual r1_ = Cells(Rows.Count, 1).End(3).Row ar = Cells(1).Resize(r1_) With Cells(1).SpecialCells(xlLastCell).Offset(1, 1).Resize(r1_) With .Parent.UsedRange: End With .Value = ar .RemoveDuplicates Columns:=1 r11_ = Cells(Rows.Count, .Column).End(3).Row t_ = Join(Application.Transpose(.Cells(1).Resize(r11_ - .Row + 1)), ", ") .Clear With .Parent.UsedRange: End With End With MsgBox t_ Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = 1 End Sub
Конечно возможно. Вы б спросили, Вам бы сразу сказали [vba]
Код
Sub ee() Application.ScreenUpdating = 0 Application.Calculation = xlCalculationManual r1_ = Cells(Rows.Count, 1).End(3).Row ar = Cells(1).Resize(r1_) With Cells(1).SpecialCells(xlLastCell).Offset(1, 1).Resize(r1_) With .Parent.UsedRange: End With .Value = ar .RemoveDuplicates Columns:=1 r11_ = Cells(Rows.Count, .Column).End(3).Row t_ = Join(Application.Transpose(.Cells(1).Resize(r11_ - .Row + 1)), ", ") .Clear With .Parent.UsedRange: End With End With MsgBox t_ Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = 1 End Sub