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:
Có Anh/Chị nào giúp em set pass cho file PDF sau khi export ra không ạ?

Em xin đính kèm file ở dưới, trong File e đã xuất ra dc file PDF rồi, nhưng không có set pass dc ạ
 

File đính kèm

  • Macro_mailMege_salary.xls
    67.5 KB · Đọc: 8
Upvote 0
Có Anh/Chị nào giúp em set pass cho file PDF sau khi export ra không ạ?

Em xin đính kèm file ở dưới, trong File e đã xuất ra dc file PDF rồi, nhưng không có set pass dc ạ
Bạn đã thử bài này chưa?

http://www.giaiphapexcel.com/forum/showthread.php?120467-Macro-save-file-với-định-dạng-pdf-có-pass

Mình cũng đang hóng xem có cách nào khác không đây. Search nhiều rùi nhưng câu trả lời mình thấy chỉ có như link mình gửi bạn là có vẻ ok.
 
Upvote 0
Giới hạn vùng thao tác?

Xin chào tất cả các bạn,

Oanh Thơ muốn sử dung 1 đoạn code hoạt động trong sự kiện bên dưới, với điều kiện là khi thao tác trong cộ E từ dòng số 10 nghĩa là từ E10 xuống đến dòng cuối cùng trong cột E có dữ lieu thì sự kiện mới có tác dụng còn ngoài điều kiện trên thì code không hoạt động.

Mã:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        
End Sub

Rất mong nận được sự giúp đỡ từ các bạn.
Xin cảm ơn các bạn nhiều
 
Upvote 0
Xin chào tất cả các bạn,

Oanh Thơ muốn sử dung 1 đoạn code hoạt động trong sự kiện bên dưới, với điều kiện là khi thao tác trong cộ E từ dòng số 10 nghĩa là từ E10 xuống đến dòng cuối cùng trong cột E có dữ lieu thì sự kiện mới có tác dụng còn ngoài điều kiện trên thì code không hoạt động.

Mã:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        
End Sub

Rất mong nận được sự giúp đỡ từ các bạn.
Xin cảm ơn các bạn nhiều
Không biết đúng ý không?
Mã:
If Not Intersect(Target, Range("E10:E" & Range("E65000").End(xlUp).Row)) Is Nothing Then
    'code cua ban.
End If
 
Upvote 0
rivate Sub Worksheet_Calculate()
Static oldval
If Range("A2").Value <> oldval Then
oldval = Range("A2")
Call AutoNhatKy
End If
End SubPrivate Sub Worksheet_Calculate()
Static oldval
If Range("A2").Value <> oldval Then
oldval = Range("A2")
Call AutoNhatKy
End If
End Sub
-------------------------------
Mình có đoạn code gọi Sub tự động, làm thế nào để khi đang đứng ở 1 sheet khác code chạy mà nó không bị quay lại Sheet chạy code
 
Upvote 0
rivate Sub Worksheet_Calculate()
Static oldval
If Range("A2").Value <> oldval Then
oldval = Range("A2")
Call AutoNhatKy
End If
End SubPrivate Sub Worksheet_Calculate()
Static oldval
If Range("A2").Value <> oldval Then
oldval = Range("A2")
Call AutoNhatKy
End If
End Sub
-------------------------------
Mình có đoạn code gọi Sub tự động, làm thế nào để khi đang đứng ở 1 sheet khác code chạy mà nó không bị quay lại Sheet chạy code

alibaba chứ có phải "40 tên cướp" đâu mà thích thả bom diễn đàn vậy ?

http://www.giaiphapexcel.com/forum/...1-code-về-công-thức-mảng!&p=756874#post756874

http://www.giaiphapexcel.com/forum/...!-có-file-và-ảnh-đính-kèm&p=756877#post756877
 
Upvote 0
Upvote 0
Upvote 0
Bác giúp em vấn đề này với ạ!

vấn đề khó hay dễ tôi đều làm nếu tôi biết , chỉ tiếc là tôi không giao thiệp với các thành phần không tôn trọng nội quy , hễ thích thì gửi bài viết cùng 1 nội dung ở nhiều nơi , cho nên bạn phải chờ thành viên khác rồi .
 
Upvote 0
vấn đề khó hay dễ tôi đều làm nếu tôi biết , chỉ tiếc là tôi không giao thiệp với các thành phần không tôn trọng nội quy , hễ thích thì gửi bài viết cùng 1 nội dung ở nhiều nơi , cho nên bạn phải chờ thành viên khác rồi .
Dạ vâng! em sẽ đọc lại Nội Quy và chấp hành. Cảm ơn bác đã nhắc nhở
 
Upvote 0
Nhờ mọi người giải thích giúp đoạn Code lưu File dưới đây

Em nhờ mọi người giải thích giúp e những phần bôi đỏ dưới đây :

Mã:
ActiveWorkbook.SaveAs fileName:=path & "\" & fileName & ".xls",FileFormat:=xlExcel8, [COLOR=#ff0000][B]Password:="", WriteResPassword:="",[/B][/COLOR]

 [COLOR=#ff0000][B]ReadOnlyRecommended:=False[/B][/COLOR], CreateBackup:=False

Em xin cảm ơn ạ !
 
Upvote 0
Em nhờ mọi người giải thích giúp e những phần bôi đỏ dưới đây :

Mã:
ActiveWorkbook.SaveAs fileName:=path & "\" & fileName & ".xls",FileFormat:=xlExcel8, [COLOR=#ff0000][B]Password:="", WriteResPassword:="",_ [/B][/COLOR]
  [COLOR=#ff0000][B]ReadOnlyRecommended:=False[/B][/COLOR], CreateBackup:=False

Em xin cảm ơn ạ !


Password:=""
'Đặt mật khẩu Open file

WriteResPassword:=""
'Đặt mật khẩu Edit file

ReadOnlyRecommended:=False
'Thiết lập chế độ chỉ đọc, False là không đặt chế độ chỉ đọc, True là bật chế độ chỉ đọc cho file
 
Upvote 0
Em nhờ mọi người giải thích giúp e những phần bôi đỏ dưới đây :

Mã:
ActiveWorkbook.SaveAs fileName:=path & "\" & fileName & ".xls",FileFormat:=xlExcel8, [COLOR=#ff0000][B]Password:="", WriteResPassword:="",[/B][/COLOR]

 [COLOR=#ff0000][B]ReadOnlyRecommended:=False[/B][/COLOR], CreateBackup:=False

Em xin cảm ơn ạ !

Nếu chỗ màu đỏ = "" và = False thì xóa luôn đi, khỏi giải thích. Chứ ghi vào mà không có tác dụng gì thì ghi làm gì cho thêm năng đầu suy nghĩ. Đợi khi nào dùng tới sẽ nghiên cứu
 
Upvote 0
Cảm ơn anh benfaint và chú Ndu ạ. Ủa mà sao không thấy nút cảm ơn trên diễn đàn nữa đâu ta ....

Nếu chỗ màu đỏ = "" và = False thì xóa luôn đi, khỏi giải thích. Chứ ghi vào mà không có tác dụng gì thì ghi làm gì cho thêm năng đầu suy nghĩ. Đợi khi nào dùng tới sẽ nghiên cứu

Code này hổng phải con viết đâu chú, cái này của người khác họ lấy ở đâu đó rồi nhờ con giải thích dùm ... về phần này thì con cũng không rành lắm nên phải hỏi lại cho chắc chắn ạ
 
Upvote 0
Nhờ mọi người giải thích giúp e đoạn Code này với ạ, đoạn Code này để tạo ra 5 File khác:

Trong file đính kèm e thấy có đoạn Code:
Mã:
   Sheets(Array("Sheet1")).Select
    Sheets(Array("Sheet1")).Copy

Nhưng về sau không thấy Paste ở đâu ... mà xóa 2 dòng Code trên đi thì nó lại chỉ tạo ra mỗi 1 File ...Em không hiểu là sao nữa ...
 

File đính kèm

  • Copy of KPI-HUNG.xlsm
    23.6 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
Nói chung mọi người giải thích sơ qua về đoạn code này giúp e vs được không ạ:
Mã:
Sub SplitFile(rptTitle As String, fileName As String, path As String)
    
    Range("B2") = rptTitle

    Sheets(Array("Sheet1")).Select  
    Sheets(Array("Sheet1")).Copy  [COLOR=#ff0000][B] ' Chỗ này Copy xong nhưng không thấy Paste vô đâu cả  ... ????'[/B][/COLOR]
    
    Range("E7:F8").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs fileName:=path & "\" & fileName & ".xls", _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    
    Application.DisplayAlerts = True
    ActiveWindow.Close
  
End Sub
----------------------------------------------------------------------------------------------------------

Sub Main()
    Dim rptTitle As String, fileName As String, i As Integer, j As Integer, path As String
    path = ThisWorkbook.path
    
    i = 2
    j = 1
    Set WS = ThisWorkbook.Sheets("MA_NV")
    
    Do Until IsEmpty(WS.Cells(i, j))
    rptTitle = WS.Cells(i, j)
    fileName = WS.Cells(i, j + 1)

    SplitFile rptTitle, fileName, path ' -->[COLOR=#ff0000][B] tại sao chổ này phải viết vầy mà không thể viết thế này : SplitFile(rptTitle As String, fileName As String, path As String) '[/B][/COLOR]
    
    i = i + 1
    
    Loop

End Sub
-----------------------------------------------------------------------------------------------------
Sub chonmayin()
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub
'phai chay cai nay truoc de chon may in
 
Lần chỉnh sửa cuối:
Upvote 0
Nói chung mọi người giải thích sơ qua về đoạn code này giúp e vs được không ạ:
Mã:
Sub SplitFile(rptTitle As String, fileName As String, path As String)
    
    Range("B2") = rptTitle

    Sheets(Array("Sheet1")).Select  
    Sheets(Array("Sheet1")).Copy  [COLOR=#ff0000][B] ' Chỗ này Copy xong nhưng không thấy Paste vô đâu cả  ... ????'[/B][/COLOR]
    
    Range("E7:F8").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs fileName:=path & "\" & fileName & ".xls", _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    
    Application.DisplayAlerts = True
    ActiveWindow.Close
  
End Sub

bạn xóa hết tất cả các dòng từ sau lệnh
Mã:
Sheets(Array("Sheet1")).Copy
trở xuống là biết ngay nó copy đi đâu thôi mà .
 
Upvote 0
Em nhờ mọi người dịch cho em đoạn code này ạ:

Option Explicit

Public Sub GPE()
Dim Dic As Object, Ws As Worksheet, sArr(), dArr(1 To 100, 1 To 4)
Dim I As Long, J As Long, K As Long, Rws As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
For Each Ws In Worksheets
If Ws.Name <> "Data" Then
sArr = Ws.Range("A4", Ws.Range("A4").End(xlDown)).Resize(, 5).Value
For I = 1 To UBound(sArr)
Tem = sArr(I, 1) & "#" & sArr(I, 2) & "#" & sArr(I, 5)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = sArr(I, 1)
dArr(K, 2) = sArr(I, 2)
dArr(K, 4) = sArr(I, 5)
End If
Rws = Dic.Item(Tem)
dArr(Rws, 3) = dArr(Rws, 3) + sArr(I, 4)
Next I
End If
Next Ws
With Sheets("Data")
.Range("C5:F100").ClearContents
.Range("C5:F5").Resize(K) = dArr
.Range("A5:F5").Resize(K).Borders.LineStyle = 1
End With
Set Dic = Nothing
End Sub

Em cảm ơn!
 
Upvote 0
Em nhờ mọi người dịch cho em đoạn code này ạ:

Option Explicit

Public Sub GPE()
Dim Dic As Object, Ws As Worksheet, sArr(), dArr(1 To 100, 1 To 4)
Dim I As Long, J As Long, K As Long, Rws As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
For Each Ws In Worksheets
If Ws.Name <> "Data" Then
sArr = Ws.Range("A4", Ws.Range("A4").End(xlDown)).Resize(, 5).Value
For I = 1 To UBound(sArr)
Tem = sArr(I, 1) & "#" & sArr(I, 2) & "#" & sArr(I, 5)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = sArr(I, 1)
dArr(K, 2) = sArr(I, 2)
dArr(K, 4) = sArr(I, 5)
End If
Rws = Dic.Item(Tem)
dArr(Rws, 3) = dArr(Rws, 3) + sArr(I, 4)
Next I
End If
Next Ws
With Sheets("Data")
.Range("C5:F100").ClearContents
.Range("C5:F5").Resize(K) = dArr
.Range("A5:F5").Resize(K).Borders.LineStyle = 1
End With
Set Dic = Nothing
End Sub

Em cảm ơn!

đang hỏi ở đây thì cứ vào đây mà hỏi

http://www.giaiphapexcel.com/forum/...Tìm-hiểu-về-mảng-qua-code&p=757119#post757119
 
Upvote 0
Web KT

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

Back
Top Bottom