ftthua2003
Thành viên chính thức


- Tham gia
- 15/8/08
- Bài viết
- 97
- Được thích
- 11
Nội dung mình gửi theo file đính kèm.
Kết quả như thế nào thì sẽ đúng?Nội dung mình gửi theo file đính kèm.
Mình gửi file và nội dung cần giúp đỡ. Mong cả nhà giúp mình với. Xin Cảm ơn cả nhà!
Private Sub CommandButton4_Click()
Dim I As Long
Dim SttID As Long
Dim Dongcuoi As Long
Dim sodong As Long
'Sheets("nxt").Unprotect (".......")
Dongcuoi = Sheets("NXT").[B10000].End(xlUp).Row
On Error Resume Next
SttID = Sheet3.Range("A4:A" & Dongcuoi).Find(Sheet1.Cells(6, 7).Value).Row
If Err.Number <> 0 Then
MsgBox "khong tim thay ID: " & Sheet1.Cells(6, 7).Value
On Error GoTo 0
Exit Sub
End If
On Error GoTo 0
With Sheet1
.[d5] = Sheet3.Cells(SttID, 8).Value
.[d6] = Sheet3.Cells(SttID, 7).Value
.[d7] = Sheet3.Cells(SttID, 9).Value
End With
'them vao
If Sheet3.Range("A" & SttID + 1) = "" Then
sodong = Sheet3.Range("A" & SttID).End(xlDown).Row - 1
If sodong > Dongcuoi Then sodong = Dongcuoi
Else
sodong = SttID
End If
Dim Arr_n(), Arr_D()
Arr_n = Sheet3.Range("A" & SttID & ":K" & sodong).Value
sodong = sodong - SttID + 1
ReDim Arr_D(1 To sodong, 1 To 8)
For I = 1 To sodong
Arr_D(I, 1) = I
Arr_D(I, 2) = Arr_n(I, 2)
Arr_D(I, 3) = Arr_n(I, 3)
Arr_D(I, 4) = Arr_n(I, 4)
Arr_D(I, 5) = Arr_n(I, 5)
Arr_D(I, 6) = Arr_n(I, 6)
Arr_D(I, 7) = Arr_n(I, 10)
Arr_D(I, 8) = Arr_n(I, 11)
Next I
Sheet1.Range("A10").Resize(1000, 8).ClearContents
If sodong Then
Sheet1.Range("A10").Resize(sodong, 8) = Arr_D
End If
End Sub
Cảm ơn bạn đã giúp đỡ.Tạm như thế này đi, tôi đang tắt dòng unprotect đi, bạn thích thì bật lại và nhập lại pass cho đúng cũng như thêm dòng protect ở cuối sub
Mã:Private Sub CommandButton4_Click() Dim I As Long Dim SttID As Long Dim Dongcuoi As Long Dim sodong As Long 'Sheets("nxt").Unprotect (".......") Dongcuoi = Sheets("NXT").[B10000].End(xlUp).Row On Error Resume Next SttID = Sheet3.Range("A4:A" & Dongcuoi).Find(Sheet1.Cells(6, 7).Value).Row If Err.Number <> 0 Then MsgBox "khong tim thay ID: " & Sheet1.Cells(6, 7).Value On Error GoTo 0 Exit Sub End If On Error GoTo 0 With Sheet1 .[d5] = Sheet3.Cells(SttID, 8).Value .[d6] = Sheet3.Cells(SttID, 7).Value .[d7] = Sheet3.Cells(SttID, 9).Value End With 'them vao If Sheet3.Range("A" & SttID + 1) = "" Then sodong = Sheet3.Range("A" & SttID).End(xlDown).Row - 1 If sodong > Dongcuoi Then sodong = Dongcuoi Else sodong = SttID End If Dim Arr_n(), Arr_D() Arr_n = Sheet3.Range("A" & SttID & ":K" & sodong).Value sodong = sodong - SttID + 1 ReDim Arr_D(1 To sodong, 1 To 8) For I = 1 To sodong Arr_D(I, 1) = I Arr_D(I, 2) = Arr_n(I, 2) Arr_D(I, 3) = Arr_n(I, 3) Arr_D(I, 4) = Arr_n(I, 4) Arr_D(I, 5) = Arr_n(I, 5) Arr_D(I, 6) = Arr_n(I, 6) Arr_D(I, 7) = Arr_n(I, 10) Arr_D(I, 8) = Arr_n(I, 11) Next I Sheet1.Range("A10").Resize(1000, 8).ClearContents If sodong Then Sheet1.Range("A10").Resize(sodong, 8) = Arr_D End If End Sub
Cảm ơn bạn đã giúp đỡ.
Bạn giúp mình xem lại úng Với STT =1 code cho kết quả chưa đúng như yêu cầu. Minh chưa tìm ra lỗi.
Private Sub CommandButton4_Click()
Dim b12e082c4c0299ec9224c37bfefe4a220 As Long: Dim mf95e6236034cd36ef091e2f692a307d8 As Long: Dim z84db329f2b612ea7072088e7adc8e094 As Long: Dim zcfa0609cbd34b474b39e740567b1d2fc As Long
z84db329f2b612ea7072088e7adc8e094 = Sheets("NXT").[B10000].End(xlUp).Row
On Error Resume Next
mf95e6236034cd36ef091e2f692a307d8 = Sheet3.Range("A1:A" & z84db329f2b612ea7072088e7adc8e094).Find(Sheet1.Cells(6, 7).Value).Row
If Err.Number <> 0 Then
MsgBox "khong tim thay ID & " & Sheet1.Cells(6, 7).Value
On Error GoTo 0
Exit Sub
End If
On Error GoTo 0
With Sheet1
.[d5] = Sheet3.Cells(mf95e6236034cd36ef091e2f692a307d8, 8).Value
.[d6] = Sheet3.Cells(mf95e6236034cd36ef091e2f692a307d8, 7).Value
.[d7] = Sheet3.Cells(mf95e6236034cd36ef091e2f692a307d8, 9).Value
End With
If Sheet3.Range("A" & mf95e6236034cd36ef091e2f692a307d8 + 1) = "" Then
zcfa0609cbd34b474b39e740567b1d2fc = Sheet3.Range("A" & mf95e6236034cd36ef091e2f692a307d8).End(xlDown).Row - 1
If zcfa0609cbd34b474b39e740567b1d2fc > z84db329f2b612ea7072088e7adc8e094 Then zcfa0609cbd34b474b39e740567b1d2fc = z84db329f2b612ea7072088e7adc8e094
Else
zcfa0609cbd34b474b39e740567b1d2fc = mf95e6236034cd36ef091e2f692a307d8
End If
Dim b0f1f6301f057c852173ae7b0045d38b3(), b08c606139aa4c989f7db551da5821ec1()
b0f1f6301f057c852173ae7b0045d38b3 = Sheet3.Range("A" & mf95e6236034cd36ef091e2f692a307d8 & ":K" & zcfa0609cbd34b474b39e740567b1d2fc).Value
zcfa0609cbd34b474b39e740567b1d2fc = zcfa0609cbd34b474b39e740567b1d2fc - mf95e6236034cd36ef091e2f692a307d8 + 1
ReDim b08c606139aa4c989f7db551da5821ec1(1 To zcfa0609cbd34b474b39e740567b1d2fc, 1 To 8)
For b12e082c4c0299ec9224c37bfefe4a220 = 1 To zcfa0609cbd34b474b39e740567b1d2fc
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 1) = b12e082c4c0299ec9224c37bfefe4a220
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 2) = b0f1f6301f057c852173ae7b0045d38b3(b12e082c4c0299ec9224c37bfefe4a220, 2)
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 3) = b0f1f6301f057c852173ae7b0045d38b3(b12e082c4c0299ec9224c37bfefe4a220, 3)
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 4) = b0f1f6301f057c852173ae7b0045d38b3(b12e082c4c0299ec9224c37bfefe4a220, 4)
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 5) = b0f1f6301f057c852173ae7b0045d38b3(b12e082c4c0299ec9224c37bfefe4a220, 5)
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 6) = b0f1f6301f057c852173ae7b0045d38b3(b12e082c4c0299ec9224c37bfefe4a220, 6)
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 7) = b0f1f6301f057c852173ae7b0045d38b3(b12e082c4c0299ec9224c37bfefe4a220, 10)
b08c606139aa4c989f7db551da5821ec1(b12e082c4c0299ec9224c37bfefe4a220, 8) = b0f1f6301f057c852173ae7b0045d38b3(b12e082c4c0299ec9224c37bfefe4a220, 11)
Next b12e082c4c0299ec9224c37bfefe4a220
Sheet1.Range("A10").Resize(1000, 8).ClearContents
If zcfa0609cbd34b474b39e740567b1d2fc Then
Sheet1.Range("A10").Resize(zcfa0609cbd34b474b39e740567b1d2fc, 8) = b08c606139aa4c989f7db551da5821ec1
End If
End Sub
Private Sub CommandButton4_Click()
Dim So1 As Long: Dim So2 As Long: Dim So3 As Long: Dim So4 As Long
So3 = Sheets("NXT").[B10000].End(xlUp).Row
On Error Resume Next
So2 = Sheet3.Range("A1:A" & So3).Find(Sheet1.Cells(6, 7).Value).Row
If Err.Number <> 0 Then
MsgBox "khong tim thay ID & " & Sheet1.Cells(6, 7).Value
On Error GoTo 0
Exit Sub
End If
On Error GoTo 0
With Sheet1
.[d5] = Sheet3.Cells(So2, 8).Value
.[d6] = Sheet3.Cells(So2, 7).Value
.[d7] = Sheet3.Cells(So2, 9).Value
End With
If Sheet3.Range("A" & So2 + 1) = "" Then
So4 = Sheet3.Range("A" & So2).End(xlDown).Row - 1
If So4 > So3 Then So4 = So3
Else
So4 = So2
End If
Dim Mang1(), Mang2()
Mang1 = Sheet3.Range("A" & So2 & ":K" & So4).Value
So4 = So4 - So2 + 1
ReDim Mang2(1 To So4, 1 To 8)
For So1 = 1 To So4
Mang2(So1, 1) = So1
Mang2(So1, 2) = Mang1(So1, 2)
Mang2(So1, 3) = Mang1(So1, 3)
Mang2(So1, 4) = Mang1(So1, 4)
Mang2(So1, 5) = Mang1(So1, 5)
Mang2(So1, 6) = Mang1(So1, 6)
Mang2(So1, 7) = Mang1(So1, 10)
Mang2(So1, 8) = Mang1(So1, 11)
Next So1
Sheet1.Range("A10").Resize(1000, 8).ClearContents
If So4 Then
Sheet1.Range("A10").Resize(So4, 8) = Mang2
End If
End Sub
Vậy bạn sửa gọn lại thế này (Tạm mượn code của bạn ppc0312 nhé)
Mã:Private Sub CommandButton4_Click() Dim So1 As Long: Dim So2 As Long: Dim So3 As Long: Dim So4 As Long So3 = Sheets("NXT").[B10000].End(xlUp).Row On Error Resume Next So2 = Sheet3.Range("A1:A" & So3).Find(Sheet1.Cells(6, 7).Value).Row If Err.Number <> 0 Then MsgBox "khong tim thay ID & " & Sheet1.Cells(6, 7).Value On Error GoTo 0 Exit Sub End If On Error GoTo 0 With Sheet1 .[d5] = Sheet3.Cells(So2, 8).Value .[d6] = Sheet3.Cells(So2, 7).Value .[d7] = Sheet3.Cells(So2, 9).Value End With If Sheet3.Range("A" & So2 + 1) = "" Then So4 = Sheet3.Range("A" & So2).End(xlDown).Row - 1 If So4 > So3 Then So4 = So3 Else So4 = So2 End If Dim Mang1(), Mang2() Mang1 = Sheet3.Range("A" & So2 & ":K" & So4).Value [COLOR=#ff0000]So4 = So4 - So2 + 1 [/COLOR][COLOR=#0000ff][B]ReDim Mang2(1 To So4, 1 To 8)[/B][/COLOR][COLOR=#ff0000] For So1 = 1 To So4 Mang2(So1, 1) = So1 Mang2(So1, 2) = Mang1(So1, 2) Mang2(So1, 3) = Mang1(So1, 3) Mang2(So1, 4) = Mang1(So1, 4) Mang2(So1, 5) = Mang1(So1, 5) Mang2(So1, 6) = Mang1(So1, 6) Mang2(So1, 7) = Mang1(So1, 10) Mang2(So1, 8) = Mang1(So1, 11) Next So1 Sheet1.Range("A10").Resize(1000, 8).ClearContents [/COLOR][COLOR=#0000ff][B]If So4 Then[/B][/COLOR][COLOR=#ff0000] Sheet1.Range("A10").Resize(So4, 8) = Mang2 End If[/COLOR] End Sub
Code đúng rồi bạn.
Nhưng nhìn rối quá. Ecec
Private Sub CommandButton4_Click()
Dim I As Long
Dim SttID As Long
Dim Dongcuoi As Long
Dim sodong As Long
'Sheets("nxt").Unprotect (".......")
Dongcuoi = Sheets("NXT").[B10000].End(xlUp).Row
On Error Resume Next
SttID = Sheet3.Range("A1:A" & Dongcuoi).Find(Sheet1.Cells(6, 7).Value).Row
If Err.Number <> 0 Then
MsgBox "khong tim thay ID: " & Sheet1.Cells(6, 7).Value
On Error GoTo 0
Exit Sub
End If
On Error GoTo 0
With Sheet1
.[d5] = Sheet3.Cells(SttID, 8).Value
.[d6] = Sheet3.Cells(SttID, 7).Value
.[d7] = Sheet3.Cells(SttID, 9).Value
End With
'them vao
If Sheet3.Range("A" & SttID + 1) = "" Then
sodong = Sheet3.Range("A" & SttID).End(xlDown).Row - 1
If sodong > Dongcuoi Then sodong = Dongcuoi
Else
sodong = SttID
End If
Dim Arr_n(), Arr_D()
Arr_n = Sheet3.Range("A" & SttID & ":K" & sodong).Value
sodong = sodong - SttID + 1
ReDim Arr_D(1 To sodong, 1 To 8)
For I = 1 To sodong
Arr_D(I, 1) = I
Arr_D(I, 2) = Arr_n(I, 2)
Arr_D(I, 3) = Arr_n(I, 3)
Arr_D(I, 4) = Arr_n(I, 4)
Arr_D(I, 5) = Arr_n(I, 5)
Arr_D(I, 6) = Arr_n(I, 6)
Arr_D(I, 7) = Arr_n(I, 10)
Arr_D(I, 8) = Arr_n(I, 11)
Next I
Sheet1.Range("A10").Resize(1000, 8).ClearContents
If sodong Then
Sheet1.Range("A10").Resize(sodong, 8) = Arr_D
End If
End Sub
Dựa vào cót của ppc0312, giaiphap, mình sửa đổi được code sau
Code này nếu vùng sữa chữa mới nhiều hơn vùng dữ liệu cũ thì chèn vào dòng cuối của dữ liệu cũ đó. Còn Vùng mới ít hơn Vùng dữ liệu cũ thì xóa bớt dòng.
Mình thử code chạy, nhưng code dài quá.
Mình nhờ các anh, các bạn xem còn cách nào ngắn gọn hơn không.
Cam ơn bạn PPC0312 nhieu nhé.
Nhờ bạn và cả nhà xem qua code bài http://www.giaiphapexcel.com/forum/...ode-với-vòng-lặp-For-Next&p=697787#post697787 giúp mình với.
Dựa vào cót của ppc0312,....
Cảm ơn bác Vetmini đã góp ý kiến.
- Mình dân kỹ thuật Xây dựng nên về kỹ năng lập trình mình mù tịt, có chăng chỉ học qua loa lấy lệ trên ghế Đại học đại cương.
...