Topic Những câu hỏi về code, xin giải thích các code... đã quá dài nên mình đóng nó lại và mở topic khác
Tất cả những bài viết liên quan đến việc nhờ giải thích, xử lý và gỡ rối code VBA, các bạn vui lòng đăng tại đây!
Cảm ơn
Xin chào các bạn. Cho mình hỏi: Mình viết 1 code sau, và cho vào thành addin
Sub Auto_open()
On Error Resume Next
Dim i As Long, Tenfile as String
i = Workbooks.Count
Tenfile = Workbooks(i).Name
If Right(Tenfile, 3) = "xls" Then
MsgBox "HE THONG KHONG HO TRO MO DINH DANG FILE NAY"
Workbooks(i).Close Save = False
End If
End Sub
Mục đích: Mỗi khi mở từ file thứ 2 trở đi. mà mở file Excel có đuôi là xls (Định dạng 2003), thì sẽ không cho mở. Nhưng không hiểu sao Addin không tự động chạy mặc dù là Auto_open. Vậy có cách nào khác không, hay code bị lỗi đoạn nào vậy. Mình cảm ơn
Xin chào các bạn. Cho mình hỏi: Mình viết 1 code sau, và cho vào thành addin
Sub Auto_open()
On Error Resume Next
Dim i As Long, Tenfile as String
i = Workbooks.Count
Tenfile = Workbooks(i).Name
If Right(Tenfile, 3) = "xls" Then
MsgBox "HE THONG KHONG HO TRO MO DINH DANG FILE NAY"
Workbooks(i).Close Save = False
End If
End Sub
Mục đích: Mỗi khi mở từ file thứ 2 trở đi. mà mở file Excel có đuôi là xls (Định dạng 2003), thì sẽ không cho mở. Nhưng không hiểu sao Addin không tự động chạy mặc dù là Auto_open. Vậy có cách nào khác không, hay code bị lỗi đoạn nào vậy. Mình cảm ơn
Code AddIn kiểu này chắc chắn không hoạt động, bởi Sub Autpen chỉ chạy 1 lần duy nhất khi kích hoạt AddIn mà thôi, và code sẽ không "nhìn" thấy được các file mở sau đó
Muốn làm được yêu cầu trên phải dùng Class. Quy trình như sau:
1> Chèn 1 Class Module, đặt tên là clsWkbEvents
Code trong Class Module:
Mã:
Public WithEvents ExlApp As Application
Private Sub Class_Initialize()
Set ExlApp = Application
End Sub
Private Sub Class_Terminate()
Set ExlApp = Nothing
End Sub
Private Sub ExlApp_WorkbookOpen(ByVal Wb As Workbook)
If UCase(Right(Wb.FullName, 3)) = "XLS" Then
MsgBox "HE THONG KHÔNG HO TRO MO DINH DANG FILE NÀY"
Wb.Close False
End If
End Sub
2> Chèn 1 Module đặt tên tùy ý, với code:
Mã:
Dim ExlObj As New clsWkbEvents
Sub Auto_Open()
If ExlObj Is Nothing Then Set ExlObj = New clsWkbEvents
End Sub
Sub Auto_Close()
Set ExlObj = Nothing
End Sub
Giờ Save As file thành XLAM, kích hoạt AddIn và test thử
Code AddIn kiểu này chắc chắn không hoạt động, bởi Sub Autpen chỉ chạy 1 lần duy nhất khi kích hoạt AddIn mà thôi, và code sẽ không "nhìn" thấy được các file mở sau đó
Muốn làm được yêu cầu trên phải dùng Class. Quy trình như sau:
1> Chèn 1 Class Module, đặt tên là clsWkbEvents
Code trong Class Module:
Mã:
Public WithEvents ExlApp As Application
Private Sub Class_Initialize()
Set ExlApp = Application
End Sub
Private Sub Class_Terminate()
Set ExlApp = Nothing
End Sub
Private Sub ExlApp_WorkbookOpen(ByVal Wb As Workbook)
If UCase(Right(Wb.FullName, 3)) = "XLS" Then
MsgBox "HE THONG KHÔNG HO TRO MO DINH DANG FILE NÀY"
Wb.Close False
End If
End Sub
2> Chèn 1 Module đặt tên tùy ý, với code:
Mã:
Dim ExlObj As New clsWkbEvents
Sub Auto_Open()
If ExlObj Is Nothing Then Set ExlObj = New clsWkbEvents
End Sub
Sub Auto_Close()
Set ExlObj = Nothing
End Sub
Giờ Save As file thành XLAM, kích hoạt AddIn và test thử
Code AddIn kiểu này chắc chắn không hoạt động, bởi Sub Autpen chỉ chạy 1 lần duy nhất khi kích hoạt AddIn mà thôi, và code sẽ không "nhìn" thấy được các file mở sau đó
Muốn làm được yêu cầu trên phải dùng Class. Quy trình như sau:
1> Chèn 1 Class Module, đặt tên là clsWkbEvents
Code trong Class Module:
Mã:
Public WithEvents ExlApp As Application
Private Sub Class_Initialize()
Set ExlApp = Application
End Sub
Private Sub Class_Terminate()
Set ExlApp = Nothing
End Sub
Private Sub ExlApp_WorkbookOpen(ByVal Wb As Workbook)
If UCase(Right(Wb.FullName, 3)) = "XLS" Then
MsgBox "HE THONG KHÔNG HO TRO MO DINH DANG FILE NÀY"
Wb.Close False
End If
End Sub
2> Chèn 1 Module đặt tên tùy ý, với code:
Mã:
Dim ExlObj As New clsWkbEvents
Sub Auto_Open()
If ExlObj Is Nothing Then Set ExlObj = New clsWkbEvents
End Sub
Sub Auto_Close()
Set ExlObj = Nothing
End Sub
Giờ Save As file thành XLAM, kích hoạt AddIn và test thử
Xin chào các bạn. Cho mình hỏi: Mình viết 1 code sau, và cho vào thành addin
Sub Auto_open()
On Error Resume Next
Dim i As Long, Tenfile as String
i = Workbooks.Count
Tenfile = Workbooks(i).Name
If Right(Tenfile, 3) = "xls" Then
MsgBox "HE THONG KHONG HO TRO MO DINH DANG FILE NAY"
Workbooks(i).Close Save = False
End If
End Sub
Mục đích: Mỗi khi mở từ file thứ 2 trở đi. mà mở file Excel có đuôi là xls (Định dạng 2003), thì sẽ không cho mở. Nhưng không hiểu sao Addin không tự động chạy mặc dù là Auto_open. Vậy có cách nào khác không, hay code bị lỗi đoạn nào vậy. Mình cảm ơn
Dim WithEvents app As Excel.Application
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
On Error Resume Next
If Application.Workbooks.Count >= 2 Then
If Strings.UCase(Strings.Right$(Wb.Name, 3)) = "XLS" Then
MsgBox "He thong khong ho tro loai file nay"
Wb.Close False
End If
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Set app = Nothing
End Sub
Private Sub Workbook_Open()
Set app = Application
End Sub
Dim WithEvents app As Excel.Application
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
On Error Resume Next
If Application.Workbooks.Count >= 2 Then
If Strings.UCase(Strings.Right$(Wb.Name, 3)) = "XLS" Then
MsgBox "He thong khong ho tro loai file nay"
Wb.Close False
End If
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Set app = Nothing
End Sub
Private Sub Workbook_Open()
Set app = Application
End Sub
cần may anh giúp đỡ nội dung như thế này:
1. em cần cho ô A1 (là ô của lớp cụ thể bắt đầu 12A1)
2. Cho ô A1 hiển thị vào Form nhập liệu, sau khi nhập số liệu ở các dòng B2:N2 sau khi xong bấm vào LƯU DỮ LIỆU thì dòng hiện hành sẽ là ô B3:N3,.....cứ như thế đến B39:N39
link dính kèm bên dưới