Vous êtes sur la page 1sur 4

Option Explicit

Public Sub In5()


'handle errors inline
On Error Resume Next
Dim App As Object
Set App = GetObject(, "Excel.Application") 'depends on application
'check to see if application is running
If Err Then
'no, application will need to be started
Err.Clear
Set App = CreateObject("Excel.Application") 'depends on application
'check to see if application was started
If Err Then
'no, application could not be started - exit
Exit Sub
End If
End If

Dim Workbook As Excel.Workbook


Set Workbook = App.Workbooks.Add
Dim WS As Excel.Worksheet
'Set WSTrai = App.Worksheets.Add
'WSTrai.Name = "Phan lop trai"
'Set WSPhai = App.Worksheets.Add
'With WSPhai
' .Name = "Phan lop phai"
'End With

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim m As Integer
Dim n1 As Integer
Dim n2 As Integer

Dim bo As Boolean
Dim strTemp As String
Dim Exlop1() As ExLop

'Khoi tao
Set WS = Workbook.Sheets.Add
WS.Name = "Tong hop"
WS.Range("A1").value = "Ben trai"
WS.Range("A1:K1").Merge
WS.Range("A1:K1").HorizontalAlignment = xlCenter
WS.Range("L1").value = "Ben phai"
WS.Range("L1:U1").Merge
WS.Range("L1:U1").HorizontalAlignment = xlCenter
WS.Cells(2, 1).value = "Ten coc"
WS.Cells(2, 2).value = "Ly trinh"
WS.Cells(2, 3).value = "Phia"
WS.Cells(2, 4).value = "Do doc"
WS.Cells(2, 5).value = "STT lop"
WS.Cells(2, 6).value = "Be rong lop"
WS.Cells(2, 7).value = "Dien tich lop"
WS.Cells(2, 8).value = "KC toi tim 1"
WS.Cells(2, 9).value = "Cao do 1"
WS.Cells(2, 10).value = "KC toi tim 2"
WS.Cells(2, 11).value = "Cao do 2"
WS.Cells(2, 12).value = "Ten coc"
WS.Cells(2, 13).value = "Ly trinh"
WS.Cells(2, 14).value = "Phia"
WS.Cells(2, 15).value = "Do doc"
WS.Cells(2, 16).value = "STT lop"
WS.Cells(2, 17).value = "Be rong lop"
WS.Cells(2, 18).value = "Dien tich lop"
WS.Cells(2, 19).value = "KC toi tim 1"
WS.Cells(2, 20).value = "Cao do 1"
WS.Cells(2, 21).value = "KC toi tim 2"
WS.Cells(2, 22).value = "Cao do 2"

'Tim ten coc


ReDim Exlop1(0 To 0) As ExLop
Exlop1(0).strTencoc = lop2(0).strTencoc
k = 0
For i = 0 To UBound(lop2)
bo = False
For j = 0 To UBound(Exlop1)
If (Exlop1(j).strTencoc <> lop2(i).strTencoc) Then
bo = True
Else
bo = bo And False
End If
Next

If bo = True Then
k = k + 1
ReDim Preserve Exlop1(0 To k) As ExLop
Exlop1(k).strTencoc = lop2(i).strTencoc
Exlop1(k).ilopmax = 0
End If

Next

'Tim max stt coc


For i = 0 To UBound(Exlop1)
For j = 0 To UBound(lop2)
If ((Exlop1(i).strTencoc = lop2(j).strTencoc) And (Exlop1(i).ilopmax) <
lop2(j).isttlop) Then _
Exlop1(i).ilopmax = lop2(j).isttlop
Next
Next

'In
If ckbPL1 = False Then
l = 0
For i = 0 To UBound(Exlop1)
For j = 1 To Exlop1(i).ilopmax

For k = 0 To UBound(lop2)
If ((lop2(k).strTencoc = Exlop1(i).strTencoc) And (lop2(k).isttlop = j) And
lop2(k).strPhia = "Trai") Then
WS.Cells(3 + l, 1).value = lop2(k).strTencoc
WS.Cells(3 + l, 2).value = lop2(k).strLT
WS.Cells(3 + l, 3).value = lop2(k).strPhia
WS.Cells(3 + l, 4).value = lop2(k).dDD
WS.Cells(3 + l, 5).value = lop2(k).isttlop
WS.Cells(3 + l, 6).value = lop2(k).dBeronglop
WS.Cells(3 + l, 7).value = lop2(k).dDientichlopChuan
For m = LBound(lop2(k).CT_CD_Quydoi) To UBound(lop2(k).CT_CD_Quydoi) Step 2
WS.Cells(2 + l + (m + 2) / 2, 8).value = lop2(k).CT_CD_Quydoi(m).DX
WS.Cells(2 + l + (m + 2) / 2, 9).value = lop2(k).CT_CD_Quydoi(m).DY
WS.Cells(2 + l + (m + 2) / 2, 10).value = lop2(k).CT_CD_Quydoi(m + 1).DX
WS.Cells(2 + l + (m + 2) / 2, 11).value = lop2(k).CT_CD_Quydoi(m + 1).DY
Next
n1 = Int(UBound(lop2(k).CT_CD_Quydoi) / 2 + 1)
Exit For
End If
Next

For k = 0 To UBound(lop2)
If ((lop2(k).strTencoc = Exlop1(i).strTencoc) And (lop2(k).isttlop = j) And
lop2(k).strPhia = "Phai") Then
WS.Cells(3 + l, 12).value = lop2(k).strTencoc
WS.Cells(3 + l, 13).value = lop2(k).strLT
WS.Cells(3 + l, 14).value = lop2(k).strPhia
WS.Cells(3 + l, 15).value = lop2(k).dDD
WS.Cells(3 + l, 16).value = lop2(k).isttlop
WS.Cells(3 + l, 17).value = lop2(k).dBeronglop
WS.Cells(3 + l, 18).value = lop2(k).dDientichlopChuan
For m = LBound(lop2(k).CT_CD_Quydoi) To UBound(lop2(k).CT_CD_Quydoi) Step 2
WS.Cells(2 + l + (m + 2) / 2, 19).value = lop2(k).CT_CD_Quydoi(m).DX
WS.Cells(2 + l + (m + 2) / 2, 20).value = lop2(k).CT_CD_Quydoi(m).DY
WS.Cells(2 + l + (m + 2) / 2, 21).value = lop2(k).CT_CD_Quydoi(m + 1).DX
WS.Cells(2 + l + (m + 2) / 2, 22).value = lop2(k).CT_CD_Quydoi(m + 1).DY
Next
n2 = Int(UBound(lop2(k).CT_CD_Quydoi) / 2 + 1)
Exit For
End If
Next

If n1 > n2 Then
l = l + n1
Else
l = l + n2
End If
n1 = 0
n2 = 0

Next
Next

Else

l = 0
For i = 0 To UBound(Exlop1)
For j = Exlop1(i).ilopmax To 1 Step -1

For k = 0 To UBound(lop2)
If ((lop2(k).strTencoc = Exlop1(i).strTencoc) And (lop2(k).isttlop = j) And
lop2(k).strPhia = "Trai") Then
WS.Cells(3 + l, 1).value = lop2(k).strTencoc
WS.Cells(3 + l, 2).value = lop2(k).strLT
WS.Cells(3 + l, 3).value = lop2(k).strPhia
WS.Cells(3 + l, 4).value = lop2(k).dDD
WS.Cells(3 + l, 5).value = lop2(k).isttlop
WS.Cells(3 + l, 6).value = lop2(k).dBeronglop
WS.Cells(3 + l, 7).value = lop2(k).dDientichlopChuan
For m = LBound(lop2(k).CT_CD_Quydoi) To UBound(lop2(k).CT_CD_Quydoi) Step 2
WS.Cells(2 + l + (m + 2) / 2, 8).value = lop2(k).CT_CD_Quydoi(m).DX
WS.Cells(2 + l + (m + 2) / 2, 9).value = lop2(k).CT_CD_Quydoi(m).DY
WS.Cells(2 + l + (m + 2) / 2, 10).value = lop2(k).CT_CD_Quydoi(m + 1).DX
WS.Cells(2 + l + (m + 2) / 2, 11).value = lop2(k).CT_CD_Quydoi(m + 1).DY
Next
n1 = Int(UBound(lop2(k).CT_CD_Quydoi) / 2 + 1)
Exit For
End If
Next

For k = 0 To UBound(lop2)
If ((lop2(k).strTencoc = Exlop1(i).strTencoc) And (lop2(k).isttlop = j) And
lop2(k).strPhia = "Phai") Then
WS.Cells(3 + l, 12).value = lop2(k).strTencoc
WS.Cells(3 + l, 13).value = lop2(k).strLT
WS.Cells(3 + l, 14).value = lop2(k).strPhia
WS.Cells(3 + l, 15).value = lop2(k).dDD
WS.Cells(3 + l, 16).value = lop2(k).isttlop
WS.Cells(3 + l, 17).value = lop2(k).dBeronglop
WS.Cells(3 + l, 18).value = lop2(k).dDientichlopChuan
For m = LBound(lop2(k).CT_CD_Quydoi) To UBound(lop2(k).CT_CD_Quydoi) Step 2
WS.Cells(2 + l + (m + 2) / 2, 19).value = lop2(k).CT_CD_Quydoi(m).DX
WS.Cells(2 + l + (m + 2) / 2, 20).value = lop2(k).CT_CD_Quydoi(m).DY
WS.Cells(2 + l + (m + 2) / 2, 21).value = lop2(k).CT_CD_Quydoi(m + 1).DX
WS.Cells(2 + l + (m + 2) / 2, 22).value = lop2(k).CT_CD_Quydoi(m + 1).DY
Next
n2 = Int(UBound(lop2(k).CT_CD_Quydoi) / 2 + 1)
Exit For
End If
Next

If n1 > n2 Then
l = l + n1
Else
l = l + n2
End If
n1 = 0
n2 = 0

Next
Next

End If

'MsgBox strTemp

Erase Exlop1
App.Visible = True
App = Nothing
Workbook = Nothing
WS = Nothing
End Sub

Vous aimerez peut-être aussi