chạy macro không báo lỗi nhưng không có gì thay đổi (2 người xem)

  • Thread starter Thread starter 06th2d
  • Ngày gửi Ngày gửi
Liên hệ QC

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

06th2d

Thành viên chính thức
Tham gia
15/7/10
Bài viết
60
Được thích
2
chào các bạn mình viết hàm cho bảng excell như không hiểu bị lỗi ở đâu mà không chạy được
mình có 1 bảng với 800 hàng trong đó 1 số hàng mình muốn bỏ đi thay bằng "" mình làm như sau

đang ở sheet cần code, click developer > viusal basic

Sub doi()
Dim i As Integer
Dim temp
For i = 2 To 10000
temp = Sheet3.Cells(i, 1) // gán giá trị của ô hàng thứ i cột 1 của sheet 3 cho biến temp
If left(temp, 5) = "mr b:" Then // nếu 5 kí tự từ trái qua =với "mr b:" thì gán cho nó =""
temp = ""
End If
Next
End Sub

nhấp f5, xem nội dung trên sheet vẫn không có gì thay đổi ,mình bị sai ở đâu, và làm sao để chạy đuợc các bạn huớng dẫn mình với mình mới tập viét marco nên không rành
 
Đúng quá rồi. Bạn gán cho biến Temp các giá trị, gán xong bạn để đó chứ có gán lại vào sheet đâu. Thử đoạn code này bạn sẽ thấy:
PHP:
Sub doi()
Dim i As Integer
For i = 2 To 10000
If Left(Sheet3.Cells(i, 1), 5) = "mr b:" Then Sheet3.Cells(i, 1) = ""
Next
End Sub
 
Upvote 0
chào các bạn mình viết hàm cho bảng excell như không hiểu bị lỗi ở đâu mà không chạy được
mình có 1 bảng với 800 hàng trong đó 1 số hàng mình muốn bỏ đi thay bằng "" mình làm như sau

đang ở sheet cần code, click developer > viusal basic

Sub doi()
Dim i As Integer
Dim temp
For i = 2 To 10000
temp = Sheet3.Cells(i, 1) // gán giá trị của ô hàng thứ i cột 1 của sheet 3 cho biến temp
If left(temp, 5) = "mr b:" Then // nếu 5 kí tự từ trái qua =với "mr b:" thì gán cho nó =""
temp = ""
End If
Next
End Sub

nhấp f5, xem nội dung trên sheet vẫn không có gì thay đổi ,mình bị sai ở đâu, và làm sao để chạy đuợc các bạn huớng dẫn mình với mình mới tập viét marco nên không rành
Rõ ràng là có thay đổi đó. Không tin thì bạn thêm câu lệnh Msgbox Temp vào trước câu lệnh End If mà xem.
Tuy nhiên, nội dung trên sheet không đổi là đương nhiên vì bạn đâu có gán sự thay đổi của biến Temp đó lên sheet đâu.
Theo mục đích của bạn thì chẳng cần đến biến Temp. Bạn thử bỏ hẳn các câu lệnh trong vòng For đi và thay bởi câu lệnh: If Left(Sheet3.Cells(i, 1),5) = "mr b:" Then Sheet3.Cells(i, 1).ClearContents xem sao.
 
Upvote 0
cảm ơn bạn mình hiểu rồi nhưng f5 nó báo lỗi này bạn chỉ mình với

"The macros in this project are disabled. Please refer to the online help or documentation of the host application to determine how to enable macros."
 
Upvote 0
Bạn chưa enable macro. Vào Tools - Macro - Security - Security Level chọn Low
 
Upvote 0
cảm ơn các bạn nhiều lắm mình đã hiểu vấn đề, nhưng còn 1 chỗ mình muốn hỏi
cái đọan code này mình múôn lưu lại như 1 add inđộc lập để chạy cho những file excell khác minh cân phải làm gì ???, vì nếu múôn chạy file khác mình phải code cho file đó

trong đó vế đề ở chỗ "sheet3" (k phải fie nào cũng sheet3)...tóm lại mình cần làm gì để biến ý tuởng này thành 1 add in hòan chỉnh thực thi trên các file excell khác nhau..
 
Upvote 0
cảm ơn các bạn nhiều lắm mình đã hiểu vấn đề, nhưng còn 1 chỗ mình muốn hỏi
cái đọan code này mình múôn lưu lại như 1 add inđộc lập để chạy cho những file excell khác minh cân phải làm gì ???, vì nếu múôn chạy file khác mình phải code cho file đó

trong đó vế đề ở chỗ "sheet3" (k phải fie nào cũng sheet3)...tóm lại mình cần làm gì để biến ý tuởng này thành 1 add in hòan chỉnh thực thi trên các file excell khác nhau..
Không biết liệu bạn đã biết cách tạo 1 add-ins chưa.
Còn vấn đề không phải file nào cũng là Sheet3 thì ta bỏ hẳn cái Sheet3. ấy đi, mặc định code sẽ chạy trên sheet hiện hành. Mỗi lần cần thực thi code thì bạn chọn sheet và chạy code này.
 
Upvote 0
chưa bạn ạ, bạn có thể húơng dẫn cho mình đuợc không , vì nó xúât phát từ 1 tuởng nên mình chưa có khái niệm nhiều(code minh còn lam sai nữa là ^^), vẫn còn nhiều thứ phải học..,nếu bỏ cái sheet 3 thì code cụ thể sẽ như thế nào, và từ đó biến biến nó thành addin nếu bạn không phiền vui lòng chỉ giúp mình
 
Upvote 0
Không rõ bạn đang sử dụng bản Excel nào (2003, 2007, 2010,...).
Bây giờ bạn thử nghiệm một chút nhé:
1. Mở 1 file excel mới, nhấn Alt+F11, chèn 1 module và dán đoạn code này vào:
[GPECODE=vb]Sub Test()
Dim Rng As Range, Cll As Range
On Error Resume Next
Set Rng = Application.InputBox("Chon vung ap dung code:", Type:=8)
If Rng Is Nothing Then Exit Sub
For Each Cll In Rng
If Left(Cll, 5) = "mr b:" Then Cll.ClearContents
Next
End Sub[/GPECODE]
2. Quay lại Excel, nhấn Alt+F8, chọn Macro Test, nhấn Options và gán cho nó một phím tắt.
3. Nhấn F12, chọn Type là Excel Add-in (hoặc Excel 97-2003 Add-in) và lưu nó với một tên gì đó tùy bạn (file này sẽ có phần mở rộng là .xlam hoặc .xla).
4. Khởi động lại Excel, bật Add-in vừa tạo lên (với Excel 2010, bạn chọn File\Options\Add-ins, chọn Excel-Add-ins, nhấn nút Go và bật Add-in; với Excel 2003, bạn chọn Tools\Add-ins và bật Add-in).
5. Mở file Excel muốn áp dụng code, nhấn tổ hợp phím đã gán ở bước 2. Tiếp theo, bạn chọn vùng muốn áp dụng code và nhấn Enter xem nó ra cái gì.
 
Upvote 0
cam ơn bạn nhiều lắm mình xài 2k7 đến 3. mình tìm không thấy đuôi mở rộng nên chưa lưu đuợc, đang ở 2.sau khi chon phím tắt mình cancel rồi nhấn f12 nhưng bị kẹt ^^
 
Upvote 0
Web KT

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

Back
Top Bottom