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:
Mình cũng test đủ kiểu, CDate, rồi cả DateValue cũng không ăn thua. Nó hết lỗi nhưng kết quả ra không đúng. Tại dòng đầu nó cứ cho kết quả là Aug
Em đoán là cái hàm Cdate nó quy đổi về ngày tháng năm không đúng.Anh dùng hàm này theo thủ công chắc là được. DateSerial .
 
Upvote 0
Upvote 0
Nhờ các bạn hỗ trợ : Mình đang cần một file khi user nhập liệu thì cho phép, sau khi nhập thì không thể xóa. Mình không biết tìm google với từ khóa nào. Mong các bạn hỗ trợ. Cám ơn các bạn rất nhiều.
 
Upvote 0
Nhờ các bạn hỗ trợ : Mình đang cần một file khi user nhập liệu thì cho phép, sau khi nhập thì không thể xóa. Mình không biết tìm google với từ khóa nào. Mong các bạn hỗ trợ. Cám ơn các bạn rất nhiều.
Làm chơi cho vui, chỉ áp dụng được với dân tay mơ. Nếu bạn biết cách xóa dữ liệu đã nhập hoặc nhập dữ liệu mà không bị khóa thì khỏi áp dụng (vì người khác cũng sẽ làm được :D)
 

File đính kèm

Upvote 0
...khỏi áp dụng (vì người khác cũng sẽ làm được :D)
Đương nhiên những gì khoá ở đây thì người dùng chỉ việc đưa lên đây nhờ bẻ khoá.

Nhưng điểm tôi sợ nhất không phải ở chỗ bẻ khoá. Tôi sợ nhất những thằng táo tỉnh, chúng mở khoá, sửa đổi, rồi khoá lại hoàn toàn như chẳng có gì xảy ra.
"Cái đó sếp khoá rồi mà. Em đâu có làm gì được!"
 
Upvote 0
Nhờ các bác check hộ code em sai chỗ nào, kết quả chạy không được như mong muốn.

File của em như sau:
1. Sheet2 : Sheet copy các dữ liệu đường kính và độ cứng tổng hợp về
2. Sheet 1 (các bác không cần soi)
3. Các sheet phía sau : Sheet thứ 3 đến sheet thứ 15 (dữ liệu đường kính), Sheet thứ 16 đến sheet thứ 28 (dữ liệu độ cứng)

Code em chỉ trình độ ABC thôi để đạt mục đích công việc thôi:p
 

File đính kèm

Upvote 0
Bạn thử với cái ni:
PHP:
Sub Copy_data_Diameter()

Dim sRng As Range
Dim i As Integer, lastRow As Integer
lastRow = 16

For i = 1 To 13
    With Sheets(i + 2)
        MsgBox .Range("A23:Q" & .Range("A" & Rows.Count).End(xlUp).Row).Address '**
        .Range("A23:Q" & .Range("A" & Rows.Count).End(xlUp).Row).Copy
        Sheet2.Range("B" & lastRow).PasteSpecial Paste:=xlPasteValues
        .Range("E5").Copy
        Sheet2.Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues
        lastRow = Sheet2.Range("B65000").End(xlUp).Row + 1    
    End With
Next i   
End Sub
 
Upvote 0
Bạn thử với cái ni:
PHP:
Sub Copy_data_Diameter()

Dim sRng As Range
Dim i As Integer, lastRow As Integer
lastRow = 16

For i = 1 To 13
    With Sheets(i + 2)
        MsgBox .Range("A23:Q" & .Range("A" & Rows.Count).End(xlUp).Row).Address '**
        .Range("A23:Q" & .Range("A" & Rows.Count).End(xlUp).Row).Copy
        Sheet2.Range("B" & lastRow).PasteSpecial Paste:=xlPasteValues
        .Range("E5").Copy
        Sheet2.Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues
        lastRow = Sheet2.Range("B65000").End(xlUp).Row + 1   
    End With
Next i  
End Sub

Chào bác @SA_DQ !!!

Em thử chạy code của bác và đạt được kết quả như mong muốn.
Bác giúp em giải thích code em điểm nào sai với ah.

Tại sao marco Copy_data_hardness em chỉ copy từ Copy_data_diameter chỉnh sửa theo thì không bị sai ah.
Xin bác chỉ giáo giúp em để những lần tới em sửa sai.

Thanks bác nhiều nhiều.
Bài đã được tự động gộp:

Chào bác @SA_DQ !!!

Em thử chạy code của bác và đạt được kết quả như mong muốn.
Bác giúp em giải thích code em điểm nào sai với ah.

Tại sao marco Copy_data_hardness em chỉ copy từ Copy_data_diameter chỉnh sửa theo thì không bị sai ah.
Xin bác chỉ giáo giúp em để những lần tới em sửa sai.

Thanks bác nhiều nhiều.

Chào bác @SA_DQ !!!

Em soi ra rồi. Có phải em sai: thiếu dấu chấm ở chỗ tô đỏ dưới phải không ạh?
.Range("A23:Q" & .Range("A" & Rows.Count).End(xlUp).Row).Copy

Em cám bác nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem 2 dòng lệnh này:
PHP:
MsgBox .Range("A23:Q" & .Range("A" & Rows.Count).End(xlUp).Row).Address
       .Range("A23:Q" & Range("A" & Rows.Count).End(xlUp).Row).Copy
Khi xài With . . .. End With
 
Upvote 0
Các bác cho em hỏi em muốn từ excel mở một file word lên - tìm và xóa dòng chữ trong file word vừa mở thì làm thế nào ạ.
 
Upvote 0
Mình sử dụng code bên dưới để copy vùng dữ liệu từ sheet1 sang sheet2., nhưng code không hoạt động. Nhờ anh chị chỉ giúp lỗi.
Cảm ơn.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Sheets("TKB").Range("C46:G53"), Target) Is Nothing Then
Sheets("1A").Range("C5:G12").Value = Sheets("TKB").Range("C46:G53").Value
End If
End Sub
 
Upvote 0
Application.EnableEvents = False
Application.EnableEvents = True
Chào các bác, cho em hỏi khi mình muốn dừng các sự kiện của worksheet thì dùng 2 câu lệnh trên,
Vậy trong userform thì mình dùng lệnh nào tương ứng ạ, ví dụ trong TextBox1_Change ạ.
 
Upvote 0
Application.EnableEvents = False
Application.EnableEvents = True
Chào các bác, cho em hỏi khi mình muốn dừng các sự kiện của worksheet thì dùng 2 câu lệnh trên,
Vậy trong userform thì mình dùng lệnh nào tương ứng ạ, ví dụ trong TextBox1_Change ạ.
Bạn sử dụng BeforeUpdate thay cho Change.
 
Upvote 0
Bạn sử dụng BeforeUpdate thay cho Change.
Đâu phải trường hợp nào cũng thay thế được đâu bạn.
Application.EnableEvents = False
Application.EnableEvents = True
Chào các bác, cho em hỏi khi mình muốn dừng các sự kiện của worksheet thì dùng 2 câu lệnh trên,
Vậy trong userform thì mình dùng lệnh nào tương ứng ạ, ví dụ trong TextBox1_Change ạ.
Bạn sử dụng 1 biến để bật tắt sự kiện.
Mã:
Private Sub TextBox1_Change()
Static bDisableEvents As Boolean
If Not bDisableEvents Then
    bDisableEvents = True
    '...
    '...
    '...
    bDisableEvents = False
End If
End Sub
 
Upvote 0
Mọi người cho mình hỏi, trong công thức VBA, cũng là tên sheet như mình thấy có lúc người ta đặt trong dấu nháy đơn, có lúc không dùng, vì sao vậy ạ?

ActiveCell.FormulaR1C1 = "='ban 1'!RC+ban2!RC"

Tại 2 vị trí in đậm. Đây là công thức chạy đúng. Ban 1 Ban2 là tên 2 sheet tồn tại.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom