我正在解析通過幾千個電子郵件掃描錯誤。解析代碼將結果轉儲爲excel未排序爲4列。答:命中,B:總計,C:百分比,D:用戶。如何通過VBA對Outlook中的excel列進行排序。代碼沒有排序
這工作正常。不過,我想按總點擊量(或百分比)對數據進行排序,而無需在Excel中手動執行。這是因爲這會生成一個包含多個其他字段組的報告,我想對每個字段進行排序。
這個問題是沒有什麼,我想出來的是能夠從前景實際排序。代碼執行沒有錯誤,但沒有任何反應。我能夠使用以下方式成功地在excel宏中排序。
Sub test()
With ActiveSheet
Call .Range("A3:D30").Sort(Key1:=Range("A3"), Order1:=xlDescending, Header:=xlNo)
End With
End Sub
我再放入剛纔通話行成我的Outlook VBA代碼,定義一切(Excel對象庫引用)
With xlSheet
If i > 0 Then hitp = Round(hits/i * 100, 1) Else hitp = "0"
Dim vstr As Variant
Dim temph As String
j = 2
.Range("A1:D1").Merge
.Range("A1:D1").Value = "Basic Errors"
.cells(j, 1).Value = "Total Hits:"
.cells(j, 2).Value = "Total Sent:"
.cells(j, 3).Value = "Percentage:"
.cells(j, 4).Value = "Agent:"
For Each vstr In userhit.Keys()
j = j + 1
temph = userhit(vstr)
If temph = "" Then temph = "0"
.cells(j, 1).Value = temph
.cells(j, 2).Value = userhit(vstr) + userclean(vstr)
.cells(j, 3).Value = Round(userhit(vstr)/(userhit(vstr) + userclean(vstr)) * 100, 1) & "%"
.cells(j, 4).Value = vstr
DoEvents
Next
Call .Range("A3:D30").Sort(Key1:=Range("A3"), Order1:=xlDescending, Header:=xlNo)
End With
我使用的字典(其中14),以跟蹤各種事情這就是爲什麼在傾銷之前將它們分類爲vba的原因將會非常繁瑣,儘管如果我絕望的話可能是可行的。可悲的是,這並不排序Excel中的任何東西,儘管運行沒有錯誤,並且如果我將它複製到Excel宏中也是如此。
我也見過這樣的排序的另一種方法像顯示在這個崗位https://stackoverflow.com/questions/22220127/sorting-excel-range-in-class-module-from-outlook-or-access-vba
With xlSheet.Sort
.SetRange Range((LeftColStr & RowStart & ":" & RightColStr & RowEnd))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
但是,當我想,沒有他或我的工作結束。所以我轉向目前的方法認爲它會更容易,但事實並非如此。如果代碼在excel宏中,代碼仍然有效,但是儘管在Outlook中執行,它仍然無效。任何幫助都將被大量佔用。
您是否嘗試過正確的代碼:'Key1:=。Range(「A3」)'(Range before Range)?無論如何,即使不修復問題,也必須進行此修改。 –
@ A.S.H我認爲你發現了這個問題。這在沒有'。'的Excel中工作。因爲它默認爲activesheet。我必須等到明天回去工作才能進行測試。如果有效,我會在這裏更新。 –
如果你使用'.Range(「A3:D30」),它適用於我。Sort Key1:=。Range(「A3」),Order1:= xlDescending,Header:= xlNo',即:移除'Call',remove括號並在第二個'Range'出現之前添加該點 – user3598756