Chuyên mục xử lý, gỡ rối code VBA (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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,954
Ngôn ngữ gì thì không biết, nhưng sẽ không x em được code bởi nó đã được dịch thành mã máy.
hàm sẽ hiện lên các gợi ý về tham số của hàm như hàm Excel không ạ.
Cái này hình như làm được, nhưng phức tạp thì phải.
Bài đã được tự động gộp:

Ngôn ngữ gì thì không biết, nhưng sẽ không x em được code bởi nó đã được dịch thành mã máy.
hàm sẽ hiện lên các gợi ý về tham số của hàm như hàm Excel không ạ.
Cái này hình như làm được, nhưng phức tạp thì phải.
 
Upvote 0
Xin chào các anh/chị/em, e đang có một số thắc mắc về Function trong VBA, xin nhờ các tiền bối chỉ giáo giúp em:
+ Hàm trong excel được viết bằng ngôn ngữ gì? Có cách nào mình xem được code của các hàm đó không ạ.
...
Mắc mớ gì chào anh/chị/em mà nhờ thì lại "tiền bối", chỉ giáo với chỉ gươm.
Hầu hết các phần mềm của MS Office 2003, nhất là Excel, được viết bằng C++. Nhưng về sau này, MS có khuynh hướng dùng Víual Studio và rèactor code lại cho hiệu quả. (Cho đến giờ phút này, C++ vẫn còn đứng đầu về tốc độ.)
Microsoft không có lệ cho xem mã. Và họ có cầu chứng cho nên dẫu có dùng cách mò ngược (reverse enginneering) thì cũng là phạm pháp. Tuy nhiên, nếu chỉ muốn xem đại khái cách thực hiện hàm thì có thể xem tạm mã nguồn mở, ví dụ LibreOffice.
 
Upvote 0
Mắc mớ gì chào anh/chị/em mà nhờ thì lại "tiền bối", chỉ giáo với chỉ gươm.
Hầu hết các phần mềm của MS Office 2003, nhất là Excel, được viết bằng C++. Nhưng về sau này, MS có khuynh hướng dùng Víual Studio và rèactor code lại cho hiệu quả. (Cho đến giờ phút này, C++ vẫn còn đứng đầu về tốc độ.)
Microsoft không có lệ cho xem mã. Và họ có cầu chứng cho nên dẫu có dùng cách mò ngược (reverse enginneering) thì cũng là phạm pháp. Tuy nhiên, nếu chỉ muốn xem đại khái cách thực hiện hàm thì có thể xem tạm mã nguồn mở, ví dụ LibreOffice.
:D dạ, em cảm ơn ạ. VietMini cho em hỏi luôn vấn đề này với ạ, em muốn tự viết 1 Function để tính Tổng theo điều kiện (có thêm 1 vài tham số nữa nên k chỉ đơn thuần gọi sumif trong excel được), em đg vướng chỗ xử lý điều kiện người dùng nhập vào như <=/>=/</> ... 1 số . Viết bằng cách gọi hàm Sumif phối hợp để xử lý thì em viết được rồi. Nhưng Em đang thắc mắc về cách để mình tự xử lý những điều kiện này. Nhờ a giúp đỡ :)
Bài đã được tự động gộp:

Cái này hình như làm được, nhưng phức tạp thì phải.[/QUOTE]

Dạ em cảm ơn TruongVu317 ạ. Nếu làm được thì tốt a nhỉ, chứ k thì chỉ có mình viết mình mới biết cần tham số gì, số lượng tham số trong hàm, đưa cho người khác thì phải hướng dẫn cách dùng cụ thể.
 
Lần chỉnh sửa cuối:
Upvote 0
... em đg vướng chỗ xử lý điều kiện người dùng nhập vào như <=/>=/</> ... 1 số . Viết bằng cách gọi hàm Sumif phối hợp để xử lý thì em viết được rồi. Nhưng Em đang thắc mắc về cách để mình tự xử lý những điều kiện này.
Cái này hơi phức tạp. Phải có kiến thức về nguyên tắc sử lý của trình duyệt.

chứ k thì chỉ có mình viết mình mới biết cần tham số gì, số lượng tham số trong hàm, đưa cho người khác thì phải hướng dẫn cách dùng cụ thể.
Hàm phức tạp đương nhiên phải hướng dẫn cách dùng cụ thể. Không có đường nào khác.
Cái phần gợi ý là để nhắc cho chính mình - có cỡ vài chục cái hàm thì ai mà nhớ cho hết. Chứ bảo ngừoi dùng đọc một vài dòng mà hiểu nổi thì bạn đánh giá hơi cao khả năng vắn tắt diễn đạt của mình đấy.
 
Upvote 0
Ngay các hàm Excel cũng phải đọc để hiểu hàm làm gì, ý nghĩa và cách dùng các tham số v...v Tự dưng thì làm sao biết được.

Hàm người dùng cũng tương tự. Phải đọc mới biết chứ làm sao tự biết được?
Tất nhiên nếu không có mô tả kỹ lưỡng thì ít ra cũng phải có mô tả ngắn gọn về triết lý của hàm, các tham số. Người dùng chỉ cần hiểu và sử dụng hàm. Nhưng để người ta có thể hiểu kỹ hơn và chỉnh sửa theo nhu cầu thì nên có chú thích, càng nhiều càng tốt.

Ví dụ về thêm mô tả vào cửa sổ Insert Function trong tập tin

Về gợi ý ở thanh công thức thì tôi không biết. Nếu chưa quen thì dùng Insert Function thôi.
 

File đính kèm

Upvote 0
Hàm phức tạp đương nhiên phải hướng dẫn cách dùng cụ thể. Không có đường nào khác.
Cái phần gợi ý là để nhắc cho chính mình - có cỡ vài chục cái hàm thì ai mà nhớ cho hết.

Vâng ạ. Em có tìm rất nhiều về mấy thắc mắc này mà không thấy ai viết, chỉ sợ có mà mình k biết để sử dụng thì mất công quá. Sau khi nghe các anh giải thích thì hiểu ra vấn đề rồi. Em cảm ơn nhiều ạ.
 
Upvote 0
[QUOTE="batman1]
Ví dụ về thêm mô tả vào cửa sổ Insert Function trong tập tin
Về gợi ý ở thanh công thức thì tôi không biết. Nếu chưa quen thì dùng Insert Function thôi.[/QUOTE]

Xem đi xem lại mấy lần mới hiểu ý Bạn viết, k nghĩ đến cái sự kiện wb_open. Cái này giờ mình mới biết, có cái này cũng tốt rồi. Cảm ơn Bạn nhé :)
 
Upvote 0
Xin chào mọi người,
Em có 1 file tạo cơ sở dữ liệu mã vật tư, sử dụng chủ yếu là Data validation, và hàm dò tìm vlookup, index(match). Nhưng dữ liệu lên tới 8000 dòng, liên kết nhiều sheet nên công thức chạy rất lâu. Em mong mọi người giúp đỡ để cải thiện file. Chi tiết em đã note trong từng sheet (màu đen) ạ.
Cảm ơn mọi người.
 

File đính kèm

Upvote 0
Theo mình biết thì đối với CSDL lớn thì không nên dùng excel mà dùng các phần mềm chuyên dùng để quản lí CSDL khác. Hoặc bạn có thể dùng SQL trong excel, bạn thử tìm hiểu về addin Atools xem.
Cảm ơn bạn,
Do bên mình vừa thay đổi quy trình làm việc, nên xây dựng CSDL trên excel để cung cấp cho bên viết phần mềm. Công việc thật sự rất bận, nên anh chị nào có thể giúp đỡ Code VBA để giải quyết trong khi chờ phần mềm thì tốt quá.
 
Upvote 0
các bạn ơi giúp mình với mình có file vba trước chạy win 7 32 bit thì vẫn bình thường nhưng từ hôm mình cài win8.1 64 bit thì không chạy được
mong các bạn giúp mình với
mình chạy file vba với dữ liệu ở trên thì bị 2 lỗi sau mà không biết cách xử lý :
loi 1.jpg
lỗi thứ 2 :
loi 2.jpg
file vba:
http://www.mediafire.com/file/kksqb283qaby627/Xu ly File - Ghi De - Cong Thuc .xlsm
file excel cần:
http://www.mediafire.com/file/262dnc6ddu56vo5/1Goc.xls
file excel sua:
http://www.mediafire.com/file/2bal4cap7y740a5/file can sua.rar
 
Lần chỉnh sửa cuối:
Upvote 0
Em muốn lọc nhiều điều kiện trên một cột như dưới nhưng nó báo lỗi.
Các bác chỉ giúp em sai chỗ nào ạ.

Sub Macro2()
Range("A1:P1").AutoFilter
ActiveSheet.Range("$A$1:$P$465").AutoFilter Field:=3, Criteria1:= _
"=*BALL RETAINER*", Operator:=xlOr, Criteria2:= _
"=*END PLATE*", Operator:=xlOr, Criteria3:= _
"=*PIPE*"
End Sub
 
Upvote 0
Em muốn lọc nhiều điều kiện trên một cột như dưới nhưng nó báo lỗi.
Các bác chỉ giúp em sai chỗ nào ạ.

Sub Macro2()
Range("A1:p1").AutoFilter
ActiveSheet.Range("$A$1:$P$465").AutoFilter Field:=3, Criteria1:= _
"=*BALL RETAINER*", Operator:=xlOr, Criteria2:= _
"=*END PLATE*", Operator:=xlOr, Criteria3:= _
"=*PIPE*"
End Sub
Thử:
PHP:
Range("A1:p1").AutoFilter
ActiveSheet.Range("$A$1:$P$465").AutoFilter Field:=3, Criteria1:=Array("*BALL RETAINER*", "*END PLATE*", "*PIPE*"), Operator:=xlFilterValues
 
Upvote 0
các bạn ơi giúp mình với mình có file vba trước chạy win 7 32 bit thì vẫn bình thường nhưng từ hôm mình cài win8.1 64 bit thì không chạy được
mong các bạn giúp mình với
mình chạy file vba với dữ liệu ở trên thì bị 2 lỗi sau mà không biết cách xử lý :
View attachment 197965
lỗi thứ 2 :
View attachment 197966
file vba:
http://www.mediafire.com/file/kksqb283qaby627/Xu ly File - Ghi De - Cong Thuc .xlsm
file excel cần:
http://www.mediafire.com/file/262dnc6ddu56vo5/1Goc.xls
file excel sua:
http://www.mediafire.com/file/2bal4cap7y740a5/file can sua.rar

Bạn Vào Tools -> References sẽ thấy dòng MISSING, gỡ check dòng đó.

miss-png.198075
 

File đính kèm

  • miss.png
    miss.png
    16.5 KB · Đọc: 95
Upvote 0
Xinh đẹp thì có thể, nhưng bạn gái thì chưa chắc.
Thứ nhất, chưa có gì khẳng định giới tính, đờn ông, đờn bà, hay còn ở giữa - chưa chuyển.
Thứ hai, chưa có gì khẳng định là dậy thì hay sồn sồn.
 
Upvote 0
Upvote 0
Em nhờ các bác sửa lại code dò tìm 6 điều kiện hộ em với ạ vì em viết nó chạy chậm quá ạ :D
Function TK6DK(DK1, DK2, DK3, DK4, DK5, DK6 As Variant, _
VUNGDK1, VUNGDK2, VUNGDK3, VUNGDK4, VUNGDK5, VUNGDK6, VUNGKQ As Range)
Dim I As Integer, iCount As Integer
iCount = VUNGDK1.Rows.Count
For I = 1 To iCount
If UCase(VUNGDK1.Cells(I, 1)) + UCase(VUNGDK2.Cells(I, 1)) = UCase(DK1) + UCase(DK2) Then
If UCase(VUNGDK3.Cells(I, 1)) = UCase(DK3) Then
If UCase(VUNGDK4.Cells(I, 1)) = UCase(DK4) Then
If UCase(VUNGDK5.Cells(I, 1)) = UCase(DK5) Then
If UCase(VUNGDK6.Cells(I, 1)) = UCase(DK6) Then
TK6DK = VUNGKQ.Cells(I, 1)
Exit For
End If
End If
End If
End If
End If
Next I
End Function
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom