Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

Liên hệ QC
Status
Không mở trả lời sau này.

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

----------------------------------------------------------------------------------------------------------------


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
Các bạn cho hỏi có thể chuyển các hàm sau thành code được không? Nếu được xin nhờ các bạn giúp dùm với. Hàm này chạy trong khoảng từ E4:E32 và E35:E64. Cụ thể: =IF(C4="","",COUNTIF($C$4:C4,C4)+VLOOKUP($C$1,Tiet_Tuan,MATCH(C4,Lop,0)+3,0)-1)
Xin cám ơn các bạn
 
Upvote 0
Chào diễn đàn, mình nhờ các cao thủ trên diễn đàn viết giúp đoạn code xóa dữ liệu, khi nhấp vào nút xóa thì hiện hộp thoại thông báo " bạn có muốn xóa dữ liệu không" và có hai nút YES NO nếu chọn yes thì sẽ xóa các ô đã chọn và chọn No thì không . chân thành cảm ơn diễn đàn
 
Upvote 0
Chào diễn đàn, mình nhờ các cao thủ trên diễn đàn viết giúp đoạn code xóa dữ liệu, khi nhấp vào nút xóa thì hiện hộp thoại thông báo " bạn có muốn xóa dữ liệu không" và có hai nút YES NO nếu chọn yes thì sẽ xóa các ô đã chọn và chọn No thì không . chân thành cảm ơn diễn đàn

Bạn tạo Module chứa Macro Xoa
Mã:
Sub Xoa()
    Msg = MsgBox("Xoa du lieu trong vung " & Selection.Address, vbYesNo)
    If Msg = 7 Then Exit Sub
    Selection.ClearContents
End Sub

Để gọi Macro Xoa bằng cách phải chuột thì bạn chép vào Module Sheet đoạn code sau
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = 1
Xoa
End Sub

Bạn quét chọn vùng muốn xóa và phải chuột để thử nha.
 
Upvote 0
Bạn tạo Module chứa Macro Xoa
Mã:
Sub Xoa()
    Msg = MsgBox("Xoa du lieu trong vung " & Selection.Address, vbYesNo)
    If Msg = 7 Then Exit Sub
    Selection.ClearContents
End Sub

Để gọi Macro Xoa bằng cách phải chuột thì bạn chép vào Module Sheet đoạn code sau
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = 1
Xoa
End Sub

Bạn quét chọn vùng muốn xóa và phải chuột để thử nha.
Em thấy làm vầy có lý hơn:
PHP:
Sub Auto_Open()
  Application.OnKey "{DEL}", "Xoa"
End Sub
PHP:
Sub Auto_Close()
  Application.OnKey "{DEL}"
End Sub
PHP:
Sub Xoa()
  Dim Msg As Long
  Msg = MsgBox("Xoa du lieu trong vung " & Selection.Address, vbYesNo)
  If Msg = 6 Then Selection.ClearContents
End Sub
Chọn vùng rồi cứ bâm nút Delete trên bàn phím là Sub Xoa tự nhiên hoạt động để hiển thị MsgBox
 
Upvote 0
Cảm ơn Ndu ! Cái vụ Auto_Open và Auto_Close để OnKey phím Delete bây giờ mới biết, từ trước tới giờ mình toàn phải sử dụng sự kiện Worksheet_BeforeDoubleClick hoặc Worksheet_BeforeRightClick để gọi Macro.
 
Upvote 0
PHP:
Sub del()
With Sheet2
.Protection.AllowEditRanges(1).Delete
.Protection.AllowEditRanges(1).Delete
.Protection.AllowEditRanges(1).Delete
.Protection.AllowEditRanges(1).Delete
End With
End Su
Xin hỏi code trên số (1) có ý nghĩ gì vậy?
Và tại sao em muốn xoá 4 vùng với code trên thì lại không được ạ, vậy pahir làm sao để xoá toàn bộ pass vùng trong 1 sheet.
http://www.giaiphapexcel.com/forum/showthread.php?58511-Code-xoá-pass-vùng!
thân!
 
Upvote 0
Nhờ viết code lọc dữ liệu

Cám ơn bạn ChanhTQ@ nhiều, nhưng bạn ơi đoạn code bạn làm giúp mình chạy vẫn sai. khi gọi tên giáo viên Hảo vẫn lấy lộn tiết dạy của T.Thảo hoặc của D.Thảo. Bạn giúp mình chữa lại nha. mình mới làm quen với Vba nên yếu lắm. Cám ơn bạn nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub del()
With Sheet2
 .Protection.AllowEditRanges(1).Delete
End With
End Su
Xin hỏi code trên số (1) có ý nghĩ gì vậy?
Và tại sao em muốn xoá 4 vùng với code trên thì lại không được ạ, vậy pahir làm sao để xoá toàn bộ pass vùng trong 1 sheet.
thân!

Code trên số (1) có nghĩa là vùng 1 (vùng thứ nhất bị Protection)
Muốn xóa 4 vùng thì bạn phải viết như sau:
With Sheet2
.Protection.AllowEditRanges(1).Delete
.Protection.AllowEditRanges(2).Delete
.Protection.AllowEditRanges(3).Delete
.Protection.AllowEditRanges(4).Delete
End With

Muốn xóa tất cả các vùng trong Sheet2 thì bạn thử code sau:
Mã:
Sub Delete_Allow()
    On Error Resume Next
    With Sheets("Sheet2")
        For Each Alow In .Protection.AllowEditRanges
            Alow.Delete
        Next
     End With
End Sub
 
Upvote 0
Code trên số (1) có nghĩa là vùng 1 (vùng thứ nhất bị Protection)
Muốn xóa 4 vùng thì bạn phải viết như sau:
With Sheet2
.Protection.AllowEditRanges(1).Delete
.Protection.AllowEditRanges(2).Delete
.Protection.AllowEditRanges(3).Delete
.Protection.AllowEditRanges(4).Delete
End With

Muốn xóa tất cả các vùng trong Sheet2 thì bạn thử code sau:
Mã:
Sub Delete_Allow()
    On Error Resume Next
    With Sheets("Sheet2")
        For Each Alow In .Protection.AllowEditRanges
            Alow.Delete
        Next
     End With
End Sub
Vậy muốn xoá tất cả vùng trong 1 woordbook thì fair sửa lại code thế nào vậy anh?
 
Upvote 0
Vậy muốn xoá tất cả vùng trong 1 woordbook thì fair sửa lại code thế nào vậy anh?
Bạn sửa lại như thế này thử xem.
PHP:
Sub Delete_Allow()
On Error Resume Next
For Each sh In Sheets
    For Each Alow In sh.Protection.AllowEditRanges
        Alow.Delete
    Next
Next
End Sub
 
Upvote 0
làm thế nào để gán giá trị có điều kiện bởi vì dòng và cột thay đổi

Mình không hiểu tại dùng hàm gì trong VBA để làm tròn số số thập phân đến phần nghìn.
Mình có bảng tính khoảng 100000 dòng thì bây giờ ở cột 6 từ dòng thứ 5 trở đi toàn các chữ số đến thập phân.
ví dụ:
0.6677888
0.90000012
0.29987764
.........
.........
bây giờ mình muốn làm tròn số đến chữ số hàng nghìn thì mình làm thế nào
0.6677888 thành 0.67


0.90000012 thành 0.90

0.29987764 thành 0.30


mong các bạn giúp.

mình đã chuyển bài này sang mục khác
http://www.giaiphapexcel.com/forum/...án-đối-tượng-có-điều-kiện&p=365427#post365427
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Private Sub InTungPhanTu(ByVal PhanTu As String, SoBanIn As Long)Dim ViTri As Long, i As LongViTri = InStr(PhanTu, "-")    If ViTri > 0 Then        For i = CLng(Left(PhanTu, ViTri - 1)) To CLng(Right(PhanTu, Len(PhanTu) - ViTri))            Sheet2.[C6].Value = Sheet1.Cells(i + 5, "A").Value            MsgBox Sheet2.[C5].Value            'ActiveSheet.PrintOut Copies:=SoBanIn, ActivePrinter:=LBMayin.Caption        Next    Else        Sheet2.[C6].Value = Sheet1.Cells(PhanTu + 5, "A").Value        MsgBox Sheet2.[C5].Value        'ActiveSheet.PrintOut Copies:=SoBanIn, ActivePrinter:=LBMayin.Caption    End IfEnd Sub

Em xin hỏi hàm CLng có nghĩa là gì? em search hoài không thấy

 
Upvote 0
Em xin hỏi hàm CLng có nghĩa là gì? em search hoài không thấy

Trong cửa sổ VBA, bạn chi cần bôi đen chữ CLng rồi bấm F1 đã có ngay câu trả lời rồi
CLng dùng để biến đổi 1 giá trị về kiểu biến Long (Do số tách ra từ chuổi, nó chỉ là Text nên phải qua phép biến đổi này để thành số thật sự)
Nếu bạn không muốn dùng CLng thì có thể nhân với 1 cũng chẳng có vấn đề gì (thay CLng(Left(PhanTu, ViTri - 1)) thành 1*(Left(PhanTu, ViTri - 1)) )
 
Upvote 0
Trong cửa sổ VBA, bạn chi cần bôi đen chữ CLng rồi bấm F1 đã có ngay câu trả lời rồi
CLng dùng để biến đổi 1 giá trị về kiểu biến Long (Do số tách ra từ chuổi, nó chỉ là Text nên phải qua phép biến đổi này để thành số thật sự)
Nếu bạn không muốn dùng CLng thì có thể nhân với 1 cũng chẳng có vấn đề gì (thay CLng(Left(PhanTu, ViTri - 1)) thành 1*(Left(PhanTu, ViTri - 1)) )

Em hiểu rồi, nó kiểu Số dạng TẼXT *1...ẹc nhưng viết 1* sẽ thấy dễ hiểu hơn
Em đã nhấn F1 nhưng nó ra phần Bing search trực tiếp trên internet nhưng ko thấy có ra Chắc em chưa tic hay set đâu đó trong ẽxel rồi.
 
Upvote 0
PHP:
Sub Unlock()
    For X = 9 To 20
    Sheets(X).[H5:H6,F12:F227,I12:AM227].Locked = False
    Next
End Sub
Xin hỏi GPE code này của em sửa lại thế nào cho đỡ bị lỗi vây?
Thanks!
 
Upvote 0
à! không fair do tên thầy ạ! nó báo lỗi ở nội dung code.Còn cái tên em sửa lại tên khác mà miễn sao không trùng với các tên hệ thống của Exel.
Thì bạn cũng phải đưa file lên đây chứ
Còn tạm thời bạn thử đừng dùng Range theo kiểu [...] ---> Sửa thành Sheets(X).Range("H5:H6,F12:F227,I12:AM227").Locked = False xem thế nào nhé
 
Upvote 0
Hỏi cách chèn 1 hình ảnh vào 1 ô trong file Excel

Mình là dân mới học lập trình VBA, nhiều thứ cũng tự mò. Mình muốn dùng code để chèn tự động 1 hình ảnh vào 1 ô Excel.
PHP:
Public Function InsertPicture() As Object
InsertPicture = Sheet1.Pictures.Insert("Penguins.jpg")
With Pic
.Top = Sheet1.Cells(48, 4).Top
.Left = Sheet1.Cells(48, 4).Left
End With
End Function
Ở trên ô Excel, mình gõ InsertPicture() thì nó bị #VALUE!
Vậy đoạn code của mình bị sai chỗ nào? Mong các bạn giúp đỡ.
File đính kèm: http://www.mediafire.com/?w2m7nqu3kjf5u6k
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom