-
Notifications
You must be signed in to change notification settings - Fork 0
/
Module1.bas
205 lines (124 loc) · 4.75 KB
/
Module1.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
Attribute VB_Name = "Module1"
Option Explicit 'With this enabled, you have to declare the data type of each variable. Ensuring optimal memeory usage
Public Sub filterRear()
' Function to Filter Rears
Call ConvertColumnToText
Dim mystr As String 'string variable to store value from the 'TRUCK NO.' column from the scedule
Dim strSplit() As String 'string array to store thetruck numbers after splitting
Dim tab_rearload As ListObject, tab_schedule As ListObject, rear_filter As ListObject, tab_rearList As ListObject 'Variables to store and call columns of the tables
Dim x As Integer, y As Integer, r As Integer ' x, y are used for looping and r is to keep
Set tab_rearload = ActiveSheet.ListObjects("Rear Loaders")
Set tab_schedule = ActiveSheet.ListObjects("Schedule")
tab_schedule.HeaderRowRange.Copy
Worksheets(3).Select
Range("A1").PasteSpecial xlPasteValues
Worksheets(2).Select
r = 2
For y = 1 To tab_schedule.ListColumns("TRUCK NO.").DataBodyRange.Count
For x = 1 To tab_rearload.ListColumns("Rear Loaders").DataBodyRange.Count
mystr = tab_schedule.ListColumns("TRUCK NO.").DataBodyRange(y).Value
' Finds the / and splits the string
If InStr(mystr, "/") > 0 Then
strSplit() = Split(mystr, "/")
mystr = strSplit(0)
End If
'Copies the rows containing rear loader truck numbers and pastes it in sheet 3
If mystr = tab_rearload.ListColumns("Rear Loaders").DataBodyRange(x) And (tab_schedule.ListColumns("LOAD NO.").DataBodyRange(y).Value <> "-" Or tab_schedule.ListColumns("STOPS").DataBodyRange(y).Value <> "-") Then
tab_schedule.ListRows(y).Range.Copy
Worksheets(3).Select
Range("A" & r).PasteSpecial xlPasteValues
r = r + 1
Range("A1").Select
Worksheets(2).Select
Exit For
End If
Next x
Next y
Worksheets(3).Select
Range("A1").Select
If ActiveCell.ListObject Is Nothing Then
Call ConvertToTable("RearLoaderList")
End If
Set tab_rearList = Worksheets(3).ListObjects("RearLoaderList")
tab_rearList.ShowAutoFilterDropDown = True
Call TableFormat
Worksheets(2).Select
End Sub
Public Sub ConvertColumnToText()
Dim x As Integer
Dim tab_rearload As ListObject, tab_schedule As ListObject
Dim header_name As String
Dim schedule As String
Worksheets(2).Select
header_name = "Rear Loaders"
Range("B1").Select
Selection.End(xlDown).Select
If ActiveCell.ListObject Is Nothing Then
Call ConvertToTable(header_name)
End If
Selection.ListObject.name = header_name
ActiveCell.Value = header_name
Set tab_rearload = Worksheets(2).ListObjects(header_name)
tab_rearload.ShowAutoFilterDropDown = False
schedule = "Schedule"
Range("F1").Select
Selection.End(xlDown).Select
If ActiveCell.ListObject Is Nothing Then
Call ConvertToTable(schedule)
End If
Selection.ListObject.name = schedule
Set tab_schedule = ActiveSheet.ListObjects(schedule)
tab_schedule.ShowAutoFilterDropDown = False
Call ConvertToText
End Sub
Public Sub ConvertToTable(tableName As String)
Dim tbl As Range
Dim ws As Worksheet
Set tbl = Selection.CurrentRegion
Set ws = ActiveSheet
ws.ListObjects.Add(SourceType:=xlSrcRange, Source:=tbl).name = tableName
End Sub
Sub ConvertToText()
Range("Rear_Loaders[Rear Loaders]").Select
Selection.NumberFormat = "@"
Range("J4").Select
Range("Schedule[TRUCK NO.]").Select
Selection.NumberFormat = "@"
Range("A1").Select
End Sub
Public Sub TableFormat()
'
' TableFormat Macro
'
'
Range("RearLoaderList[#All]").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With Selection.Font
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = True
Selection.Font.Bold = False
Range("A1").Select
End Sub