VBA в EXCEL
От: globalist  
Дата: 10.01.08 17:00
Оценка:
Здраствуйте!

Скажите как мне с помощью макроса скопировать значение всей строки(не одной ячейки, а нескольких), а потом обработать эту строку по символьно средствами VBA в Excel.
Re: VBA в EXCEL
От: Аноним  
Дата: 10.01.08 19:11
Оценка:
Здравствуйте, globalist, Вы писали:

G>Здраствуйте!


G>Скажите как мне с помощью макроса скопировать значение всей строки(не одной ячейки, а нескольких), а потом обработать эту строку по символьно средствами VBA в Excel.


Например так:
Dim I as Long
Dim xlsData As Variant
xlsData = MyExcel.ActiveSheet.Range("A1:D1).Value
For I = 1 To 4
Debug.Print xlsData(I)
Next I
Re[2]: VBA в EXCEL
От: Аноним  
Дата: 10.01.08 19:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, globalist, Вы писали:


G>>Здраствуйте!


G>>Скажите как мне с помощью макроса скопировать значение всей строки(не одной ячейки, а нескольких), а потом обработать эту строку по символьно средствами VBA в Excel.


А>Например так:

А>
А>Dim I as Long
А>Dim xlsData As Variant
А>xlsData = ActiveSheet.Range("A1:D1).Value
А>For I = 1 To 4
А>Debug.Print xlsData(I)
А>Next I
А>


Поспешил: "MyExcel." не нужен (это я из проекта на VB копировал). В зависимости от того, что требуется, можно просто

xlsData = ActiveSheet.Range("A1:D1).Value

Тут главная идея в том, что можно сразу всю область (в том числе и двухмерную) загнать в переменную за один прием.

М. Таумурзаев
Re[3]: VBA в EXCEL
От: globalist  
Дата: 10.01.08 20:49
Оценка:
А можно это сдлать с помощью cells,а не range?
Re: VBA в EXCEL
От: ZAMUNDA Земля для жалоб и предложений
Дата: 11.01.08 09:30
Оценка: 2 (1)
Здравствуйте, globalist, Вы писали:

G>Скажите как мне с помощью макроса скопировать значение всей строки(не одной ячейки, а нескольких)

' Копирую значение диапазона "A1:C1" в диапазон "A2:C2".
ThisWorkbook.Range("A1:C1").Value = ThisWorkbook.Range("A2:C2").Value

Если диапазон более одной ячейки, то из Value получишь массив с базой=1.

G>, а потом обработать эту строку по символьно средствами VBA в Excel.

Какую строку?
Строку в VBA — это через mid можно реализовать:
Dim k as Long
Dim myChar as String
Dim workString as String

workString = "blah blah blah BU BU BU"

for k = 1 to Len(workString)
myChar = mid(workString, k, 1)
'что-то делаем с myChar
next


Строку в Excel? Вообще СТРОКА в листе XL это 256 ячеек (от A до IV) у которых цифра в адресе одинаковая, а то, что ты спрашивал в начале, называется диапазон.
А по обработке я тебе уже сказал — в Value будет массив из Variant структура немного витиеватая, но разобраться не трудно {Лист, ЯчейкаX, ЯчейкаY}. Или можно
Dim myCell  as Excel.Range
For each myCell in ThisWorkbook.ActiveSheet.Range("A1:C1")
'чёта делаешь
next


Обработать каждый символ в Ячейке, т.е. формат ему задать и пр.? — Можно и это, свойство называется Range.Characters оно есть обект Read/Write и там есть Font. Непомню точно, но вродь даже его в For Each можно сувать.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[4]: VBA в EXCEL
От: Аноним  
Дата: 11.01.08 11:26
Оценка:
Здравствуйте, globalist, Вы писали:

G>А можно это сдлать с помощью cells,а не range?



Извините, я по забывчивости ввел Вас в заблуждение. Дело в том, что даже если ссылаться на Range("A1:D1").Value
т.е. 1 строчку, в xlsData будет двухмерный массив, и соответственно, приведенный мной выше код не будет работать.
Вот новая версия (апробированная), в т.ч. и по Cells.
Sub x()
    Dim I As Long
    Dim J As Long
    Dim xlsData
'    xlsData = Application.ActiveSheet.Range("A1:D1").Value
    xlsData = Application.ActiveSheet.Range(Cells(1, 1), Cells(2, 4)).Value ' здесь для разнообразия 2 строки...
    For I = 1 To UBound(xlsData, 2) 'по столбцам
        For J = 1 To UBound(xlsData, 1) 'по строкам
            Debug.Print xlsData(J, I)
        Next J
    Next I
End Sub


Но если надо пробежаться по разным строкам, можно и так (r — нужная строка):

    Dim r As Long: r = 1' ссылка на строку № 1
    xlsData = Application.ActiveSheet.Range("A" & r & ":D" & r).Value
Re[2]: VBA в EXCEL
От: globalist  
Дата: 11.01.08 17:02
Оценка:
Большое спасибо вы мне очень помогли!!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.