Chuyên đề giải đáp những thắc mắc về code VBA (7 người xem)

Liên hệ QC

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

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:
Chẳng hạn workbook của em nó có nhiều sheets chẳng hạn. Thì có Phải khai bao biến hay như thế nào không ạ
Vậy dùng thế này.
Mã:
Sub GPE()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
    If sh.Name = "a" Or sh.Name = "b" Then MsgBox "lam dai cong viec gi do"
Next sh
End Sub
 
Upvote 0
Vậy dùng thế này.
Mã:
Sub GPE()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
    If sh.Name = "a" Or sh.Name = "b" Then MsgBox "lam dai cong viec gi do"
Next sh
End Sub
Nếu như mà em muốn làm gì đó trên cả 2 sheet a và b. Chẳng hạn a1 của cả 2 sheet cùng 1 kiểu thì viết đường dẫn vào từng sheet 1 ạ
 
Upvote 0
Mã:
Sub Boimau()
  Dim ws As Worksheet, LastRow As Long
  For Each ws In Worksheets
    If ws.Name = "Makikaeshi" Or ws.Name = "Yokomaki" Or ws.Name = "Tsunagi" Then
      With ws.Activate
        LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
      ws.Range("N7:O" & LastRown).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
      End With

    End If
  Next ws
End Sub
Nhờ các thầy xem giúp em. đoạn code tren em đang sai ở chỗ nào với ạ, mà không thấy nó chạy
 
Upvote 0
Mã:
Sub Boimau()
  Dim ws As Worksheet, LastRow As Long
  For Each ws In Worksheets
    If ws.Name = "Makikaeshi" Or ws.Name = "Yokomaki" Or ws.Name = "Tsunagi" Then
      With ws.Activate
        LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
      ws.Range("N7:O" & LastRown).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
      End With

    End If
  Next ws
End Sub
Nhờ các thầy xem giúp em. đoạn code tren em đang sai ở chỗ nào với ạ, mà không thấy nó chạy
Bạn xem thử code dưới đây
Các dòng có dấu ' là lệnh cũ, dưới liền kề là mới
Mã:
Sub Boimau()
  Dim ws As Worksheet, LastRow As Long
  For Each ws In Worksheets
    If ws.Name = "Makikaeshi" Or ws.Name = "Yokomaki" Or ws.Name = "Tsunagi" Then
      'With ws.Activate
      ws.Activate
        'LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
        LastRow = Range("H" & Rows.Count).End(xlUp).Row
      'ws.Range("N7:O" & LastRown).Interior
      With ws.Range("N7:O" & LastRow).Interior '<-- LastRown sua thanh LastRow
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
      End With

    End If
  Next ws
End Sub
 
Upvote 0
Nhờ các anh chị giúp CODE ạ. Tôi muốn viết 1 macro lấy tên đối tượng mình click vào mà chưa làm được. Xin cám ơn trước ạ!
 

File đính kèm

Upvote 0
chào các thầy cô. cho em hỏi 1 chút à. có code nào khi mà em mở 1 file excell A lên. thì đồng thời file excell B ở thư mục khác sẽ cũng được mở lên cùng không ạ.
 
Upvote 0
chào các thầy cô. cho em hỏi 1 chút à. có code nào khi mà em mở 1 file excell A lên. thì đồng thời file excell B ở thư mục khác sẽ cũng được mở lên cùng không ạ.
Có bạn viết code mở file B rồi vứt nó vào sự kiện mở file trong excel A là được nhé.
 
Upvote 0
Nhờ các Bạn chỉ giúp mình gộp code bên dưới:
Mã:
If sArr(I, 23) <> Empty Then
        If Month(sArr(I, 23)) < 10 Then
            dArr(I, 3) = Right(sArr(I, 23), 2)
        ElseIf Month(sArr(I, 23)) > 9 Then
            dArr(I, 3) = Right(sArr(I, 23), 2) + 1
    End If
End If

    If sArr(I, 23) = Empty Then
            dArr(I, 3) = "kg"
        End If
Xin cảm ơn.
 
Upvote 0
Nhờ các Bạn chỉ giúp mình gộp code bên dưới:
Mã:
Xin cảm ơn.
[/QUOTE]
Bạn gộp vậy xem sao.
[CODE]If sArr(I, 23) <> Empty Then
        If Month(sArr(I, 23)) < 10 Then
            dArr(I, 3) = Right(sArr(I, 23), 2)
        ElseIf Month(sArr(I, 23)) > 9 Then
            dArr(I, 3) = Right(sArr(I, 23), 2) + 1
    End If
Else
   dArr(I, 3) = "kg"
End If
 
Upvote 0
Dear A/c có cách nào giúp tốc độ code phia dưới nhanh hơn dc ko , nhờ a/c giúp
Code dưới là ghi dữ liệu từ textbox trên userform vào sheet

Mã:
Private Sub CommandButton5_Click()

Dim lastrow As Long
Dim i As Long
With Sheets("Pak_in")
For i = 1 To 115 Step 6
lastrow = Sheets("Pak_in").Cells(Rows.Count, "D").End(xlUp).Row + 1
If Controls("TextBox" & i) = "" Then Exit Sub
.Range("D" & lastrow) = Controls("TextBox" & i)
.Range("E" & lastrow) = Controls("TextBox" & i + 1)
.Range("F" & lastrow) = Controls("TextBox" & i + 2)
.Range("G" & lastrow) = Controls("TextBox" & i + 3)
.Range("H" & lastrow) = Controls("TextBox" & i + 4).Value
.Range("I" & lastrow) = Controls("TextBox" & i + 5)

 Controls("TextBox" & i) = ""
 Controls("TextBox" & i + 1) = ""
 Controls("TextBox" & i + 2) = ""
 Controls("TextBox" & i + 3) = ""
 Controls("TextBox" & i + 4) = ""
 Controls("TextBox" & i + 5) = ""
Next i
End With
End Sub
 
Upvote 0
Dear A/c có cách nào giúp tốc độ code phia dưới nhanh hơn dc ko , nhờ a/c giúp
Code dưới là ghi dữ liệu từ textbox trên userform vào sheet

Mã:
Private Sub CommandButton5_Click()

Dim lastrow As Long
Dim i As Long
With Sheets("Pak_in")
For i = 1 To 115 Step 6
lastrow = Sheets("Pak_in").Cells(Rows.Count, "D").End(xlUp).Row + 1
If Controls("TextBox" & i) = "" Then Exit Sub
.Range("D" & lastrow) = Controls("TextBox" & i)
.Range("E" & lastrow) = Controls("TextBox" & i + 1)
.Range("F" & lastrow) = Controls("TextBox" & i + 2)
.Range("G" & lastrow) = Controls("TextBox" & i + 3)
.Range("H" & lastrow) = Controls("TextBox" & i + 4).Value
.Range("I" & lastrow) = Controls("TextBox" & i + 5)

Controls("TextBox" & i) = ""
Controls("TextBox" & i + 1) = ""
Controls("TextBox" & i + 2) = ""
Controls("TextBox" & i + 3) = ""
Controls("TextBox" & i + 4) = ""
Controls("TextBox" & i + 5) = ""
Next i
End With
End Sub
Cách thì có nhưng nhìn thấy file mới viết được code.
 
Upvote 0
Code bên dưới mình khai báo thêm Dic1 nhưng bị lỗi
Mã:
Dim Dic As Object, Dic1 As Object, Ma()
Dim sArr(), sArr1(), dArr(), tArr(), TieuDe(), DK As Boolean
Dim I As Long, J As Long, K As Long, N As Long, R As Long
    Set Dic = CreateObject("Scripting.Dictionary")
    Set Dic1 = CreateObject("Scripting.Dictionary")
    sArr = Sheets("Ma").Range("A2:B14").Value
    sArr1 = Sheets("Ma").Range("D2:E9").Value

    For I = 1 To 13
        Dic.Item(sArr(I, 1)) = sArr(I, 2)
        Dic1.Item(sArr1(I, 1)) = sArr1(I, 2)
    Next I
Các Bạn chỉ giúp cách sửa lại để không bị lỗi.
Xin cảm ơn.
 
Upvote 0
Code bên dưới mình khai báo thêm Dic1 nhưng bị lỗi
Mã:
Dim Dic As Object, Dic1 As Object, Ma()
Dim sArr(), sArr1(), dArr(), tArr(), TieuDe(), DK As Boolean
Dim I As Long, J As Long, K As Long, N As Long, R As Long
    Set Dic = CreateObject("Scripting.Dictionary")
    Set Dic1 = CreateObject("Scripting.Dictionary")
    sArr = Sheets("Ma").Range("A2:B14").Value
    [CODE]sArr1 = Sheets("Ma").Range("D2:E14").Value

For I = 1 To 13
Dic.Item(sArr(I, 1)) = sArr(I, 2)
Dic1.Item(sArr1(I, 1)) = sArr1(I, 2)
Next I[/CODE]
Các Bạn chỉ giúp cách sửa lại để không bị lỗi.
Xin cảm ơn.
Lỗi dòng lệnh này.
Mã:
   Dic1.Item(sArr1(I, 1)) = sArr1(I, 2)
Không liên quan gì đến DIC1 cả.Cái này gặp phải vấn đề là mảng nó không tồn tại.
Bạn sửa dòng này thành
Mã:
sArr1 = Sheets("Ma").Range("D2:E14").Value
 
Upvote 0
Lỗi dòng lệnh này.
Mã:
   Dic1.Item(sArr1(I, 1)) = sArr1(I, 2)
Không liên quan gì đến DIC1 cả.Cái này gặp phải vấn đề là mảng nó không tồn tại.
Bạn sửa dòng này thành
Mã:
sArr1 = Sheets("Ma").Range("D2:E14").Value
Vậy mình phải sửa lại như thế nào vậy Bạn.
Bài đã được tự động gộp:

Lỗi dòng lệnh này.
Mã:
   Dic1.Item(sArr1(I, 1)) = sArr1(I, 2)
Không liên quan gì đến DIC1 cả.Cái này gặp phải vấn đề là mảng nó không tồn tại.
Bạn sửa dòng này thành
Mã:
sArr1 = Sheets("Ma").Range("D2:E14").Value
Nhờ các Bạn xem giúp. Mình muốn kết quả như cột N trong sheet DN5. Xin cảm ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom