Chuyên đề giải đáp những thắc mắc về code VBA

Liên hệ QC

maytinhvp01

Thành viên thường trực
Tham gia
27/7/13
Bài viết
390
Được thích
179
Mình muốn nhờ giải thich câu lệnh " If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c) "
trong ví du:
Public Function LonNhat(Ran As Range)
Dim max As Double, v As Integer, d As Integer, c As Integer
max = Ran.Cells(1, 1)
For d = 1 To Ran.Rows.Count
For c = 1 To Ran.Columns.Count
If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c)
Next c
Next d
v = Tim(max, Ran)
LonNhat = max
End Function
-------------------------------------------------------
[INFO1]Thông báo:
Vì topic này:
http://www.giaiphapexcel.com/forum/...ải-thích-các-code-đề-nghị-các-bạn-gửi-vào-đây
đã quá dài nên BQT đóng lại.
Nay tôi mở topic mới với cùng chủ đề: GIẢI THÍCH NHỮNG THẮC MẮC VỀ CODE
Các bạn nếu có nhu cầu giải thích code, vui lòng post tại đây nhé
NDU96081631

[/INFO1]
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sheet1.Range("G2").Formula = "=E2= Sheet4.Range("B1")"
VBA báo đỏ mng ạ
Ý của em là muốn ô G2 đc gán công thức là =E2=B1 (của sheet 4 ạ) trả về kết quả true hoặc false
 
Upvote 0
Các Thầy cho em hỏi có đoạn code nào có thể enable protect view và enable contents ngay khi mở file *.xlsm không ạ?
Em muốn chạy 1 sự kiện open workbook ngay khi vừa mở file lên mà không cần phải click enable lên 2 thanh màu vàng khi mở file.
Em muốn dùng code để thực hiện mà không phải vào excel option để chỉnh lại phần trust, vì file có thể gửi cho người khác sử dụng.
Mong nhận được phản hồi của các Thầy. Em cảm ơn!
 
Upvote 0
Các Thầy cho em hỏi có đoạn code nào có thể enable protect view và enable contents ngay khi mở file *.xlsm không ạ?
Em muốn chạy 1 sự kiện open workbook ngay khi vừa mở file lên mà không cần phải click enable lên 2 thanh màu vàng khi mở file.
Em muốn dùng code để thực hiện mà không phải vào excel option để chỉnh lại phần trust, vì file có thể gửi cho người khác sử dụng.
Mong nhận được phản hồi của các Thầy. Em cảm ơn!
Cái bạn muốn đó cũng là cái mà bọn viết vi rút muốn.
"chỉnh lại phần trust" là nguyên tắc căn bản để người ta tránh vi rút. Bi giờ nếu VBA nó có khả năng vượt qua chỗ đó thì hỏi còn gì để bảo vệ ngừoi dùng nữa.

Tôi không nói là không làm được. Nhưng cái bạn muốn đó thuộc về kỹ thuật đặt vi rút.
Cách chân thức để truyền bá files có macros là dùng "digital signature"
 
Upvote 0
Xin chào mọi người. Kính nhờ các anh chị chỉ giúp mình 1 đoạn code về tìm ngày trong dữ liệu.
Giả sử cột A chứa dữ liệu dạng Date, format dd/mm/yyyy, sắp xếp tăng dần (các giá trị có thể không liên tục, có thể có nhiều dòng có cùng giá trị).
Yêu cầu là tìm một ngày X cho trước (ví dụ ở ô C2) trong cột A và trả về kết quả là dòng đầu tiên có dữ liệu là ngày X. Nếu không tìm thấy thì trả về kết quả là dòng đầu tiên của ngày gần nhất sau ngày X.
Ví dụ như hình đính kèm nhé.
Cám ơn cả nhà.
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    30.3 KB · Đọc: 7
Upvote 0
Xin chào mọi người. Kính nhờ các anh chị chỉ giúp mình 1 đoạn code về tìm ngày trong dữ liệu.
Giả sử cột A chứa dữ liệu dạng Date, format dd/mm/yyyy, sắp xếp tăng dần (các giá trị có thể không liên tục, có thể có nhiều dòng có cùng giá trị).
Yêu cầu là tìm một ngày X cho trước (ví dụ ở ô C2) trong cột A và trả về kết quả là dòng đầu tiên có dữ liệu là ngày X. Nếu không tìm thấy thì trả về kết quả là dòng đầu tiên của ngày gần nhất sau ngày X.
Ví dụ như hình đính kèm nhé.
Cám ơn cả nhà.
Cái này có phải là thắc mắc về code đâu.Đây là hỏi bài mà bạn.
 
Upvote 0
Chào mọi người,
E mới tìm hiểu về VBA.
Khi e làm record Macrođể thực thi một số thao tác đơn giản thì thấy VBA không chạy với sheet tên Tiếng Việt.
Có cách nào để xử lý đơn gian nhất không ạ, mong mọi người giúp e.1569864042240.png
 
Upvote 0
Chào mọi người,
E mới tìm hiểu về VBA.
Khi e làm record Macrođể thực thi một số thao tác đơn giản thì thấy VBA không chạy với sheet tên Tiếng Việt.
Có cách nào để xử lý đơn gian nhất không ạ, mong mọi người giúp e.View attachment 225920
Bạn đổi tên sheet từ dạng tiếng Việt có dấu về dạng không dấu.
 
Upvote 0
Không phải là Sheets("Nh" & ChrW(7853) & "p"").select mà là Sheets("Nh" & ChrW(7853) & "p").select

Nếu vẫn báo lỗi thì ắt là tên sheet và chuỗi "Nh" & ChrW(7853) & "p" là 2 loại unicode khác nhau - một là unicode dựng sẵn còn cái kia là unicode tổ hợp.

Mà tốt nhất nên dùng tên sheet không dấu.
 
Upvote 0
Chao các anh chị
Em có đoạn code sưu tầm trên GPE về tạo PivotTable
1570005674025.png
Ngồi ngẫm cả chiều mà chưa biết nên làm thế nào.
Khu vực khoanh đỏ là phần PivotTable được tạo trên sheet mới toanh. Em muốn PivotTable được tạo trên Sheet chỉ đinh sẵn (Chẳng hạn sheet TONGHOP) Thì sửa thế nào ạ
Em có gửi file đính kèm.
Cảm ơn các anh chị nhiều ạ
 

File đính kèm

Upvote 0
Chao các anh chị
Em có đoạn code sưu tầm trên GPE về tạo PivotTable
View attachment 226007
Ngồi ngẫm cả chiều mà chưa biết nên làm thế nào.
Khu vực khoanh đỏ là phần PivotTable được tạo trên sheet mới toanh. Em muốn PivotTable được tạo trên Sheet chỉ đinh sẵn (Chẳng hạn sheet TONGHOP) Thì sửa thế nào ạ
Em có gửi file đính kèm.
Cảm ơn các anh chị nhiều ạ
Thử thay thành
"TONGHOP!R5C1"

Và sau đó thay tất cả ActiveSheet thành Sheets("TONGHOP")

xem nó đi đâu về đâu
 
Upvote 0
Chao các anh chị
Em có đoạn code sưu tầm trên GPE về tạo PivotTable
View attachment 226007
Ngồi ngẫm cả chiều mà chưa biết nên làm thế nào.
Khu vực khoanh đỏ là phần PivotTable được tạo trên sheet mới toanh. Em muốn PivotTable được tạo trên Sheet chỉ đinh sẵn (Chẳng hạn sheet TONGHOP) Thì sửa thế nào ạ
Em có gửi file đính kèm.
Cảm ơn các anh chị nhiều ạ
Có 1 cách là bạn thêm dòng dưới đây vào Code của bạn:
PHP:
ActiveSheet.Range("A1").CurrentRegion.Copy Sheets("TONGHOP").Range("A1")
 
Upvote 0
Thử thay thành
"TONGHOP!R5C1"

Và sau đó thay tất cả ActiveSheet thành Sheets("TONGHOP")

xem nó đi đâu về đâu
1570007586242.png
Cám ơn anh đã phản hồi ạ. Nhưng sau khi thay xong nó vẫn báo lỗi ạ
Bài đã được tự động gộp:

Có 1 cách là bạn thêm dòng dưới đây vào Code của bạn:
PHP:
ActiveSheet.Range("A1").CurrentRegion.Copy Sheets("TONGHOP").Range("A1")
cảm ơn anh đã giúp ạ. ý anh à copy dữ liệu sang sheet TONG HOP ấy ạ
 
Upvote 0
Upvote 0
Em muốn duyệt qua các sheet có tên là aaa, rồi đến bbb
Thì đoạn code dưới thì đúng
Mã:
 For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name = "aaa" Or Sh.Name = "bbb" Then
Bây giờ em muốn để nó trong Array
Mã:
For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name = Array("aaa", "bbb") Then
thì nó báo lỗi Type mismath
Bây giờ em muốn để các Sheet trong Array được không? và code sửa như thế nào
p/s: em muốn làm như trên cho gọn vì em có rất nhiều sheet để duyệt
Em cảm ơn
 
Upvote 0
Em muốn duyệt qua các sheet có tên là aaa, rồi đến bbb
Thì đoạn code dưới thì đúng
Mã:
For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name = "aaa" Or Sh.Name = "bbb" Then
Bây giờ em muốn để nó trong Array
Mã:
For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name = Array("aaa", "bbb") Then
thì nó báo lỗi Type mismath
Bây giờ em muốn để các Sheet trong Array được không? và code sửa như thế nào
p/s: em muốn làm như trên cho gọn vì em có rất nhiều sheet để duyệt
Em cảm ơn
Bạn thử:
PHP:
 arr = Array("aaa", "bbb", "ccc", "...")
    For i = 1 To Sheets.Count
        '------------------------
    Next i

Hoặc:
PHP:
        For Each i In Array("aaa", "bbb", "ccc", "...")
            '----------------
        Next
 
Upvote 0
Kính chào các anh, chị;
Em mới tập tành VBA nên không biết xử lý vấn đề này sao. Các anh, chị biết xử lý giúp e nha. E nghiên cứu mãi mà không được. Các anh, chị chỉnh sửa dùm e nha. Cám ơn các anh, chị nhiều.

1570343070214.png
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom