Nhờ sửa mã macro Pastevalue

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

xkun2001

Thành viên mới
Tham gia
16/9/07
Bài viết
34
Được thích
1
Chào các bạn,
Mình có macro này để paste value từ mọi text từ clipboard vào excel. Nhưng nếu clipboard rỗng thì báo lỗi.
Nhờ các bạn sửa giúp, cám ơn các bạn nhiều!

Mã:
Sub PasteValue()
'
' Keyboard Shortcut: Ctrl+q
'-------------------
Dim MyDataObj As New DataObject
Dim St
On Error Resume Next
On Error GoTo PA2
    Selection.PasteSpecial Paste:=xlPasteValues
PA2:
    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo PA3
        MyDataObj.GetFromClipboard
        St = MyDataObj.GetText
        Selection = St
    End If
PA3:
    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo PA4
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True
    End If
PA4:
    If Err.Number <> 0 Then
        Err.Clear
        'Nothing
    End If
End Sub

Khi clipboard rỗng mà gọi lệnh thì báo lỗi sau:
Capture.PNG
 
Bạn thử code này xem đáp ứng được không nhé.
Mã:
Sub PasteValue()
    ' Keyboard Shortcut: Ctrl+q
    '-------------------
    Dim MyDataObj As New DataObject
    Dim St
    
    On Error Resume Next
    
      On Error GoTo PA2
    Selection.PasteSpecial Paste:=xlPasteValues
    
PA2:
    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo PA3
        
        MyDataObj.GetFromClipboard
        St = MyDataObj.GetText
        
        If Len(Trim(St)) > 0 Then
            Selection.Value = St
        End If
    End If
    
PA3:
    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo PA4
        
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True
    End If
    
PA4:
    If Err.Number <> 0 Then
        Err.Clear
    End If
End Sub
 
Upvote 0
Bạn thử code này xem đáp ứng được không nhé.
Mã:
Sub PasteValue()
    ' Keyboard Shortcut: Ctrl+q
    '-------------------
    Dim MyDataObj As New DataObject
    Dim St
  
    On Error Resume Next
  
      On Error GoTo PA2
    Selection.PasteSpecial Paste:=xlPasteValues
  
PA2:
    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo PA3
      
        MyDataObj.GetFromClipboard
        St = MyDataObj.GetText
      
        If Len(Trim(St)) > 0 Then
            Selection.Value = St
        End If
    End If
  
PA3:
    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo PA4
      
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True
    End If
  
PA4:
    If Err.Number <> 0 Then
        Err.Clear
    End If
End Sub
Cám ơn bạn nhưng lỗi ở dòng "St = MyDataObj.GetText" nếu clipboard empty bạn ạ.
1693036953265.png

Lỗi run-timer:
1693037005141.png
 
Upvote 0
Cám ơn bạn nhưng lỗi ở dòng "St = MyDataObj.GetText" nếu clipboard empty bạn ạ.
View attachment 294270

Lỗi run-timer:
View attachment 294271
Kiểu nó vậy hả :
Mã:
Sub PasteValue()
' Keyboard Shortcut: Ctrl+q
'-------------------
Dim MyDataObj As New DataObject
Dim St
On Error Resume Next
    Selection.PasteSpecial Paste:=xlPasteValues
    If Err.Number = 0 Then: Exit Sub
PA2:
    Err.Clear
    MyDataObj.GetFromClipboard
    St = MyDataObj.GetText
    Selection = St
    If Err.Number = 0 Then Exit Sub
PA3:
    Err.Clear
    ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True
    If Err.Number <> 0 Then MsgBox "Bó tay!"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Kiểu nó vậy hả :
Mã:
Sub PasteValue()
' Keyboard Shortcut: Ctrl+q
'-------------------
Dim MyDataObj As New DataObject
Dim St
On Error Resume Next
    Selection.PasteSpecial Paste:=xlPasteValues
    If Err.Number = 0 Then: Exit Sub
PA2:
    Err.Clear
    MyDataObj.GetFromClipboard
    St = MyDataObj.GetText
    Selection = St
    If Err.Number = 0 Then Exit Sub
PA3:
    Err.Clear
    ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True
    If Err.Number <> 0 Then MsgBox "Bó tay!"
End Sub
Cám ơn bạn. Câu lệnh rỏ ràng hơn hẳn :)
 
Upvote 0
Web KT

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

Back
Top Bottom