İyi akşamlar Optimize ihtiyaç makro.ve</p> <p>VBA çok yeni ... sadece yaklaşık bir hafta boyunca onunla oynamaya edilmiş, ve bir optimize etmek için yardımına ihtiyacım var ... VBA kodunu
Çalışması için yaklaşık 23 saniye gerekiyor ... ve biraz düşürmeyi umuyordu. "Gizli" den "UPS Tarifesi"
kopyalanmıştır L:ilk adım sonra DB'den bir tablo "gizli" ve son olarak sütunlar B adı verilen bir çalışma içine indirilir "dosya konumu seçin" bir buton olup
Herhangi öneri büyük Sen tüm süreci yavaşlatıyor olabilir bir OLEDB Bağlantı yapıyoruz
Sub Selectfile()
Dim filename As String
filename = Application.GetOpenFilename(MultiSelect:=False)
Range("c2") = filename
Dim StartTime As Double
Dim SecondsElapsed As Double
StartTime = Timer
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sQRY As String
Dim rng As Range
Dim cell As Range
Dim sourcefile As String
sourcefile = Sheet1.Range("C2")
Sheets("Hidden").Visible = True
Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
Set rng = Sheet9.Range("B1:B762")
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & sourcefile & ";"
sQRY = "SELECT * FROM Tariff"
rs.CursorLocation = adUseClient
rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly
Application.ScreenUpdating = False
Sheet9.Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
For Each cell In rng
If cell <> "Letter" And cell <> "NDA" And cell <> "NDAS" And cell <> "2DA" And cell <> "3DS" And cell <> "GND" Then cell.Value = cell.Value * 1
Next cell
Sheets("Hidden").Select
Range("B1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("UPS Tariff").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Sheets("Hidden").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Clear
Sheets("Info").Select
Sheets("Hidden").Visible = xlVeryHidden
SecondsElapsed = Round(Timer - StartTime, 2)
'Notify user in seconds
MsgBox "This code ran successfully in " & SecondsElapsed & " seconds", vbInformation
End Sub
Her Birinizin Döngüsünün Amacı Nedir? Ne düşünüyorsunuz cell.Value = cell.Value * 1' tamamlayabilir? Ayrıca, döngünüzün 'if '' inin, hücre başına 6 kez, hücrenin değerini ve 'Rng'nin boyutuyla (762) çarpılacağını unutmayın! Yani ya sadece bir kez bir değişkenle okuyun ya da bir dizi kullanın. –