download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Сортиране на данни с VBA Excel

Автор
Съобщение
ps666
Чет, 06.03.14, 17:39
Здравейте,

Захванал съм се с една сложна за мен задача, но за повечето от вас доста елементарна надявам се.
Та втпросът ми е следният:
Искам да сортирам и копирам данни по предварително зададен признак (текст) от един Sheet (Sheet2) в друг (Sheet3), с помощта на бутон, който се намира в Sheet1. Стойността, по която ще се извърва сортирането е зададена с ComboBox.
т.е имам набор от данни съхранявани в Sheet2 (населено място, община, област). Искам когато кликна върху бутона за сортиране в Sheet1, всички съвпадения по предварително зададения признак да бъдат копирани заедно със целия ред и записани на точно определено място в Sheet 3 - примерно като начало на записа да се зададе C3.
Това е кода който използвах, но имам два проблема:
1. Кода сработва единствено когато бутона е инсталиран на листа с данни (Sheet2)
2. Данните се записват в Sheet3 единствено от клетка А1 (дава ми грешка когато се опитам да променя адреса на клетката).
Етого и кода:

Private Sub CommandButton1_Click()
Dim startRa As Range
Dim endRa As Range
Dim DataRowNum As Integer, SheetRowNum As Integer

Range("A1").Select
Cells.Find(What:=ComboBox1.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
Set startRa = ActiveCell

Do
    Set endRa = ActiveCell
    Cells.Find(What:=ComboBox1.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).Activate
Loop While ActiveCell.Row = endRa.Row + 1

Rows(startRa.Row & ":" & endRa.Row).Select

Selection.Copy Destination:=Sheet3.Range("a65536").End(xlUp).Offset(1, 0)

End Sub

Ще ви бъда много благодарен , ако някой успее да ни помогне

plamil
Пет, 07.03.14, 07:39

RE: Сортиране на данни с VBA Excel

” ...
Етого и кода:

Private Sub CommandButton1_Click()
Dim startRa As Range
Dim endRa As Range
Dim DataRowNum As Integer, SheetRowNum As Integer

Range("A1").Select „

Как определяш Range?
Като една клетка, като няколко клетки, като колона или като наименована област?
Защото нищо чудно Ексела да възприема А1 като клетка и нищо извън тази клетка не го интересува.
Опитай с А:А - избираш цялата колона А

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.