我的家人擁有一家中等規模的運輸公司,當我3年前進入這個行業時,我們沒有軟件來管理我們必須做的所有運輸。有20名車手出現這個問題,所以我坐下來,學習了VBA的基礎知識,並製作了一款應用程序,通過電子郵件向不同的駕駛員管理/發送不同的行程。它現在「起作用」,但我們正在計劃未來的擴展,所以我開始學習Xojo(即時消息在Mac上,與VBA最接近)計劃程序
我們收到一個Excel文件,告訴我們哪些行程需要提前一天完成(我們運送人)。基本上,它與所有不同的客戶的表。我在「星期文件」中導入此工作表,以便通過不同的宏使用這些數據。在這張表中有很多不相關的信息,但我們也會感興趣的是Type,Number和Hour。因此,基本上,我必須把我所有的行(100+),按類型和編號分組,然後按小時順序排列它們。
繼承人什麼我的表如下排序時像一個簡單的例子(不同的顏色有不同的驅動程序):
我覺得我的程序,得到這樣的結果是不是真的那麼好。我使用If語句檢查數據表中的所有行(它是隱藏的),檢查它是否爲新類型或行程號,將時間和行引用(第一行,最後一行)保存在數組中,然後循環通過數組來導出顯示頁上的範圍。請記住,我在瞭解VBA存在3周後寫了這篇文章。它「有效」,但它喜歡有一個更好的過程。
我將使用SQLite將所有信息存儲在應用程序即時開始寫入。我喜歡建議如何使用SQL更快地對所有數據進行排序。我正在尋找一個程序,我可以找出一種方法來編碼。
繼承人我做的代碼樣本。
For RowSearch = 2 To RowCount
If Sheets(DataSheetName).Cells(RowSearch, 2).Value <> Sheets(DataSheetName).Cells(RowSearch - 1, 2).Value _
Or Sheets(DataSheetName).Cells(RowSearch, 3).Value <> Sheets(DataSheetName).Cells(RowSearch - 1, 3).Value Then
Blocks(TripCount, 1) = Position
Blocks(TripCount, 2) = RowSearch - 1
Blocks(TripCount, 3) = Format(Sheets(DataSheetName).Cells(Position, 4).Value, "hh:mm")
TripCount = TripCount + 1
Position = RowSearch
End If
Next RowSearch
Blocks(TripCount, 1) = Position
Blocks(TripCount, 2) = RowSearch - 1
Blocks(TripCount, 3) = Format(Sheets(DataSheetName).Cells(Position, 4).Value, "hh:mm")
'Sorts the blocks by time, loops trought the trips row range to sort the trips by time and type and writes the blocks
RowSelect = 1
For BlockSearch = 1 To TripCount
TempHour = "99:99"
For RowOrder = 1 To TripCount
If Blocks(RowOrder, 3) <= TempHour Then
TempHour = Blocks(RowOrder, 3)
Trips(BlockSearch, 1) = Blocks(RowOrder, 1)
Trips(BlockSearch, 2) = Blocks(RowOrder, 2)
RowChange = RowOrder
End If
Next RowOrder
RowRange = Trips(BlockSearch, 2) - Trips(BlockSearch, 1) + 1
FieldValue = Sheets(DataSheetName).Range("A" & Trips(BlockSearch, 1) & ":" & "R" & Trips(BlockSearch, 2))
Sheets(SheetName).Range("A" & RowSelect & ":" & "R" & RowSelect + RowRange - 1) = FieldValue
Sheets(SheetName).Rows(RowSelect + RowRange).Insert Shift = xlDown
RowSelect = RowSelect + RowRange + 1
Blocks(RowChange, 3) = "99:99"
Next BlockSearch
你做了一個很好的選擇使用一個數據庫來存儲你的數據。雖然我覺得你對數據庫查詢不是很熟悉? SQL查詢是一種簡單直接的方式,可以查看數據庫的排序/分組/過濾。您的VBA代碼可能會被單個SQL查詢替代。 – Justin
請務必訪問着名的Canuck和Database Genius Tony Teows,地址是http://msmvps.com/blogs/access/archive/tags/Granite+Fleet+Manager/default.aspx ...他使用數據庫管理卡車車隊! – Smandoli
你剛剛在這裏公開了一堆客戶數據嗎? –