Chèn dòng vào giữa 2 dòng theo điều kiện

Liên hệ QC

Thiên Thanh1

Thành viên mới
Tham gia
16/10/20
Bài viết
36
Được thích
9
Anh chị và các bạn ơi, giúp em với
Em cảm ơn trước nhé!
 

File đính kèm

  • Chèn dòng vào giữa 2 dòng liền kề có số ký tự lớn hơn.xlsb
    9.7 KB · Đọc: 24
Cảm ơn bạn
Tức là dòng nàođược chèn vào thìđiền câuđó vào bạn ơi.
Bạn chạy thử xem nhé
PHP:
Sub Insert_Row()
    Dim sRng As Range, Rng As Range
    Dim sArr(), dArr(1 To 65535, 1 To 1)
    Dim I As Long, K As Long, B As String
B = "B: Tr" & ChrW$(7843) & " l" & ChrW$(7901) & "i"
On Error GoTo Thoat
Set sRng = Application.InputBox(Prompt:="GPE ", Title:="Chon du lieu dau vao", Type:=8)
If sRng.Rows.Count * sRng.Columns.Count > 1 Then
    sArr = sRng.Value
    For I = 1 To UBound(sArr)
    
            If Len(sArr(I, 1)) <= 10 Then
                K = K + 1: dArr(K, 1) = sArr(I, 1)
                If Len(sArr(I + 1, 1)) > 10 Then
                    K = K + 1: dArr(K, 1) = sArr(I + 1, 1): I = I + 1
                End If
            Else
                K = K + 1: dArr(K, 1) = B
                K = K + 1:   dArr(K, 1) = sArr(I, 1)
            End If
     
    Next I
    If K Then
        Set Rng = Application.InputBox(Prompt:="GPE ", Title:="Chon o ghi du lieu", Type:=8)
        Rng.Resize(K, 1) = dArr
    End If
End If
Thoat:
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn chạy thử xem nhé
PHP:
Sub Insert_Row()
    Dim sRng As Range, Rng As Range
    Dim sArr(), dArr(1 To 65535, 1 To 1)
    Dim I As Long, K As Long, B As String
B = "B: Tr" & ChrW$(7843) & " l" & ChrW$(7901) & "i"
On Error GoTo Thoat
Set sRng = Application.InputBox(Prompt:="GPE ", Title:="Chon du lieu dau vao", Type:=8)
If sRng.Rows.Count * sRng.Columns.Count > 1 Then
    sArr = sRng.Value
    For I = 1 To UBound(sArr)
   
            If Len(sArr(I, 1)) <= 10 Then
                K = K + 1: dArr(K, 1) = sArr(I, 1)
                If Len(sArr(I + 1, 1)) > 10 Then
                    K = K + 1: dArr(K, 1) = sArr(I + 1, 1): I = I + 1
                End If
            Else
                K = K + 1: dArr(K, 1) = B
                K = K + 1:   dArr(K, 1) = sArr(I, 1)
            End If
    
    Next I
    If K Then
        Set Rng = Application.InputBox(Prompt:="GPE ", Title:="Chon o ghi du lieu", Type:=8)
        Rng.Resize(K, 1) = dArr
    End If
End If
Thoat:
End Sub
Chuẩn quá bạn ơi
Cảm ơn bạn rất nhiều
Chúc bạn cuối tuần vui vẻ.
 
Upvote 0
Bạn @PacificPR ơi chỉnh sử giúp mình với nhé
Mình chỉnh code của bạn như này nhưng nó không chạy
Chúc bạn ngày đầu tuần có nhiều thành công nhé. [CODE]Sub Insert_Row() Dim sRng As Range, Rng As Range Dim sArr(), dArr(1 To 65535, 1 To 1) Dim I As Long, K As Long, B As String B = "B: Tr" & ChrW$(7843) & " l" & ChrW$(7901) & "i" On Error GoTo Thoat 'Set sRng = Application.InputBox(Prompt:="GPE ", Title:="Chon du lieu dau vao", Type:=8) Set sRng = Range("B1:B2500") If sRng.Rows.Count * sRng.Columns.Count > 1 Then sArr = sRng.Value For I = 1 To UBound(sArr) If Len(sArr(I, 1)) <= 10 Then K = K + 1: dArr(K, 1) = sArr(I, 1) If Len(sArr(I + 1, 1)) > 10 Then K = K + 1: dArr(K, 1) = sArr(I + 1, 1): I = I + 1 End If Else K = K + 1: dArr(K, 1) = B K = K + 1: dArr(K, 1) = sArr(I, 1) End If Next I If K Then 'Set Rng = Application.InputBox(Prompt:="GPE ", Title:="Chon o ghi du lieu", Type:=8) Range("B65").Resize(K, 1) = dArr End If End If Thoat: End Sub [/CODE]
 

File đính kèm

  • Chèn dòng vào giữa 2 dòng liền kề có số ký tự lớn hơn.xlsb
    22.1 KB · Đọc: 5
Upvote 0
Bạn @PacificPR ơi chỉnh sử giúp mình với nhé
Mình chỉnh code của bạn như này nhưng nó không chạy
Chúc bạn ngày đầu tuần có nhiều thành công nhé. [CODE]Sub Insert_Row() Dim sRng As Range, Rng As Range Dim sArr(), dArr(1 To 65535, 1 To 1) Dim I As Long, K As Long, B As String B = "B: Tr" & ChrW$(7843) & " l" & ChrW$(7901) & "i" On Error GoTo Thoat 'Set sRng = Application.InputBox(Prompt:="GPE ", Title:="Chon du lieu dau vao", Type:=8) Set sRng = Range("B1:B2500") If sRng.Rows.Count * sRng.Columns.Count > 1 Then sArr = sRng.Value For I = 1 To UBound(sArr) If Len(sArr(I, 1)) <= 10 Then K = K + 1: dArr(K, 1) = sArr(I, 1) If Len(sArr(I + 1, 1)) > 10 Then K = K + 1: dArr(K, 1) = sArr(I + 1, 1): I = I + 1 End If Else K = K + 1: dArr(K, 1) = B K = K + 1: dArr(K, 1) = sArr(I, 1) End If Next I If K Then 'Set Rng = Application.InputBox(Prompt:="GPE ", Title:="Chon o ghi du lieu", Type:=8) Range("B65").Resize(K, 1) = dArr End If End If Thoat: End Sub [/CODE]
Bạn xem thử nhé
PHP:
Sub Insert_Row()
    Dim sArr(), dArr(1 To 65535, 1 To 1)
    Dim I As Long, K As Long, B As String
B = "B: Tr" & ChrW$(7843) & " l" & ChrW$(7901) & "i"
sArr = Range("B1", Range("B1").End(xlDown)).Value
For I = 1 To UBound(sArr)
    If Len(sArr(I, 1)) <= 10 Then
        K = K + 1: dArr(K, 1) = sArr(I, 1)
        If Len(sArr(I + 1, 1)) > 10 Then
            K = K + 1: dArr(K, 1) = sArr(I + 1, 1): I = I + 1
        End If
    Else
        K = K + 1: dArr(K, 1) = B
        K = K + 1:   dArr(K, 1) = sArr(I, 1)
    End If
Next I
If K Then
    Range("B65", Range("B65").End(xlDown)).ClearContents
    Range("B65").Resize(K, 1) = dArr
End If
End Sub
 
Upvote 0
Bạn xem thử nhé
PHP:
Sub Insert_Row()
    Dim sArr(), dArr(1 To 65535, 1 To 1)
    Dim I As Long, K As Long, B As String
B = "B: Tr" & ChrW$(7843) & " l" & ChrW$(7901) & "i"
sArr = Range("B1", Range("B1").End(xlDown)).Value
For I = 1 To UBound(sArr)
    If Len(sArr(I, 1)) <= 10 Then
        K = K + 1: dArr(K, 1) = sArr(I, 1)
        If Len(sArr(I + 1, 1)) > 10 Then
            K = K + 1: dArr(K, 1) = sArr(I + 1, 1): I = I + 1
        End If
    Else
        K = K + 1: dArr(K, 1) = B
        K = K + 1:   dArr(K, 1) = sArr(I, 1)
    End If
Next I
If K Then
    Range("B65", Range("B65").End(xlDown)).ClearContents
    Range("B65").Resize(K, 1) = dArr
End If
End Sub
Cảm ơn bạn @PacificPR chuẩn rồi bạn ơi
Cảm ơn bạn rất nhiều nhé.
Chúc bạn vạn sự thành công
 
Upvote 0
Bạn @PacificPR kiểm tra lại giúp mình với
Mình thấy nó vẫn sai sai bạn ơi
 

File đính kèm

  • Chèn dòng vào giữa 2 dòng liền kề có số ký tự lớn hơn.xlsb
    22.1 KB · Đọc: 3
Upvote 0

File đính kèm

  • Chèn dòng vào giữa 2 dòng liền kề có số ký tự lớn hơn (2).xlsb
    22.1 KB · Đọc: 4
Upvote 0
Sao trong file của bạn cái If Len(sArr(I + 1, 1)) > 10 Then nó lại thành If Len(sArr(I + 1, 1)) > 20 Then rồi
Bởi vì mình cho nó điều kiện có nhiều hơn 20 ký tự mà
Nếu cho điều kiện khác thì code bị sai bạn à
Bạn nghiên cứu giúp mình "Khi sửa cho các điều kiện khác thì code vẫn đúng với nhé"
Cảm ơn bạn!
 
Upvote 0
Bởi vì mình cho nó điều kiện có nhiều hơn 20 ký tự mà
Nếu cho điều kiện khác thì code bị sai bạn à
Bạn nghiên cứu giúp mình "Khi sửa cho các điều kiện khác thì code vẫn đúng với nhé"
Cảm ơn bạn!
Mình đang chốt với nhau là ở chỗ 10 ký tự mà
 
Upvote 0
Anh chị và các bạn ơi, giúp em với
Em cảm ơn trước nhé!
Thử xem nào bác.
Cột D không có ô trống nhé.
Mã:
Sub Macro3()
Dim i As String
i = InputBox("Search", "Thông báo")
     Columns("D:D").Select
    Selection.Replace What:=i, Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = i
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("D:D").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = "OK______"
End Sub
 
Upvote 0
Thử xem nào bác.
Cột D không có ô trống nhé.
Mã:
Sub Macro3()
Dim i As String
i = InputBox("Search", "Thông báo")
     Columns("D:D").Select
    Selection.Replace What:=i, Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = i
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("D:D").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = "OK______"
End Sub
Hai Bạn này vào diễn đàn cùng ngày ( 16 Tháng mười 2020 ) nè :p:p:p
 
Upvote 0
Thử xem nào bác.
Cột D không có ô trống nhé.
Mã:
Sub Macro3()
Dim i As String
i = InputBox("Search", "Thông báo")
     Columns("D:D").Select
    Selection.Replace What:=i, Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = i
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("D:D").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = "OK______"
End Sub
Bạn ơi, bạn đưa code vào file và chọn vùng chính xác giúp mình với nhé.
 
Upvote 0
Upvote 0
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom