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:
Sheet 1 Mình có cột A và B có chứa dữ liệu
Bên cạnh đó mình có nút bấm marco.
Mình đã ghi marco cho nút bấm để copy dữ liệu cột A và B trong cùng 1 hàng vào ô A2 và B2
Nhưng như vậy mình phải tạo nhiều marco cho mỗi 1 nút bấm
Có cách nào mà mình chỉ cần tạo 1 sub mà khi bấm nút thì dữ liệu tự điền vào ô A2 và B2 không?
Mong mọi người trợ giúp, thanks
Mình gửi file đính kèm
( Bấm nút Brazil thì dữ liệu Brazil&tid=q vào ô A2 , Brazil&tid=c vào ô B2 , tương tự với các nút bấm khác cũng vậy )

Assign Macro toàn bộ các Button cho Sub Main dưới đây nhé:
Mã:
Sub Main()
  Dim shp As Shape, rFind As Range
  Dim strFind As String
  Set shp = Sheet1.Shapes(Application.Caller)
  strFind = shp.TextFrame.Characters.Text & "&tid=q"
  Set rFind = Sheet1.Range("A:A").Find("*" & strFind, , xlValues, xlWhole)
  If Not rFind Is Nothing Then Sheet1.Range("A2:B2").Value = rFind.Resize(, 2).Value
End Sub
 

File đính kèm

  • VBA.Marco.xlsm
    16.2 KB · Đọc: 67
Upvote 0
Oài làm như Bác chỉ thì E cũng đã biết rồi ạ..

Vấn đề của E là cần Bác giúp E gán lệnh IF vào mỗi lần ghi dữ liệu mới vào sheet "Dulieu" thôi ạ (lỗi font cũng không vấn đề gì) CÓ ĐƯỢC KHÔNG Ạ???

Thử code sau xem như thế nào,
[GPECODE=vb]
Sub ghiDL()
Dim tmpArr
tmpArr = Sheets("Nhap").Range("C4:C8")
With Sheets("DL").Range("A65536").End(xlUp).Offset(1)
.Resize(, 5) = WorksheetFunction.Transpose(tmpArr)
.Offset(, 5).FormulaR1C1 = "=(RC[-3]+RC[-2]+RC[-1])/3"
.Offset(, 6).FormulaR1C1 = "=IF(RC[-1]>8,""Gi?i"",IF(AND(RC[-1]<=8,RC[-1]>5),""TB"",""Kém""))"
End With
End Sub
[/GPECODE]
 
Upvote 0
Anh chị giải thích giúp em code này với ạ em lên sheach trên web có code thấy hay và muốn học tập nhưng muốn áp dụng sang cái khác thì ko có biết làm ạ
Mã:
[COLOR=#008000]Sub ViewKhauHao()[/COLOR][COLOR=#008000]On Error GoTo Ketthuc[/COLOR]
[COLOR=#008000]If TSCD.FilterMode = True Then[/COLOR]
[COLOR=#008000]TSCD.ShowAllData[/COLOR]
[COLOR=#008000]Range("F3").EntireColumn.Hidden = False[/COLOR]
[COLOR=#008000]GoTo Ketthuc[/COLOR]
[COLOR=#008000]End If[/COLOR]
[COLOR=#008000]    Range("Khauhao").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _[/COLOR]
[COLOR=#008000]        Range("M2:M3"), Unique:=False[/COLOR]
[COLOR=#008000]Range("F3").EntireColumn.Hidden = True[/COLOR]
[COLOR=#008000]Ketthuc:[/COLOR]
[COLOR=#008000]End Sub[/COLOR]
Và em muốn ứng dùng cái code này vào file này thì làm như thế nào ạ
 

File đính kèm

  • Loc VBA.xlsx
    9.6 KB · Đọc: 36
Upvote 0
Anh chị giải thích giúp em code này với ạ em lên sheach trên web có code thấy hay và muốn học tập nhưng muốn áp dụng sang cái khác thì ko có biết làm ạ
Mã:
[COLOR=#008000]Sub ViewKhauHao()[/COLOR][COLOR=#008000]On Error GoTo Ketthuc[/COLOR]
[COLOR=#008000]If TSCD.FilterMode = True Then[/COLOR]
[COLOR=#008000]TSCD.ShowAllData[/COLOR]
[COLOR=#008000]Range("F3").EntireColumn.Hidden = False[/COLOR]
[COLOR=#008000]GoTo Ketthuc[/COLOR]
[COLOR=#008000]End If[/COLOR]
[COLOR=#008000]    Range("Khauhao").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _[/COLOR]
[COLOR=#008000]        Range("M2:M3"), Unique:=False[/COLOR]
[COLOR=#008000]Range("F3").EntireColumn.Hidden = True[/COLOR]
[COLOR=#008000]Ketthuc:[/COLOR]
[COLOR=#008000]End Sub[/COLOR]
Và em muốn ứng dùng cái code này vào file này thì làm như thế nào ạ
Cho mình hỏi với file bạn gửi lên, bạn muốn làm gì ? hay thể hiện điều gì ? <--- bạn cần nói cụ thể hơn !
 
Upvote 0
Anh chị giải thích giúp em code này với ạ em lên sheach trên web có code thấy hay và muốn học tập nhưng muốn áp dụng sang cái khác thì ko có biết làm ạ
Mã:
[COLOR=#008000]Sub ViewKhauHao()[/COLOR][COLOR=#008000]
On Error GoTo Ketthuc[/COLOR] ' Nếu gặp lỗi thì nhảy đến nhãn Ketthuc
[COLOR=#008000]If TSCD.FilterMode = True Then [/COLOR]' Nếu Sheet TSCD đang ở chế độ Filter thì (TSCD là CodeName)
[COLOR=#008000]TSCD.ShowAllData[/COLOR] ' Hiện hết dữ liệu (bỏ filter ở tất cả các cột)
[COLOR=#008000]Range("F3").EntireColumn.Hidden = False[/COLOR] ' Bỏ ẩn cột F
[COLOR=#008000]GoTo Ketthuc[/COLOR] ' Nhảy đến nhãn Ketthuc
[COLOR=#008000]End If[/COLOR]
[COLOR=#008000]    Range("Khauhao").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _[/COLOR]
[COLOR=#008000]        Range("M2:M3"), Unique:=False[/COLOR] ' Lọc nâng cao (Advance Filter) vùng Khauhao (Khauhao là 1 name của 1 vùng dữ liệu) với vùng điều kiện M2:M3 và lọc duy nhất
[COLOR=#008000]Range("F3").EntireColumn.Hidden = True[/COLOR] ' Ẩn cột F
[COLOR=#008000]Ketthuc:[/COLOR]' Nhãn Ketthuc
[COLOR=#008000]End Sub[/COLOR]
Và em muốn ứng dùng cái code này vào file này thì làm như thế nào ạ
Bạn phải nói bạn muốn làm gì thì mới ứng dụng được chứ. Bạn đưa mỗi cái file không nói gì hết thì ai biết đường nào mà ứng dụng.
 
Upvote 0
Bạn phải nói bạn muốn làm gì thì mới ứng dụng được chứ. Bạn đưa mỗi cái file không nói gì hết thì ai biết đường nào mà ứng dụng.
!$@!!, em nhờ Anh, Chị Giải thích em code trên, và ứng dụng code đó vào file của em, ở đây file của em ko cần ẩn cột, thế nên em chỉ lọc dữ liệu không trống.
----------------
Em loay hoay mà không làm đc nên lên nhờ anh chị
 
Lần chỉnh sửa cuối:
Upvote 0
!$@!!, em nhờ Anh, Chị Giải thích em code trên, và ứng dụng code đó vào file của em, ở đây file của em ko cần ẩn cột, thế nên em chỉ lọc dữ liệu không trống.
----------------
Em loay hoay mà không làm đc nên lên nhờ anh chị

Giải thích code chi cho lòng vòng. Bạn chỉ cần vắn tắt thế này:
- Với file dữ liệu của bạn, bạn muốn lọc thế nào?
- Lọc xong, đặt kết quả ở đâu?
Vậy thôi là đủ rồi. Code của người ta, dùng cho công việc của người ta thì liên quan gì đến file của bạn mà quan tâm
 
Upvote 0
Giải thích code chi cho lòng vòng. Bạn chỉ cần vắn tắt thế này:
- Với file dữ liệu của bạn, bạn muốn lọc thế nào?
- Lọc xong, đặt kết quả ở đâu?
Vậy thôi là đủ rồi. Code của người ta, dùng cho công việc của người ta thì liên quan gì đến file của bạn mà quan tâm
:) vâng em muốn lọc ngay trên dữ liệu gốc, dung bottom để lọc dạng như dùng autofilter ạ, khi đang ở chế độ lọc, thì khi kick vào bottom, sẽ bung lọc và ngược lại
 
Upvote 0
:) vâng em muốn lọc ngay trên dữ liệu gốc, dung bottom để lọc dạng như dùng autofilter ạ, khi đang ở chế độ lọc, thì khi kick vào bottom, sẽ bung lọc và ngược lại

Lọc là lọc cột nào, điều kiện như thế nào và đặt ở đâu.

Lòng vòng mấy bài mà bạn không nói rõ ý được.
 
Upvote 0
:) vâng em muốn lọc ngay trên dữ liệu gốc, dung bottom để lọc dạng như dùng autofilter ạ, khi đang ở chế độ lọc, thì khi kick vào bottom, sẽ bung lọc và ngược lại

Nếu chỉ đơn giản là ẩn và hiện autofilter thì là vậy:
PHP:
Sub GPE()
       Range("B5:E5").autofilter
End sub

Còn nếu bạn muốn lọc theo điều kiện nào ? lọc như thế nào ?........ thì bạn phải nói rõ nội dung, vùng điều kiện ,.......
 
Upvote 0
Lọc là lọc cột nào, điều kiện như thế nào và đặt ở đâu.

Lòng vòng mấy bài mà bạn không nói rõ ý được.
Vâng thực sự em chưa hiểu về vba nên giải thích có hơi khó hiểu mong anh chị thông cảm, lọc toàn bộ vùng dữ liệu của bảng, cột cần lọc là cột số tiền, nếu cột số tiền có dữ liệu ="" hoặc =0 thì sẽ không lọc, lọc tại dữ liệu gốc
 
Upvote 0
Nếu chỉ đơn giản là ẩn và hiện autofilter thì là vậy:
PHP:
Sub GPE()
       Range("B5:E5").autofilter
End sub

Còn nếu bạn muốn lọc theo điều kiện nào ? lọc như thế nào ?........ thì bạn phải nói rõ nội dung, vùng điều kiện ,.......
Em test cái code của anh nó ko ra ạ, ko biết sai sót chỗ nào ko, Vâng ý của em là như vậy
 
Upvote 0
Vâng thực sự em chưa hiểu về vba nên giải thích có hơi khó hiểu mong anh chị thông cảm, lọc toàn bộ vùng dữ liệu của bảng, cột cần lọc là cột số tiền, nếu cột số tiền có dữ liệu ="" hoặc =0 thì sẽ không lọc, lọc tại dữ liệu gốc

Làm đại vậy. Không biết đúng ý không.
 

File đính kèm

  • Loc VBA.xls
    34.5 KB · Đọc: 114
Upvote 0
Dạ đúng là như vậy ạ, Nếu em ko muốn dùng developer để vẽ và dùng insert trên thanh công cụ thì có được không
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ anh em giải thích dùm ý nghĩa 2 dòng code bên dưới với. chi tiết càng tốt để mình có thế hiểu và áp dụng rộng hơn!
Range("A2:A" & [A65000].End(xlUp).Row).Resize(, [A1].End(xlToRight).Column).Copy
Range("A65000").End(xlUp).Select
 
Upvote 0
Dạ đúng là như vậy ạ, Nếu em ko muốn dùng developer để vẽ và dùng insert trên thanh công cụ thì có được không

Bạn thích vẽ kiểu gì cứ vẽ, sau đó Assign Macro cho sub dưới đây là được:
Mã:
Public bChk As Boolean
Sub Main()
  Dim rng As Range
  On Error Resume Next
  Set rng = Sheet1.AutoFilter.Range
  If Not rng Is Nothing Then
    bChk = Not bChk
    If bChk Then rng.AutoFilter 3, ">0" Else rng.AutoFilter 3
  End If
End Sub
-------------
Ngoài lề: Mô tả vấn đề khó đến vậy sao? Vấn đề của bạn chỉ cần mô tả 1 câu là đủ: LỌC 1 CỘT VỚI ĐIỀU KIỆN KHÁC RỔNG
Thế thôi
 
Upvote 0
||||| hay thiệt đó, Thầy có thể giải thích đoạn code trên được không ạ, ví dụ như cái rng & bChk là cái gì vậy ạ,thực sự em ko hiểu về nó, nghĩ bảo học tuần tự nhưng time chưa cho phép, Thanks!
 
Upvote 0
||||| hay thiệt đó, Thầy có thể giải thích đoạn code trên được không ạ, ví dụ như cái rng & bChk là cái gì vậy ạ,thực sự em ko hiểu về nó, nghĩ bảo học tuần tự nhưng time chưa cho phép, Thanks!

Trước khi hỏi chắc bạn không nhìn kỹ:

Theo bạn, 2 cái dòng dưới đây là gì?

Public bChk As Boolean

Dim rng As Range
 
Upvote 0
Xin chào ACE GPE, xin cho hỏi, trong cửa sổ VBA, có cách nào thay đổi tên sheet ko ạh?
ví dụ tôi có một sheet5 bây giờ muốn đổi thành sheet6.

cám ơn ACE
 
Upvote 0
Web KT
Back
Top Bottom