Lấy dữ liệu của ô khác làm comment cho ô hiện tại

Liên hệ QC

emcha1506

Thành viên mới
Tham gia
14/1/22
Bài viết
1
Được thích
0
Xin nhờ mọi người giúp ạ, em đã tìm trên khắp diễn đàn nhưng chưa thấy bài viết nào giải đáp thắc mắc này ạ. Xin nhờ các vị tiền bối viết code VBA cho vấn đề này ạ.

Lấy dữ liệu các ô của cột J làm comment cho các ô tương ứng ở cột I

ô nào ở cột J không có dữ liệu thì ô ở cột I cũng không có comment
 

File đính kèm

  • tao commnent.xlsx
    10.7 KB · Đọc: 16
Xin nhờ mọi người giúp ạ, em đã tìm trên khắp diễn đàn nhưng chưa thấy bài viết nào giải đáp thắc mắc này ạ. Xin nhờ các vị tiền bối viết code VBA cho vấn đề này ạ.

Lấy dữ liệu các ô của cột J làm comment cho các ô tương ứng ở cột I

ô nào ở cột J không có dữ liệu thì ô ở cột I cũng không có comment
Thử code này xem có giúp được gì không?
Mã:
Option Explicit

Sub XoaComment(rng As Range)
    On Error Resume Next
    rng.ClearComments
End Sub
Sub TaoComment(rng As Range, sText As String)
    rng.AddComment
    rng.Comment.Visible = False
    rng.Comment.Text Text:=sText
End Sub

Public Sub Main()
    Dim rng As Range
    For Each rng In Sheet1.Range("J1:J7")
        XoaComment rng.Offset(, -1)
        If rng <> "" Then
            TaoComment rng.Offset(, -1), rng.Text
        End If
    Next rng
End Sub
 
Upvote 0
Cùng câu hỏi. Không biết bạn trên đã thử code chưa và kết quả thế nào?
 
Upvote 0
Thử code này xem có giúp được gì không?
Mã:
Option Explicit

Sub XoaComment(rng As Range)
    On Error Resume Next
    rng.ClearComments
End Sub
Sub TaoComment(rng As Range, sText As String)
    rng.AddComment
    rng.Comment.Visible = False
    rng.Comment.Text Text:=sText
End Sub

Public Sub Main()
    Dim rng As Range
    For Each rng In Sheet1.Range("J1:J7")
        XoaComment rng.Offset(, -1)
        If rng <> "" Then
            TaoComment rng.Offset(, -1), rng.Text
        End If
    Next rng
End Sub
Xin chào anh ạ,
Em muốn dùng code này của Anh để tạo một addin (vì công việc của em hay phải tạo comment theo yêu cầu).
Em nhờ Anh giúp đỡ sửa code với các tiêu chí:
- Chọn được vùng cần tạo Comment.
- Chọn được vùng dữ liệu text cho Comment (các ô dữ liệu tịnh tiến tương ứng)
Em đã đính kèm file giải thích theo kèm.
Rất mong được sự giúp đỡ từ Anh và các Anh Chị GPE
Em cám ơn!
 

File đính kèm

  • Book1.xlsm
    16.8 KB · Đọc: 3
Upvote 0
Xin chào anh ạ,
Em muốn dùng code này của Anh để tạo một addin (vì công việc của em hay phải tạo comment theo yêu cầu).
Em nhờ Anh giúp đỡ sửa code với các tiêu chí:
- Chọn được vùng cần tạo Comment.
- Chọn được vùng dữ liệu text cho Comment (các ô dữ liệu tịnh tiến tương ứng)
Em đã đính kèm file giải thích theo kèm.
Rất mong được sự giúp đỡ từ Anh và các Anh Chị GPE
Em cám ơn!
Bạn tham khảo code này. (vẫn là Code của anh @giaiphap cải tiến thêm 1 chút)
Hy vọng đúng ý.
Mã:
Public Sub TaoGhiChu()
Dim i&, j&
Dim Rng As Range, Rng1 As Range
Dim VungGhiChu As String, GhiChu As String, Cel As Range
Dim S, S1
Run:
 VungGhiChu = Application.InputBox("Nhâp vùng cân tao comment", "VÙNG CÂN TAO COMMENT")
    If VungGhiChu = "False" Then Exit Sub
    If VungGhiChu <> "" Then
        S = Split(VungGhiChu, ":")
        Set Rng = Range(S(0) & ":" & S(1))
        Call XoaComment(Rng)
        GoTo Run1
    Else
        If MsgBox(" Ban chưa chon Vung cân ghi chu", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
Run1:
GhiChu = Application.InputBox("Nhâp vùng làm comment", "VÙNG LÀM COMMENT")
If GhiChu = "False" Then Exit Sub
    If GhiChu <> "" Then
        S1 = Split(GhiChu, ":")
        Set Rng1 = Range(S1(0) & ":" & S1(1))
        If Rng.Rows.Count > Rng1.Rows.Count Then
            If MsgBox("Sô dong làm textcomment it hơn sô dong can tao Comment, như vây se có 1 sô dong không có comment" & Chr(10) & " Ban có muôn nhâp lai không?", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
                GoTo Run1
            Else
                Exit Sub
            End If
        ElseIf Rng.Rows.Count >= Rng1.Rows.Count Then
            For i = 1 To Rng.Rows.Count
                    If Rng(i, 1) <> "" Then TaoComment Rng(i, 1), Rng1(i, 1).Text
            Next i
        End If
    Else
        If MsgBox(" Ban chưa chon Vùng làm text ghi chú", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
MsgBox " Ban đa tao comment cho vùng " & VungGhiChu & " thành công"
End Sub
[/USER]
 
Upvote 0
Bạn tham khảo code này. (vẫn là Code của anh @giaiphap cải tiến thêm 1 chút)
Hy vọng đúng ý.
Mã:
Public Sub TaoGhiChu()
Dim i&, j&
Dim Rng As Range, Rng1 As Range
Dim VungGhiChu As String, GhiChu As String, Cel As Range
Dim S, S1
Run:
 VungGhiChu = Application.InputBox("Nhâp vùng cân tao comment", "VÙNG CÂN TAO COMMENT")
    If VungGhiChu = "False" Then Exit Sub
    If VungGhiChu <> "" Then
        S = Split(VungGhiChu, ":")
        Set Rng = Range(S(0) & ":" & S(1))
        Call XoaComment(Rng)
        GoTo Run1
    Else
        If MsgBox(" Ban chưa chon Vung cân ghi chu", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
Run1:
GhiChu = Application.InputBox("Nhâp vùng làm comment", "VÙNG LÀM COMMENT")
If GhiChu = "False" Then Exit Sub
    If GhiChu <> "" Then
        S1 = Split(GhiChu, ":")
        Set Rng1 = Range(S1(0) & ":" & S1(1))
        If Rng.Rows.Count > Rng1.Rows.Count Then
            If MsgBox("Sô dong làm textcomment it hơn sô dong can tao Comment, như vây se có 1 sô dong không có comment" & Chr(10) & " Ban có muôn nhâp lai không?", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
                GoTo Run1
            Else
                Exit Sub
            End If
        ElseIf Rng.Rows.Count >= Rng1.Rows.Count Then
            For i = 1 To Rng.Rows.Count
                    If Rng(i, 1) <> "" Then TaoComment Rng(i, 1), Rng1(i, 1).Text
            Next i
        End If
    Else
        If MsgBox(" Ban chưa chon Vùng làm text ghi chú", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
MsgBox " Ban đa tao comment cho vùng " & VungGhiChu & " thành công"
End Sub
[/USER]
Cám ơn bạn, để mình thử ạ
 
Upvote 0
Bạn tham khảo code này. (vẫn là Code của anh @giaiphap cải tiến thêm 1 chút)
Hy vọng đúng ý.
Mã:
Public Sub TaoGhiChu()
Dim i&, j&
Dim Rng As Range, Rng1 As Range
Dim VungGhiChu As String, GhiChu As String, Cel As Range
Dim S, S1
Run:
 VungGhiChu = Application.InputBox("Nhâp vùng cân tao comment", "VÙNG CÂN TAO COMMENT")
    If VungGhiChu = "False" Then Exit Sub
    If VungGhiChu <> "" Then
        S = Split(VungGhiChu, ":")
        Set Rng = Range(S(0) & ":" & S(1))
        Call XoaComment(Rng)
        GoTo Run1
    Else
        If MsgBox(" Ban chưa chon Vung cân ghi chu", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
Run1:
GhiChu = Application.InputBox("Nhâp vùng làm comment", "VÙNG LÀM COMMENT")
If GhiChu = "False" Then Exit Sub
    If GhiChu <> "" Then
        S1 = Split(GhiChu, ":")
        Set Rng1 = Range(S1(0) & ":" & S1(1))
        If Rng.Rows.Count > Rng1.Rows.Count Then
            If MsgBox("Sô dong làm textcomment it hơn sô dong can tao Comment, như vây se có 1 sô dong không có comment" & Chr(10) & " Ban có muôn nhâp lai không?", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
                GoTo Run1
            Else
                Exit Sub
            End If
        ElseIf Rng.Rows.Count >= Rng1.Rows.Count Then
            For i = 1 To Rng.Rows.Count
                    If Rng(i, 1) <> "" Then TaoComment Rng(i, 1), Rng1(i, 1).Text
            Next i
        End If
    Else
        If MsgBox(" Ban chưa chon Vùng làm text ghi chú", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
MsgBox " Ban đa tao comment cho vùng " & VungGhiChu & " thành công"
End Sub
[/USER]
Mình chạy code và có lỗi sau, mong bạn chỉnh sửa giúp.
1709389683111.png
1709389708257.png
 
Upvote 0
Mình chạy code và có lỗi sau, mong bạn chỉnh sửa giúp.
View attachment 299319
View attachment 299320
Sửa code của bạn @HUONGHCKT nhé.
Mã:
Public Sub TaoGhiChu()
Dim i&, j&
Dim VungGhiChu As Range, GhiChu As Range
Run:
    On Error Resume Next
    Set VungGhiChu = Application.InputBox("Nhâp vùng cân tao comment", "VÙNG CÂN TAO COMMENT", Type:=8)
    On Error GoTo 0
    If Not VungGhiChu Is Nothing Then
        GoTo Run1
    Else
        If MsgBox(" Ban chua chon Vung cân ghi chu", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
Run1:
    On Error Resume Next
    Set GhiChu = Application.InputBox("Nhâp vùng làm comment", "VÙNG LÀM COMMENT", Type:=8)
    On Error GoTo 0
    If Not GhiChu Is Nothing Then
        If VungGhiChu.Rows.Count <> GhiChu.Rows.Count Then
            If MsgBox("Sô dong làm textcomment it hon sô dong can tao Comment, nhu vây se có 1 sô dong không có comment" & Chr(10) & " Ban có muôn nhâp lai không?", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
                GoTo Run1
            Else
                Exit Sub
            End If
        ElseIf VungGhiChu.Rows.Count = GhiChu.Rows.Count Then
            Call XoaComment(VungGhiChu)
            For i = 1 To VungGhiChu.Rows.Count
                    If VungGhiChu(i, 1) <> "" Then TaoComment VungGhiChu(i, 1), GhiChu(i, 1).Text
            Next i
        End If
    Else
        If MsgBox(" Ban chua chon Vùng làm text ghi chú", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run1
        Else
            Exit Sub
        End If
    End If
MsgBox " Ban da tao comment cho vùng " & VungGhiChu.Address(False, False) & " thành công"
End Sub
Lưu ý: Code sẽ lỗi nếu chọn nhiều hơn một vùng chọn.
 
Upvote 0
Sửa code của bạn @HUONGHCKT nhé.
Mã:
Public Sub TaoGhiChu()
Dim i&, j&
Dim VungGhiChu As Range, GhiChu As Range
Run:
    On Error Resume Next
    Set VungGhiChu = Application.InputBox("Nhâp vùng cân tao comment", "VÙNG CÂN TAO COMMENT", Type:=8)
    On Error GoTo 0
    If Not VungGhiChu Is Nothing Then
        GoTo Run1
    Else
        If MsgBox(" Ban chua chon Vung cân ghi chu", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
Run1:
    On Error Resume Next
    Set GhiChu = Application.InputBox("Nhâp vùng làm comment", "VÙNG LÀM COMMENT", Type:=8)
    On Error GoTo 0
    If Not GhiChu Is Nothing Then
        If VungGhiChu.Rows.Count <> GhiChu.Rows.Count Then
            If MsgBox("Sô dong làm textcomment it hon sô dong can tao Comment, nhu vây se có 1 sô dong không có comment" & Chr(10) & " Ban có muôn nhâp lai không?", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
                GoTo Run1
            Else
                Exit Sub
            End If
        ElseIf VungGhiChu.Rows.Count = GhiChu.Rows.Count Then
            Call XoaComment(VungGhiChu)
            For i = 1 To VungGhiChu.Rows.Count
                    If VungGhiChu(i, 1) <> "" Then TaoComment VungGhiChu(i, 1), GhiChu(i, 1).Text
            Next i
        End If
    Else
        If MsgBox(" Ban chua chon Vùng làm text ghi chú", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run1
        Else
            Exit Sub
        End If
    End If
MsgBox " Ban da tao comment cho vùng " & VungGhiChu.Address(False, False) & " thành công"
End Sub
Lưu ý: Code sẽ lỗi nếu chọn nhiều hơn một vùng chọn.
Cảm ơn anh @giaiphap đã xem bài và chỉ bảo.
 
Upvote 0
Sửa code của bạn @HUONGHCKT nhé.
Mã:
Public Sub TaoGhiChu()
Dim i&, j&
Dim VungGhiChu As Range, GhiChu As Range
Run:
    On Error Resume Next
    Set VungGhiChu = Application.InputBox("Nhâp vùng cân tao comment", "VÙNG CÂN TAO COMMENT", Type:=8)
    On Error GoTo 0
    If Not VungGhiChu Is Nothing Then
        GoTo Run1
    Else
        If MsgBox(" Ban chua chon Vung cân ghi chu", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run
        Else
            Exit Sub
        End If
    End If
Run1:
    On Error Resume Next
    Set GhiChu = Application.InputBox("Nhâp vùng làm comment", "VÙNG LÀM COMMENT", Type:=8)
    On Error GoTo 0
    If Not GhiChu Is Nothing Then
        If VungGhiChu.Rows.Count <> GhiChu.Rows.Count Then
            If MsgBox("Sô dong làm textcomment it hon sô dong can tao Comment, nhu vây se có 1 sô dong không có comment" & Chr(10) & " Ban có muôn nhâp lai không?", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
                GoTo Run1
            Else
                Exit Sub
            End If
        ElseIf VungGhiChu.Rows.Count = GhiChu.Rows.Count Then
            Call XoaComment(VungGhiChu)
            For i = 1 To VungGhiChu.Rows.Count
                    If VungGhiChu(i, 1) <> "" Then TaoComment VungGhiChu(i, 1), GhiChu(i, 1).Text
            Next i
        End If
    Else
        If MsgBox(" Ban chua chon Vùng làm text ghi chú", vbCritical + vbYesNo, "THÔNG BÁO") = vbYes Then
            GoTo Run1
        Else
            Exit Sub
        End If
    End If
MsgBox " Ban da tao comment cho vùng " & VungGhiChu.Address(False, False) & " thành công"
End Sub
Lưu ý: Code sẽ lỗi nếu chọn nhiều hơn một vùng chọn.
Dạ, em đã chạy được rồi.
Cám ơn anh chị rất nhiều. Chúc anh chị buổi tối vui vẻ.
 
Upvote 0
Web KT
Back
Top Bottom