Chuyên mục xử lý, gỡ rối code VBA

Liên hệ QC
Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
E đang lập sổ quản lý đơn thư trên Ecxel, nhưng kiến thức còn hạn hẹp, không thể quản lý dữ liệu theo yêu cầu. Nhờ các bác viết giúp cho dđoạn CODE để Cell M6 có thể nhập được dữ liệu (theo list được tạo trước Validation) khi và chỉ khi Cell K6 có dữ liệu giống Cell G3 của Sheet "data". Hay nói cách khác là Ô M6 chỉ được nhận dữ liệu (từ list được tạo ra) nếu Ô K6 có dữ liệu là "CHUYỂN ĐƠN"; còn nếu Ô K6 ko phải dữ liệu là "CHUYỂN ĐƠN" thì M6 bắt buộc phải để trống và không cho nhập dữ liệu
P/S: các bác viết giúp em cho Ô M6 và K6 theo yêu cầu trên ạ, khi e cần thêm dòng thì đã có CODE thêm dòng rồi ạ
Xin cảm ơn!
 

File đính kèm

  • Sotheodoidon 2018.xlsm
    40.5 KB · Đọc: 3
Upvote 0
E đang lập sổ quản lý đơn thư trên Ecxel, nhưng kiến thức còn hạn hẹp, không thể quản lý dữ liệu theo yêu cầu. Nhờ các bác viết giúp cho dđoạn CODE để Cell M6 có thể nhập được dữ liệu (theo list được tạo trước Validation) khi và chỉ khi Cell K6 có dữ liệu giống Cell G3 của Sheet "data". Hay nói cách khác là Ô M6 chỉ được nhận dữ liệu (từ list được tạo ra) nếu Ô K6 có dữ liệu là "CHUYỂN ĐƠN"; còn nếu Ô K6 ko phải dữ liệu là "CHUYỂN ĐƠN" thì M6 bắt buộc phải để trống và không cho nhập dữ liệu
P/S: các bác viết giúp em cho Ô M6 và K6 theo yêu cầu trên ạ, khi e cần thêm dòng thì đã có CODE thêm dòng rồi ạ
Xin cảm ơn!
Thử xem file này coi có đúng ý bạn không.
 

File đính kèm

  • Sotheodoidon 2018.rar
    35.7 KB · Đọc: 10
Upvote 0
Các bác có hàm nào tham chiếu thay cho cú pháp này của em không ạ. Cái này dùng hàm của execl nhưng đưa vào vba thi báo lỗi vì vùng tham chiếu trong hàm Match báo N/A.
a = Application.WorksheetFunction.IfError(Application.WorksheetFunction.Match(Sheet4.Range("giá trị tham chiếu"), Sheet2.Range("vùng tham chiếu"), 0), 0)
 
Upvote 0
Mình có được file excel DM nhưng bị lỗi như thế này nhờ các bác giúp:
1. khi click đúp chuột trái vào cột A thì Userform hiện lên nhưng vào ô tra cứu không tra được.
2. Khi uesrform hiện lên, ta chọn 1 mã hiệu-> chọn thì ok nhưng tại cột D ( cột định mức) không trả về định dạng kiểu số nên dẫn đến công thức sai.
3. Hiện tại file này chỉ chuyển dữ liệu từ sheet DMHH sang có 4 cột, nếu e muốn chuyển hết 5 hoặc 6 cột thì chỉnh code như thế nào? Nhờ các bác giúp cho.
 

File đính kèm

  • DM588.xls
    207 KB · Đọc: 7
Upvote 0
Chào các bác!

Mình mới học VBA, mình đang muốn viết 1 đoạn code xử lý dữ liệu từ file text, sau đó lấy một vài thông tin cần thiết và nhập vào file excel. Bác nào cho mình xin đoạn code tham khảo với.
Mình cảm ơn.
 
Upvote 0
Mình có được file excel DM nhưng bị lỗi như thế này nhờ các bác giúp:
1.
2.
3.
. . . .
Cách viết 1 dòng lệnh lại bỏ trống 1 dòng lệnh gây khó đọc quá; Mình không thể đọc nổi & xin chào vậy!
 
Upvote 0
Nhờ chỉ giúp chỗ mình chưa đúng trong đoạn code dưới. . Khi xóa dữ liệu tại cột B thì các cột khác cũng bị xóa ( Mình chỉ muốn xóa dữ liệu tại các cột A, L,M,N ( từ dòng 8 trở xuống ) để gán công thức mỗi khi có dữ liệu ở cột B (từ B8 )
Xin cảm ơn
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
For Each Cll In Intersect(Target.EntireRow, [B:B])
If Cll.Row > 7 Then
If Cll.Value = "" Then
Range("A8:A1000", "L8:N1000").ClearContents

Else
If Range("A" & Cll.Row).Formula = "" Then Range("A" & Cll.Row).FormulaR1C1 = "=IF(RC[1]<>"""",MAX(R7C1:R[-1]C)+1,"""")"
If Range("L" & Cll.Row).Formula = "" Then Range("L" & Cll.Row).FormulaR1C1 = "=IF(RC[-10]="""","""",IF(RC[-5]=""x"",""x"",""/""))"
If Range("M" & Cll.Row).Formula = "" Then Range("M" & Cll.Row).FormulaR1C1 = "=IF(RC[-11]="""","""",IF(RC[-2]=R1C11,""Cdi"",IF(RC[-2]=R2C11,""Cde"",""/"")))"
If Range("N" & Cll.Row).Formula = "" Then Range("N" & Cll.Row).FormulaR1C1 = "=RIGHT(RC[-6],2)"
End If
End If
Next
Application.EnableEvents = True
End Sub
 

File đính kèm

  • Book1.xls
    46 KB · Đọc: 1
Lần chỉnh sửa cuối:
Upvote 0
Nhờ chỉ giúp chỗ mình chưa đúng trong đoạn code dưới. . Khi xóa dữ liệu tại cột B thì các cột khác cũng bị xóa ( Mình chỉ muốn xóa dữ liệu tại các cột A, L,M,N ( từ dòng 8 trở xuống ) để gán công thức mỗi khi có dữ liệu ở cột B (từ B8 )
Xin cảm ơn
Range("A8:A1000", "L8:N1000").ClearContents là lệnh xóa từ cột A đến cột L
muốn xóa từng cột thì dùng lệnh xóa riêng từng cột, hoặc tìm hiểu lệnh Union ghép các cột
 
Upvote 0
Xin chỉnh giúp đoạn code bên dưới vì khi đưa câu Option Explicit thì nó bị lỗi.
Cảm ơn các anh chị nhiều.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
For Each Cll In Intersect(Target.EntireRow, [B:B])
If Cll.Row > 7 Then
If Cll.Value = "" Then
Range("A8:A1000").ClearContents
Else
If Range("A" & Cll.Row).Formula = "" Then Range("A" & Cll.Row).FormulaR1C1 = "=IF(RC[1]<>"""",MAX(R7C1:R[-1]C)+1,"""")"
If Range("L" & Cll.Row).Formula = "" Then Range("L" & Cll.Row).FormulaR1C1 = "=IF(RC[-10]="""","""",IF(RC[-5]=""x"",""x"",""/""))"
If Range("M" & Cll.Row).Formula = "" Then Range("M" & Cll.Row).FormulaR1C1 = "=IF(RC[-11]="""","""",IF(RC[-2]=R1C11,""Cdi"",IF(RC[-2]=R2C11,""Cde"",""/"")))"
If Range("N" & Cll.Row).Formula = "" Then Range("N" & Cll.Row).FormulaR1C1 = "=RIGHT(RC[-6],2)"
End If
End If
Next
Application.EnableEvents = True
End Sub
 
Upvote 0
Chào cả nhà. Mình mới học VBA nên gà mờ quá. Đang code đến chỗ này thì nó báo lỗi Application-Defined or Object-defined error 1004 chỗ Do While mà mình k hiểu mình sai ở đâu. Mong các cao nhân chỉ giáo
Mã:
Sub Button1_Click()

Dim id1, id2, id3, id4, id5, id6 As Variant

Dim i, n As Integer

Worksheets("ACC").Activate

id1 = Sheets("ACC").Range("E5").Value
id2 = Sheets("ACC").Range("G5").Value
id3 = Sheets("ACC").Range("I5").Value
id4 = Sheets("ACC").Range("K5").Value
id5 = Sheets("ACC").Range("M5").Value
id6 = Sheets("ACC").Range("O5").Value

Worksheets("TOEICScore").Activate



Do While id1 = Sheets("TOEICScore").Range("A", i).Value Or Sheets("TOEICScore").Range("A", i).Value = Null
      If id1 = Sheets("TOEICScore").Range("A", i).Value Then
         Sheets("ACC").Range("F5").Value = Sheets("TOEICScore").Range("B", i).Value
         Sheets("ACC").Range("E21").Value = Sheets("TOEICScore").Range("F", i).Value
         Sheets("ACC").Range("F21").Value = Sheets("TOEICScore").Range("E", i).Value
      End If
      i = i + 1

Loop

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chỉnh giúp đoạn code bên dưới vì khi đưa câu Option Explicit thì nó bị lỗi.
Cảm ơn các anh chị nhiều.
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
For Each Cll In Intersect(Target.EntireRow, [B:B])
  If Cll.Row > 7 Then
    If Cll.Value = "" Then
      Range("A8:A1000").ClearContents
    Else
      If Range("A" & Cll.Row).Formula = "" Then Range("A" & Cll.Row).FormulaR1C1 = "=IF(RC[1]<>"""",MAX(R7C1:R[-1]C)+1,"""")"
      If Range("L" & Cll.Row).Formula = "" Then Range("L" & Cll.Row).FormulaR1C1 = "=IF(RC[-10]="""","""",IF(RC[-5]=""x"",""x"",""/""))"
      If Range("M" & Cll.Row).Formula = "" Then Range("M" & Cll.Row).FormulaR1C1 = "=IF(RC[-11]="""","""",IF(RC[-2]=R1C11,""Cdi"",IF(RC[-2]=R2C11,""Cde"",""/"")))"
      If Range("N" & Cll.Row).Formula = "" Then Range("N" & Cll.Row).FormulaR1C1 = "=RIGHT(RC[-6],2)"
    End If
  End If
Next
End Sub
 
Upvote 0
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
For Each Cll In Intersect(Target.EntireRow, [B:B])
  If Cll.Row > 7 Then
    If Cll.Value = "" Then
      Range("A8:A1000").ClearContents
    Else
      If Range("A" & Cll.Row).Formula = "" Then Range("A" & Cll.Row).FormulaR1C1 = "=IF(RC[1]<>"""",MAX(R7C1:R[-1]C)+1,"""")"
      If Range("L" & Cll.Row).Formula = "" Then Range("L" & Cll.Row).FormulaR1C1 = "=IF(RC[-10]="""","""",IF(RC[-5]=""x"",""x"",""/""))"
      If Range("M" & Cll.Row).Formula = "" Then Range("M" & Cll.Row).FormulaR1C1 = "=IF(RC[-11]="""","""",IF(RC[-2]=R1C11,""Cdi"",IF(RC[-2]=R2C11,""Cde"",""/"")))"
      If Range("N" & Cll.Row).Formula = "" Then Range("N" & Cll.Row).FormulaR1C1 = "=RIGHT(RC[-6],2)"
    End If
  End If
Next
End Sub
Cảm ơn HieuCD đã nhiệt tình giúp đỡ.
Chúc Bạn cùng gia đình nhiều niềm vui ngày cuối tuần
 

File đính kèm

  • Book1.xls
    50 KB · Đọc: 2
Upvote 0
Híc. Ko ai giúp mình à. @@
 
Upvote 0
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
For Each Cll In Intersect(Target.EntireRow, [B:B])
  If Cll.Row > 7 Then
    If Cll.Value = "" Then
      Range("A8:A1000").ClearContents
    Else
      If Range("A" & Cll.Row).Formula = "" Then Range("A" & Cll.Row).FormulaR1C1 = "=IF(RC[1]<>"""",MAX(R7C1:R[-1]C)+1,"""")"
      If Range("L" & Cll.Row).Formula = "" Then Range("L" & Cll.Row).FormulaR1C1 = "=IF(RC[-10]="""","""",IF(RC[-5]=""x"",""x"",""/""))"
      If Range("M" & Cll.Row).Formula = "" Then Range("M" & Cll.Row).FormulaR1C1 = "=IF(RC[-11]="""","""",IF(RC[-2]=R1C11,""Cdi"",IF(RC[-2]=R2C11,""Cde"",""/"")))"
      If Range("N" & Cll.Row).Formula = "" Then Range("N" & Cll.Row).FormulaR1C1 = "=RIGHT(RC[-6],2)"
    End If
  End If
Next
End Sub
Với đoạn code trên khi thực hiện với dữ liệu khoảng 3000 dòng. code chạy rất lâu.
Xin nhờ các anh chị có thể chỉnh giúp code trên để chạy được nhanh hơn.
Cảm ơn các anh chị nhiều.
 

File đính kèm

  • Book1.xls
    50 KB · Đọc: 6
Upvote 0
Với đoạn code trên khi thực hiện với dữ liệu khoảng 3000 dòng. code chạy rất lâu.
Xin nhờ các anh chị có thể chỉnh giúp code trên để chạy được nhanh hơn.
Cảm ơn các anh chị nhiều.
Đã dùng VBA mà nạp công thức cho từng dòng là "kỳ cục". Công thức càng IF() nhiều lại càng nặng.
Ráng chịu đi, hoặc xử lý tất cả bằng VBA 1 lần.
 
Upvote 0
Đã dùng VBA mà nạp công thức cho từng dòng là "kỳ cục". Công thức càng IF() nhiều lại càng nặng.
Ráng chịu đi, hoặc xử lý tất cả bằng VBA 1 lần.
Cảm ơn Thầy.
Nhờ Thầy có thể viết giúp đoạn code với ạ. ( Code sẽ xử lý trên các cột tô màu vàng )
Xin cảm ơn Thầy nhiều.
 

File đính kèm

  • Book1.xls
    52.5 KB · Đọc: 5
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom