2015-07-07 3 views
0

Я работаю над проектом, который сортирует все ячейки на другом листе на основе критериев. Мне нужно активировать ячейку на другом листе, чтобы она работала. Я попытался найти решение, но не повезло. Я записал макрос из моей книги и немного изменил его, чтобы он соответствовал моей потребности. Когда я запускаю код, появляется Runtime Error 1004. мне нужен код, чтобы заменитьВыберите ActiveCell на другом листе

SetRange ActiveCell.Offset(-1, 0).Range("A1:AF30436") 

Любое предложение будет оценено.

Вот код:

Sheets("Source").Select 
ActiveWorkbook.Worksheets("Source").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Source").Sort.SortFields.Add Key:=ActiveCell.Range _ 
    ("A1:A30435"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
With ActiveWorkbook.Worksheets("Source").Sort 
    .SetRange ActiveCell.Offset(-1, 0).Range("A1:AF30436") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
+0

Ваш вопрос не ясно: вы хотите активировать Cell cA в Sheet sA и получить сортировку листа sB в соответствии со значением в cA? Возможно, вам стоит попробовать найти решение за 2 шага. Сначала попробуйте выполнить сортировку, передав значение в функцию. Затем привяжите это решение к событию на листе. – Roland

+0

Я хочу активировать cA, поэтому я могу выбрать все ячейки (исключая заголовок) и отсортировать их по алфавиту. В книге есть 30 000 строк, которые нуждаются в сортировке. Я пробовал цикл, но он слишком медленный. Код выше находится на другом листе (MAIN). Когда я нажимаю кнопку на sB (MAIN), лист sA (Source) должен выбирать все листы на этом же листе и сортироваться. – Z9z9z9

ответ

0

при записи макроса, щелкните на ячейке второго листа и начать процедуру сортировки. Макро правильно записал это.

однако, когда вы делаете это в VBA, «активная ячейка» может быть что угодно, и в большинстве случаев вам не нужно это до тех пор, как вы знаете datarange, что вам нужно работать с

dim ws as WorkSheet 
set ws = Sheets("Source") 
ws.Sort.SortFields.Clear 
ws.Sort.SortFields.Add Key:=ws.Range _ 
     ("A1:A30435"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
     xlSortNormal 
With ws.Sort 
    .SetRange Range("A1:AF30436") ' Change here to itended dataset 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
+0

Код удалил все данные в столбце F и нескольких других столбцах. Спасибо, что объяснили разницу между макросом записи и в vba – Z9z9z9

+0

вы изменили диапазон перед выполнением? – Krishna

+0

Нет. Я собирался сортировать только из ячейки A2 в ячейку AF30436, потому что у нее есть заголовок. Я не уверен, почему макрорекордер получил A1 вместо A2 – Z9z9z9

Смежные вопросы