alibaba2209
Thành viên thường trực
- Tham gia
- 4/12/10
- Bài viết
- 283
- Được thích
- 13
làm sao để đổi được tên của vba nhỉ, bạn nào biết hướng dẫn mình với.. xin cảm ơn!
làm sao để đổi được tên của vba nhỉ, bạn nào biết hướng dẫn mình với.. xin cảm ơn!
Bạn muốn đổi tên Module trong VBA bằng VBA?làm sao để đổi được tên của vba nhỉ, bạn nào biết hướng dẫn mình với.. xin cảm ơn!
mình làm được rồi! cảm ơn nhiều...Tại cửa sổ của VBA bạn vào View chọn Properties Window (hoặc ấn phím F4) sau đó 1 cửa sổ mới hiện lên. Bạn chỉ cần click chooutj vào chữ name rồi đánh tên module bạn muốn vào là ok
thanks you! hay quá....Bạn muốn đổi tên Module trong VBA bằng VBA?
Bạn có thể thử code sau:
[GPECODE=vb]
Sub ReNameMod(Mod_Old_Name As String, Mod_New_Name As String)
Dim VBACom As VBComponent
On Error GoTo MyExit
For Each VBACom In ThisWorkbook.VBProject.VBComponents
If VBACom.Name = Mod_Old_Name Then VBACom.Name = Mod_New_Name
Next
MyExit:
Set VBACom = Nothing
End Sub[/GPECODE]
Lưu ý: vào Tool/Reference chọn tích vào "Microsoft Visual Basic for Applications Extensibility x.x"
Đổi kiểu này cũng có nhiều bất cập, riêng tôi thì không dùng code mà chỉ dùng Find & Replace để đổi thôi. Tôi đưa ra ví dụ như sau:Bạn muốn đổi tên Module trong VBA bằng VBA?
Bạn có thể thử code sau:
[GPECODE=vb]
Sub ReNameMod(Mod_Old_Name As String, Mod_New_Name As String)
Dim VBACom As VBComponent
On Error GoTo MyExit
For Each VBACom In ThisWorkbook.VBProject.VBComponents
If VBACom.Name = Mod_Old_Name Then VBACom.Name = Mod_New_Name
Next
MyExit:
Set VBACom = Nothing
End Sub[/GPECODE]
Lưu ý: vào Tool/Reference chọn tích vào "Microsoft Visual Basic for Applications Extensibility x.x"
Sub RunMyMacro()
Call MyMacro
End Sub
Sub MyMacro()
MsgBox "Nghia Dep Trai"
End Sub
Đổi kiểu này cũng có nhiều bất cập, riêng tôi thì không dùng code mà chỉ dùng Find & Replace để đổi thôi. Tôi đưa ra ví dụ như sau:
Mã:Sub RunMyMacro() Call MyMacro End Sub Sub MyMacro() MsgBox "Nghia Dep Trai" End Sub
Như thế, bất kỳ cái Sub nào có chạy macro MyMacro thì sẽ đều báo lỗi (vì tên của "nhân vật chính" bị thay đổi).
Tôi sẽ làm như sau:
Chọn vào Tên Macro cần thay đổi rồi bấm Ctrl+H để ra hộp thoại Replace & Find.
Tại Replace with tôi gõ tên cần thay đổi
Sau đó tôi check vào nút Current Project (tất cả các module của ThisWorkbook), cuối cùng tôi click vào nút Replace All. Như thế, tôi đã hoàn tất việc chuyển đổi tên hay bất cứ chuỗi gì tôi muốn thay đổi.
Chỉ cần thế này thì khỏi check Tool/Reference gì ráo:Bạn muốn đổi tên Module trong VBA bằng VBA?
Bạn có thể thử code sau:
[GPECODE=vb]
Sub ReNameMod(Mod_Old_Name As String, Mod_New_Name As String)
Dim VBACom As VBComponent
On Error GoTo MyExit
For Each VBACom In ThisWorkbook.VBProject.VBComponents
If VBACom.Name = Mod_Old_Name Then VBACom.Name = Mod_New_Name
Next
MyExit:
Set VBACom = Nothing
End Sub[/GPECODE]
Lưu ý: vào Tool/Reference chọn tích vào "Microsoft Visual Basic for Applications Extensibility x.x"
Sub ReNameMod(Mod_Old_Name As String, Mod_New_Name As String)
On Error Resume Next
ThisWorkbook.VBProject.VBComponents(Mod_Old_Name).Name = Mod_New_Name
End Sub
Sub Test()
ReNameMod "Module1", "ndu"
End Sub
Hình như muốn thay đổi mấy cái Project này phải check vào Trust Center gì đó mới cho chạy phải không Thầy?Người ta đổi tên MODULE chứ có phải đổi tên Sub đâu mà Find & Replace
----------------------------------
Chỉ cần thế này thì khỏi check Tool/Reference gì ráo:
Ví dụ áp dụngMã:Sub ReNameMod(Mod_Old_Name As String, Mod_New_Name As String) On Error Resume Next ThisWorkbook.VBProject.VBComponents(Mod_Old_Name).Name = Mod_New_Name End Sub
Mã:Sub Test() ReNameMod "Module1", "ndu" End Sub
Hình như muốn thay đổi mấy cái Project này phải check vào Trust Center gì đó mới cho chạy phải không Thầy?
nên chắc là biết làm goàithanks you! hay quá....
Hỏi ngược lại chủ topic cái: Bạn có thể cho biết bạn cần đổi tên Module để làm cái gì không?[h=2]Hỏi cách đổi tên Module[/h]
Ai biết đâu! Thử thấy hổng được thì.. la lên.. lại hướng dẫn tiếp...
Nhưng mà... bị vì ở trên người ta có nói thanh kiu
nên chắc là biết làm goài
Ẹc... Ẹc...
(Nếu chỉ Thanh kiu chơi cho vui thì..ráng chịu vậy)
---------------------------------
Hỏi ngược lại chủ topic cái: Bạn có thể cho biết bạn cần đổi tên Module để làm cái gì không?
Bạn hãy đính kèm tập tin đã giải quyết xong bằng code với 5 biến kia. Lúc đó thì người khác mới biết, thực sự bạn muốn gì.Các anh chị làm ơn cho hỏi: Có cách nào hoán đổi tên biến được không? Ví dụ mình có 5 biến mVarial1, mVarial2, mVarial3, mVarial4, mVarial5... thay vì phải dùng lệnh DIM cho từng biến 1 thì mình dùng For... Next để khai biến và gán giá trị.
Hoặc trường hợp: Tên các biến mình đưa vào 1 cột trong sheet "CODE" chẳng hạn, mình sẽ quét cột có tên biến để mình DIM... thì có làmđược không?
Trân trọng!
VBA không cho khai biến và gán giá trị cùng một luc. Chấm hết..... để khai biến và gán giá trị.
Có thể "gộp" vào mảng khi 5 biến có tính chất nào đó chung, về mặt lôgíc chúng là "tương đương". Lúc đó "gộp" sẽ giúp code ngắn gọn, lôgíc. Còn cứ có 5 biến bất kỳ mà gộp vào mảng thì chỉ làm code thêm rắc rối, không có chút lợi nào.Lười biếng khai từng biến thì cứ vệc khai chúng một lần trong một cái mảng.
Sub test()
Dim z1 As Long, z2 As String, z3 As Boolean, z4 As Date, z5 As Range
With Sheet1
z1 = .Range("A1").Value
z2 = .Range("C1").Value
z3 = .Range("B1").Value > .Range("A1").Value
If .Range("D1").Value < DateSerial(2020, 1, 1) Then
z4 = Date
Else
z4 = .Range("D1").Value
End If
Set z5 = .Range(z2).Offset(Abs(z1))
If z3 Then
z5(1).Value = z4
Else
z5(1).Value = 1
End If
End With
End Sub
Đương nhiên là TỒI rồi. Khai báo "gộp" là tự phản lại lý do tại sao phải khai báo:...
Nếu bây giờ khai báo Dim mang(1 To 5) thì cũng được thôi. Nhưng cũng chả lợi thêm được gì, còn "tồi" hơn so với khai báo 5 biến. Khai báo thế nào cũng được thôi. Nhưng phải dễ hiểu, có lôgíc. Vì thế mà tôi yêu cầu đính kèm tập tin đã giải quyết xong với code dùng 5 biến. Lúc đó mới có lời khuyên cụ thể được.