Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2010, 04:15   #1
Rider-12
 
Регистрация: 17.06.2010
Сообщений: 4
Вопрос сортировка на нескольких листах

Имеется два листа "Список абитуриентов" и "2", на первом есть форма

Код:
Private Sub CommandButton1_Click()
Dim Surname, Name, Otchestvo, Ekzamen, Attestat, EGE As String
Dim K, Summa, i, j, row, row1, ab As Integer

i = 2
While Sheets("Список абитуриентов").Cells(i, 1).Value <> "" Or Sheets("Список абитуриентов").Cells(i, 2).Value <> "" Or Sheets("Список абитуриентов").Cells(i, 3).Value <> "" Or Sheets("Список абитуриентов").Cells(i, 4).Value <> "" Or Sheets("Список абитуриентов").Cells(i, 5).Value <> "" Or Sheets("Список абитуриентов").Cells(i, 6).Value <> "" Or Sheets("Список абитуриентов").Cells(i, 7).Value <> ""
    i = i + 1
Wend
row = i

With UserForm2
    Surname = TextBox1.Text
    Name = TextBox2.Text
    Otchestvo = TextBox3.Text
    EGE = TextBox4.Text
    Ekzamen = TextBox5.Text
    Attestat = TextBox6.Text
    Summa = Val(Ekzamen) + Val(Attestat) + Val(EGE)
    K = Val(K) + 1
End With

If Val(EGE) <= 2 Or Ekzamen <= 2 Or Attestat <= 2 Then
   j = 2
   While Sheets("2").Cells(j, 1).Value <> "" Or Sheets("2").Cells(j, 2).Value <> "" Or Sheets("2").Cells(j, 3).Value <> "" Or Sheets("2").Cells(j, 4).Value <> "" Or Sheets("2").Cells(j, 5).Value <> "" Or Sheets("2").Cells(j, 6).Value <> "" Or Sheets("2").Cells(j, 7).Value <> ""
      j = j + 1
   Wend
   row1 = j
      With Sheets("2")
        .Cells(row1, 1) = Surname
        .Cells(row1, 2) = Name
        .Cells(row1, 3) = Otchestvo
        .Cells(row1, 4) = EGE
        .Cells(row1, 5) = Ekzamen
        .Cells(row1, 6) = Attestat
        .Cells(row1, 7) = Summa
        .Cells(row1, 8) = K
        [a2:g1000].sort [a2]
      End With
Else
   With Sheets("Список абитуриентов")
     .Cells(row, 1) = Surname
     .Cells(row, 2) = Name
     .Cells(row, 3) = Otchestvo
     .Cells(row, 4) = EGE
     .Cells(row, 5) = Ekzamen
     .Cells(row, 6) = Attestat
     .Cells(row, 7) = Summa
     .Cells(2, 8) = K
     [a2:g1000].sort [a2]
   End With
End If

With UserForm2
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
End With
With Sheets("2")
    [a2:g1000].sort [a2]
End With

End Sub
Private Sub CommandButton2_Click()
UserForm2.Hide
End Sub

Private Sub TextBox3_Change()

End Sub

Private Sub UserForm_Click()

End Sub
и клавиша
Код:
Sub sort()
    [a2:g1000].sort [a2]
With Sheets("2")
    [a2:g1000].sort [a2]
End With
End Sub
на обоих листах таблицы, необходима сортировка данных в таблицах по первому столбцу, по коду видно - пытался сделать сортировку как на клавише, так и при вводе данных в форме автоматом, но почему-то сортируется только первый лист, второй остается неизменным...
может кто-нибудь подсказать почему не работает, что надо изменить/добавить?
Rider-12 вне форума Ответить с цитированием
Старый 17.06.2010, 07:27   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Rider-12.
Код:
Sub sort()
   [a2:g1000].sort [a2] 'текущий лист
With Sheets("2") '  лист с именем "2"
    .[a2:g1000].sort .[a2] 'в Вашем коде нет лидирующих точек 
End With
End Sub
добавьте точки, и будет Вам счастье.

Евгений.

P.S. выкладывая сообщение или вопрос, не забывайте обращаться к тем кому его адресуете, не знаете как - можно просто поздоровавшись.
Teslenko_EA вне форума Ответить с цитированием
Старый 18.06.2010, 03:34   #3
Ilya_L
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 78
По умолчанию

спасибо большое Teslenko_EA
Ilya_L вне форума Ответить с цитированием
Старый 18.06.2010, 09:08   #4
Ilya_L
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 78
По умолчанию

такую сортировку можно заставить работать по убыванию?
Ilya_L вне форума Ответить с цитированием
Старый 19.06.2010, 14:29   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Ilya_L.
"..спасибо большое..", Вам тоже интересна эта тема, но придерживайтесь правила: один вопрос / одна тема и для вопросов всё же создавайте собственную тему.

Явное указание направления сортировки не обязательно, по умолчанию (без указания направления) выполняется сортировка по возрастанию
но указывая направление можно им управлять:
Код:
   [a2:g1000].sort [a2], xlAscending 'возрастание
   [a2:g1000].sort [a2], xlDescending 'убывание
Евгений.

P.S. свои сообщения я подписываю в надежде, что обращаться ко мне будут по имени.
Teslenko_EA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
связывение данных на листах merlin09 Microsoft Office Excel 0 01.11.2009 23:09
Одинаковые действия на нескольких листах ruavia3 Microsoft Office Excel 6 10.04.2009 14:32
Выполнение макроса во всех листах Bu$ter Microsoft Office Excel 18 14.11.2008 14:34
image. печать большого изображения на нескольких листах OLEG'arh Общие вопросы Delphi 1 20.06.2008 13:06
Суммесли и диапазоны на листах _ДЭН_78 Microsoft Office Excel 1 18.09.2007 15:38