Excel VBA排序 [英] Excel VBA Sorting

查看:121
本文介绍了Excel VBA排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Excel VBA的新手.这似乎很简单. 我需要对Access数据库中的电子表格进行排序.

I'm new to Excel VBA. This seems like it should be simple though. I need to sort a spreadsheet from a Access database.

这是我的代码.

当前,我收到1004错误. "myRange =范围(选择)"上的对象_Global的范围方法失败"

Currently I get a 1004 error. "Method of Range of Object _Global Failed" on "myRange = Range(Selection)"

非常感谢您的帮助.

Sub sortBacklog()

Dim appExcel As Excel.Application
Dim myWorkbook As Excel.Workbook
Dim myWorkSheet As Worksheet
Dim myRange As Range

Set appExcel = CreateObject("Excel.Application")
Set myWorkbook = appExcel.Workbooks.Open("C:\Users\gephilli\Desktop\Dispatch\SAP_Backlog.xls")
Set myWorkSheet = myWorkbook.Sheets(1)

myWorkSheet.Activate
myWorkSheet.Select

Range("B1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
myRange = Range(Selection)

myWorkSheet.Sort.SortFields.Clear

ActiveWorkbook.Worksheets("PLS Depot Backlog Report").Sort.SortFields.Add Key _
    :=Range("F2:F20491"), SortOn:=xlSortOnValues, Order:=xlAscending, _
    DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("PLS Depot Backlog Report").Sort
    .SetRange Range(myRange)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

ActiveWorkbook.Save
ActiveWorkbook.Close
appExcel.Quit
Set myWorkSheet = Nothing
Set myWorkbook = Nothing
Set appExcel = Nothing
End Sub

推荐答案

通常无需在VBA中选择任何内容.那是录制的宏所做的,但这不是有效的方法.尝试: 设置myrange = Sheet1.Range("B1",Sheet1.Range("B1").End(xlDown).End(xlToRight))

It is normally unnecessary to select anything in VBA. That is what recorded macros do, but it's not the efficient way. Try: Set myrange = Sheet1.Range("B1", Sheet1.Range("B1").End(xlDown).End(xlToRight))

您看到的问题实际上可能是发生错误的行中缺少设置".如果没有设置",Excel会尝试处理范围内容,而使用设置"时,它将对范围对象本身起作用.

The problem you are seeing might actually be the lack of a "set" in the line where the error occurs. Without a "set" excel tries to work on range contents, with "set" it works on the range objects themselves.

这篇关于Excel VBA排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆