Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 20:41 25.06.24 
Компютри и Интернет
   >> Visual Basic
Всички теми Следваща тема *Кратък преглед

Тема как да оптимизирам кода?  
АвторACtron-B (Нерегистриран)
Публикувано02.03.06 11:54



Някой може ли да ми помогне с идеи за оптимизация на долният код. Той служи за търсене в колоната G на Sheet1: Text1.Text = ExcelApp.Sheets("Sheet1").Range("G" & vertical). Проблемът ми е точно тук, много се бави докато прерови колоната с 2000 реда. Ясно ми е че много от вас ще кажач: "Защо използваш Ексел, глупаво е!" Няма как налага се да е Ексел!


Private Sub command1_click()
Screen.MousePointer = vbHourglass
DoEvents
If Text1.Text <> "" Then
vertical = 2
While ExcelApp.Sheets("Sheet1").Range("G" & vertical) <> ""
If Text1.Text = ExcelApp.Sheets("Sheet1").Range("G" & vertical) Then
Label1.Caption = ExcelApp.Sheets("Sheet1").Range("d" & vertical)
Label2.Caption = ExcelApp.Sheets("Sheet1").Range("b" & vertical) - _
ExcelApp.Sheets("Sheet1").Range("H" & vertical)
Label4.Caption = ExcelApp.Sheets("Sheet1").Range("f" & vertical)
If Label2.Caption <= 0 Then
Screen.MousePointer = vbNormal
DoEvents
Msg = "Няма налично количество"
End If
Text2.SetFocus
Screen.MousePointer = vbNormal
DoEvents
Exit Sub
End If
vertical = vertical + 1
Wend
End If
PROMPT = MsgBox("Стока с такъв код не е намерена!", 0, "Внимание!")
Text1.SetFocus
Screen.MousePointer = vbNormal
DoEvents

End Sub



Тема Re: как да оптимизирам кода?нови [re: ACtron-B]  
АвторActiveX (Нерегистриран)
Публикувано02.03.06 14:11



Ами нормално е да се бави, защото се прехвърля информация от едно приложение към друго, което е доста тромаво.
Но може да си оптимизираш малко кода :
- не сравнявай в цикъла стойността на текстовото поле Text1 - първо запиши тази стойност в една стрингова променлива, и ползвай променливата при сравнението;
- по-добро решение на ExcelApp.Sheets("Sheet1").Range("G" & vertical) :
dim xlSheet as Excel.Weorksheet
set xlSheet = excelApp.Sheets("Sheet1")

и по-надолу ползвай xlSheet вместо горното - това ускорява работата с този обект



Тема Re: как да оптимизирам кода?нови [re: ACtron-B]  
Автор wqw (АзСъмЖив)
Публикувано02.03.06 15:29



Може през clipboard-а да пробваш дали е по-бързо. Виж това:

Option Explicit


Private Function GetColumnsData(oSheet As Object, sColumns As String) As Collection
Dim vElem As Variant

Set GetColumnsData = New Collection
For Each vElem In Split(sColumns, " ")
Clipboard.Clear
oSheet.Range(vElem & ":" & vElem).Copy
GetColumnsData.Add Split(Clipboard.GetText(), vbCrLf), vElem
Next
End Function


Private Sub Form_Load()
Dim oData As Collection
Dim vElem As Variant

With CreateObject("Excel.Application")
.Visible = True
.RecentFiles.Item(1).Open
Set oData = GetColumnsData(.Sheets("Sheet1"), "G H A B C D E")
End With
Debug.Print "size = "; UBound(oData("G"))
For Each vElem In oData("G")
Debug.Print vElem
Next
End Sub

cheers,
</wqw>



Тема Re: как да оптимизирам кода?нови [re: ACtron-B]  
АвторActron-B (Нерегистриран)
Публикувано04.03.06 15:43



Благодаря за помоща!

Оправих го, стана доста бързо с жертване на няколко секунди повече при зареждане на приложението. Просто взех стойностите от колоната която ми трябва и ги записах в MSFlexGrid, после вместо в ексел търся в Grid което е много по бързо.




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.