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
Em chào các anh chị, thầy cô trên diễn đàn GPE
Em có 1 file theo dõi hóa đơn như file gửi kèm
Do nhu cầu cập nhập hóa đơn do các Công ty cung cấp hàng ngày nên phải thao tác tìm kiếm đến tên Công ty rồi Chèn bổ sung thêm các dòng nối tiếp vào
Để đơn giản việc tìm kiếm em có ghi lại 1 Macro vào Button Tìm đến Công ty (Button tương tự như chức năng Find của Excel)
Tuy nhiên do tính năng Find của excel là tìm từ trên xuống trong khi em mong muốn là tìm từ dưới lên để việc cập nhập được thuận tiện
Chi tiết em đã trình bày trong File gửi kèm. Rất mong các anh chị và thầy cô giúp đỡ
Em xin cảm ơn
 

File đính kèm

  • kê hd-NCC khac-2017-.xlsm
    569.6 KB · Đọc: 15
Upvote 0
Upvote 0
Trong code có chỗ SearchDirection:=xlNext, sửa lại thành SearchDirection:=xlPrevious thì nó sẽ tìm từ dưới lên
Em cảm ơn thầy
Nhưng nó lại phát sinh thêm 1 lần click chuột nữa. Vì Lần click đầu vào Button nó sẽ tìm luôn là ô C2, đến lần Click chuột tiếp vào Button nó mới nhảy đến ô cuối của tìm kiếm
Có cách nào chỉ 1 lần Click chuột là đến luôn ô cần tìm kiếm không thầy?
 
Upvote 0
Em cảm ơn thầy
Nhưng nó lại phát sinh thêm 1 lần click chuột nữa. Vì Lần click đầu vào Button nó sẽ tìm luôn là ô C2, đến lần Click chuột tiếp vào Button nó mới nhảy đến ô cuối của tìm kiếm
Có cách nào chỉ 1 lần Click chuột là đến luôn ô cần tìm kiếm không thầy?
Trong code bạn ghì: Cells.Find(....) có nghĩa là tìm trên toàn bộ bảng tính? Như vậy không tốt lắm, bời tên cty nằm ở cột C mà
Nhân tiện sửa luôn toàn bộ:
Mã:
Sub Button2_Click()
  On Error Resume Next
  Range("C5:C10000").Find(Range("C2").Value, , xlValues, xlPart, , xlPrevious, False).Select
End Sub
Phải có On Error Resume Next, phòng trường hợp báo lỗi không tìm thấy
 
Upvote 0
Vâng em cảm ơn thầy
Code chạy đúng như ý em rồi
 
Upvote 0
Topic Những câu hỏi về code, xin giải thích các code... đã quá dài nên mình đóng nó lại và mở topic khác
Tất cả những bài viết liên quan đến việc nhờ giải thích, xử lý và gỡ rối code VBA, các bạn vui lòng đăng tại đây!
Cảm ơn
Thầy Ndu! chỉnh lại hộ em đoạn code file dưới với ạ. đoạn code mọi khi em vẫn dùng, nhưng hnay giữ liệu nhiều hơn bị lỗi khả năng do vùng làm việc nhỏ quá nên lỗi nhờ thầy xem cho em với..
 

File đính kèm

  • Nhat ki thi cong__TTHC TP GD2.xlsm
    937.9 KB · Đọc: 4
Upvote 0
Thầy Ndu! chỉnh lại hộ em đoạn code file dưới với ạ. đoạn code mọi khi em vẫn dùng, nhưng hnay giữ liệu nhiều hơn bị lỗi khả năng do vùng làm việc nhỏ quá nên lỗi nhờ thầy xem cho em với..
Trên đầu code có:
Mã:
dArr(1 To 1000, 1 To 7)
Thử sửa lại thành:
Mã:
dArr(1 To 10000, 1 To 7)
Lưu ý:
- Lần sau đưa code lên mà khóa pass tôi không làm đâu
- Thứ nữa là: do bạn khóa pass VBA nên khi thông báo lỗi xuất hiện, nút Debug bị mờ không bấm vào được nên không biết lỗi chỗ nào
------------------------------
Nghĩ cũng lạ: Những người viết code gà mờ lại cứ khoái khóa VBA. Có cái "CỦA QUÝ" trong đó à?
 
Upvote 0
mk: 0706976699 thầy ạ
 
Upvote 0
Trên đầu code có:
Mã:
dArr(1 To 1000, 1 To 7)
Thử sửa lại thành:
Mã:
dArr(1 To 10000, 1 To 7)
Lưu ý:
- Lần sau đưa code lên mà khóa pass tôi không làm đâu
- Thứ nữa là: do bạn khóa pass VBA nên khi thông báo lỗi xuất hiện, nút Debug bị mờ không bấm vào được nên không biết lỗi chỗ nào
------------------------------
Nghĩ cũng lạ: Những người viết code gà mờ lại cứ khoái khóa VBA. Có cái "CỦA QUÝ" trong đó à?
Thầy ơi! mk là 0706976699, vẫn bị lỗi thầy vào file xem dùm lại hộ e với ạ.. có thể cải thiện được tốc độ code này không ạ!
 
Upvote 0
Trên đầu code có:
Mã:
dArr(1 To 1000, 1 To 7)
Thử sửa lại thành:
Mã:
dArr(1 To 10000, 1 To 7)
Lưu ý:
- Lần sau đưa code lên mà khóa pass tôi không làm đâu
- Thứ nữa là: do bạn khóa pass VBA nên khi thông báo lỗi xuất hiện, nút Debug bị mờ không bấm vào được nên không biết lỗi chỗ nào
------------------------------
Nghĩ cũng lạ: Những người viết code gà mờ lại cứ khoái khóa VBA. Có cái "CỦA QUÝ" trong đó à?
Hihi. Có cái "CỦA QUÝ". Thầy vui tính thật.!
 
Upvote 0
Chào các anh chị trên diễn đàn!
Em không rành về vba lắm nhưng đang muốn làm một file để nhập vập liệu dùng vba mong các anh chị giúp đỡ. Mục đích cả e là khi chọn ô trong cột C3 của sheet VL thì sẽ hiện listview mà nội dung chứa trong sheet DLDV ( vùng masanpham Danh sách vật liệu). Code em không rành lắm nên chỉ đi sưu tầm mong các anh chị giúp đỡ.

Em cảm ơn!
 

File đính kèm

  • BNVL.xlsm
    50.5 KB · Đọc: 3
Upvote 0
Em chào các anh chị và thầy cô trên GPE
Em muốn xóa các dòng từ dòng 1000 của cột J trở ngược lên trên đến dòng cuối của bảng tính ( dòng cuối của bảng tính được xác định theo cột A)
Em có làm 1 code Loay hoay mãi nhưng vẫn không chạy được
Mong các anh chị và thầy cô trên GPE giúp em xử lý code
Chi tiết trong file gửi kèm
Chi tiết code
Sub Button1_Click()
Dim LastRow As Long
Dim X As Integer
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
X = LastRow + 1
Sheets("Sheet1").Select
Rows(X & ": J1000").Select
Selection.EntireRow.Delete
End Sub
 

File đính kèm

  • New Microsoft Office Excel Worksheet (2).xlsm
    26.1 KB · Đọc: 5
Upvote 0
Em chào các anh chị và thầy cô trên GPE
Em muốn xóa các dòng từ dòng 1000 của cột J trở ngược lên trên đến dòng cuối của bảng tính ( dòng cuối của bảng tính được xác định theo cột A)
Em có làm 1 code Loay hoay mãi nhưng vẫn không chạy được
Mong các anh chị và thầy cô trên GPE giúp em xử lý code
Chi tiết trong file gửi kèm
Chi tiết code
Sub Button1_Click()
Dim LastRow As Long
Dim X As Integer
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
X = LastRow + 1
Sheets("Sheet1").Select
Rows(X & ": J1000").Select
Selection.EntireRow.Delete
End Sub
Bạn thử như vầy xem::
PHP:
Sub Button1_Click()
Dim LastRow As Long
LastRow = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Rows(LastRow & ":1000").Clear
' Hoặc:' 
'Rows(LastRow & ":1000").EntireRow.Delete'
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Em chào các anh chị và thầy cô trên GPE
Em muốn xóa các dòng từ dòng 1000 của cột J trở ngược lên trên đến dòng cuối của bảng tính ( dòng cuối của bảng tính được xác định theo cột A)
Em có làm 1 code Loay hoay mãi nhưng vẫn không chạy được
Mong các anh chị và thầy cô trên GPE giúp em xử lý code
Chi tiết trong file gửi kèm
Chi tiết code
Sub Button1_Click()
Dim LastRow As Long
Dim X As Integer
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
X = LastRow + 1
Sheets("Sheet1").Select
Rows(X & ": J1000").Select
Selection.EntireRow.Delete
End Sub
 

File đính kèm

  • Copy of New Microsoft Office Excel Worksheet (2).xlsm
    26.4 KB · Đọc: 5
Upvote 0
Cảm ơn thầy Ba tê đã giúp đỡ. Code chạy rất tuyệt
Riêng code của bạn NguyenNgocThuHien còn cẩn thận thêm phần thông báo. Cảm ơn bạn đã chu đáo. Quang rất cảm ơn :)
 
Upvote 0
Topic Những câu hỏi về code, xin giải thích các code... đã quá dài nên mình đóng nó lại và mở topic khác
Tất cả những bài viết liên quan đến việc nhờ giải thích, xử lý và gỡ rối code VBA, các bạn vui lòng đăng tại đây!
Cảm ơn
xin giúp mình làm file update file nguồn mà file nguồn không cần mở lên lên để update dữ liệu

VD : file tổng lấy dữ liệu từ file 1 ,2 , 3 , 4 , vvvv . file 1 ,2,3,4 sẽ đc update từ 1 file nguồn .

mình chỉ cần thêm dữ liệu từ file nguồn rồi mở file tổng thì file tổng sẽ tự lấy dữ liệu mới từ file 1,2,3,4 . mà ko cần phải mở file 1,2,3,4 để update dữ liệu .

cảm ơn nhiều .
 
Upvote 0
Bác nào chỉ em cách dùng code tại #1 bài này với, tải về mà chả biết dùng ra sao (đề tài này đã lâu chả ai ngó ngàng tới cả), hình như là nó không tác dụng khi thao tác trên trang tính thì phải.
em thử bật file có code đó rồi chọn vào cửa sổ khác (ví dụ: cửa sổ trình duyệt wed) rồi nhấn phím bất kỳ, lúc này code VBA lại chạy và trả về đúng với số keycode, nhưng lại chỉ có tác dụng như bước làm bên trên chứ code không chạy khi đang chọn để thao tác trên trang tính.
 
Upvote 0
xin giúp mình làm file update file nguồn mà file nguồn không cần mở lên lên để update dữ liệu

VD : file tổng lấy dữ liệu từ file 1 ,2 , 3 , 4 , vvvv . file 1 ,2,3,4 sẽ đc update từ 1 file nguồn .

mình chỉ cần thêm dữ liệu từ file nguồn rồi mở file tổng thì file tổng sẽ tự lấy dữ liệu mới từ file 1,2,3,4 . mà ko cần phải mở file 1,2,3,4 để update dữ liệu .

cảm ơn nhiều .
 

File đính kèm

  • tu update du lieu.zip
    73.9 KB · Đọc: 7
Upvote 0
nhờ mấy anh chị trên diễn đàn rút gọn đoạn code trên cho em với, cái này em dùng Record Macro ghi lại nhưng chưa hiểu hết mong các anh giúp em với .
và nhờ mọi người giúp em đoạn code để lọc cho các sheet còn lại với.
em cám mọi người ơn nhiều
Mã:
Sub Macro1()
'
' Macro1 Macro
'
'
    Range("R10").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R10C3:RC[-15],RC[-15])>1,"""",RC[-15])"
    Range("R10").Select
    Selection.AutoFill Destination:=Range("R10:R2650"), Type:=xlFillDefault
    Range("R10:R2650").Select
    Selection.AutoFilter
    ActiveSheet.Range("$R$10:$R$2650").AutoFilter Field:=1, Criteria1:=Array( _
        "5-T-TP-DDK", "8-TCLT-TP-DDK", "A300", "A300- viê`n khung bao", _
        "C101A-T0.9 (18.2x16)", "C1687 (60x14.2)", "C1697 (60x25.3)", "C3033", _
        "C3033 (51x52.4x1.4)", "C3202 (54.8x76)", "C3202A-T1.2 (54.8x76)", _
        "C3203 (54.8x68)", "C3203-T1.2 (54.8x68)", "C3209 (54.8x50)", _
        "C3209-T1.2 (54.8x50)", "C3295 (37.3x23.5)", "C3303 (54.8x87)", _
        "C3303-T1.2 (54.8x87)", "C3304 (54.5x138)", "C3304-T1.2 (54.5x138)", _
        "C3313 (54.8x68)", "C3313-T1.2 (54.8x68)", "C3318 (54.8x50)", _
        "C3318-T1.2 (54.8x50)", "C3323-T1.2 (50x57.2)", "C3328-T1.2 (54.8x66)", _
        "C3329 (40.7x21.6)", "C3332 (54.8x87)", "D1541A-T1.2(93.4x40)", _
        "D1541A-T2.0 (93.4x40)", "D1543A-T1.2 (98x34)", "D1543A-T2.0 (98x34)", _
        "D1544A-T1.2 (28.9x50)", "D1544A-T2.0 (28.9x50)", "D1545A-T1.2(28.9x61.5)", _
        "D1546A-T1.2 (62x33.7)", "D1546A-T2.0 (62x33.7)", "D1546C-T2.0 (85x33.7)", _
        "D1547A-T1.2 (50x39.2)", "D1547A-T2.0 (50x39.2)", "D1547C-T2.0 (85x39.2)", _
        "D1548A-T2.0 (39.5x20)", "D1549A-T2.0 (98x21.3)", "D1551A-T1.8 (93.4x62.8)", _
        "D1555A-T1.2 (28.9x71.5)", "D1555A-T2.0 (28.9x71.5)", "D1559A-T2.0 (93.4x38.8)", _
        "D17182-T1.2 (93.4x25.5)", "D17182-T2.0 (93.4x25.5)", "D17182-T2.0 (93.4x40)", _
        "D2618A-T2.0 (92.4x50.6)", "DA2006 (19x19x0.8)", "DA3001 (100.3X9.8)", _
        "ÐGCBG-HH,L,T", "DK-5", "DLM", "EP041K", "EP163K", "F347 (95x31.6)", "GO-GC55", _
        "GO-GC56", "KB", "KEG", "KTC", "MTC-UK", "NBM3.9", "NC-UK", "NDV", "NRS", "TCVLD-5", _
        "Vi3,9x19", "Vi3,9x40", "VN-M5x70", "ZL.3x9 (SP3x9)", "ZL.7x5 (SP7x5)"), Operator _
        :=xlFilterValues
    Selection.Copy
    Sheets("THVT").Select
    Range("C9").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=-6
    Sheets("PTVT").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Selection.ClearContents
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-24
    Sheets("THVT").Select
    Range("G9").Select
    ActiveCell.FormulaR1C1 = "=SUMIF(PTVT!C3,THVT!RC[-4],THVT!C[2])"
    Range("G9").Select
    ActiveCell.FormulaR1C1 = "=SUMIF(PTVT!C3,THVT!RC[-4],PTVT!C[2])"
    Range("G9").Select
    Selection.AutoFill Destination:=Range("G9:G84"), Type:=xlFillDefault
    Range("G9:G84").Select
    ActiveWindow.SmallScroll Down:=-54
    Range("H9").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],PTVT!R10C3:R2650C17,8,0)"
    Range("H9").Select
    Selection.AutoFill Destination:=Range("H9:H84"), Type:=xlFillDefault
    Range("H9:H84").Select
    ActiveWindow.SmallScroll Down:=-57
    Range("I9").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],PTVT!R9C3:R2650C17,1,0)"
    Range("I9").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],PTVT!R9C3:R2650C17,10,0)"
    Range("I9").Select
    Selection.AutoFill Destination:=Range("I9:I84"), Type:=xlFillDefault
    Range("I9:I84").Select
    ActiveWindow.SmallScroll Down:=-39
    Range("J9").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],PTVT!R9C3:R2650C17,12,0)"
    Range("J9").Select
    Selection.AutoFill Destination:=Range("J9:J84"), Type:=xlFillDefault
    Range("J9:J84").Select
    ActiveWindow.SmallScroll Down:=-84
    Range("K9").Select
    ActiveCell.FormulaR1C1 = ""
    Range("L9").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-9],PTVT!R10C3:R2650C17,14,0)"
    Range("L9").Select
    Selection.AutoFill Destination:=Range("L9:L84"), Type:=xlFillDefault
    Range("L9:L84").Select
    ActiveWindow.SmallScroll Down:=-39
    Range("J25").Select
End Sub
 

File đính kèm

  • THVTvidu.xls
    1.4 MB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom