Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union([C7], [C9])) Is Nothing Then
Const kT As String = " ": Dim DDai As Integer
Dim StrC As String, sStr As String
Range("A1:A999").ClearContents
StrC = Target.Value & kT & "GPE.COM"
Do
DDai = InStr(StrC, kT)
If DDai = 0 Then
Exit Do
Else
sStr = Left(StrC, DDai - 1)
If Range("A2:A999").Find(sStr, LookIn:=xlFormulas, lookat:=xlWhole) _
Is Nothing Then
[A65500].End(xlUp).Offset(1) = sStr
End If
StrC = Mid(StrC, DDai + 1)
End If
Loop
End If
End Sub
Sub Paste()
Dim MyDataObj As New DataObject
Dim arr() As String, vitri As Range
MyDataObj.GetFromClipboard
k = 0: dem = 0
arr() = Split(MyDataObj.GetText, " ")
Set vitri = Application.InputBox("Chon vitri luu:", Type:=8)
For i = LBound(arr) To UBound(arr)
For j = i To UBound(arr)
If arr(j) = arr(i) Then
dem = dem + 1
End If
Next
If dem = 1 Then
vitri.Offset(k) = arr(i)
k = k + 1
End If
dem = 0
Next
End Sub
If Instr(A,Arr(i))= 0 then
A= A & " " & Arr(i)
Cells(K,Cot).value=Arr(i)
K=K+1
End If
Sub Paste()
On Error Resume Next
Dim MyDataObj As New DataObject
Dim arr() As String, vitri As Range
MyDataObj.GetFromClipboard
K = 0
arr() = Split(MyDataObj.GetText, " ")
Set vitri = Application.InputBox("Chon vitri luu:", Type:=8)
For i = LBound(arr) To UBound(arr)
If InStr(A, arr(i)) = 0 Then
A = A & " " & arr(i)
vitri.Offset(K) = arr(i)
K = K + 1
End If
Next
End Sub
Vậy chắc chỉ còn 1 trường hợp là bạn đã chọn High cho Security rồi. Bạn vào Tools (trên bảng tính Excel) -> Macro -> Security -> chọn Low -> OK.các bác hướng dẫn em cụ thể hơn được không ạ? em đã đọc kĩ hướng dẫn sử dụng trước khi dùng rồi
Ctrl + C -> Alt + F8 trước đó em cũng vào VBA (nhấn Alt + F11) -> vào Tools -> chọn References -> nhấn tiếp vào Browse... -> vào C:\Windows\System32 -> chọn file FM20.DLL -> OK -> OK.
mà sao không được ạ?
Sub Paste()
On Error Resume Next
Dim MyDataObj As New DataObject
Dim arr() As String, vitri As Range
Dim A as String
Dim K as Interger
MyDataObj.GetFromClipboard
K = 0
arr() = Split(MyDataObj.GetText, " ")
Set vitri = Application.InputBox("Chon vitri luu:", Type:=8)
For i = LBound(arr) To UBound(arr)
If InStr(A, arr(i)) = 0 Then
A = A & " " & arr(i)
vitri.Offset(K) = arr(i)
K = K + 1
End If
Next
End Sub
Bác nói làm không được thì em chịu thua luôn đó.Code của Po_Pikachu, mình chạy cũng không được, dù đã thực hiện đúng như hướng dẫn! Không biết tại sao?
Chính vì vậy mà mình mới nói, loay hoay nãy giờ mà không biết lý do tại sao? Copy xong. ấn alt+F8 --> chạy code, không thấy ra kết quả gì cả!Bác nói làm không được thì em chịu thua luôn đó.
Bác đã từng có bài đăng vấn đề này rồi mà! Em chỉ đăng lại thôi chứ có thay đổi gì đâu. Bác xem ở link này: http://www.giaiphapexcel.com/forum/showthread.php?t=12396
Thân.
bác cho em hỏi làm thế nào mà biết được nó đã chắc chắn nằm trong Clipboad ạ?Trước khi chạy bạn phải chắc chắn trong Clipboad vừa mới copy 1 chuỗi duy nhất.
Khi xuất hiện hộp thoại Input hãy dùng chuột để chọn ô bắt đầu chèn, trong hộp input sẽ hiện địa chỉ ô.
bác cho em hỏi làm thế nào mà biết được nó đã chắc chắn nằm trong Clipboad ạ?
Code bác cho em test mỏi tay cũng vẫn báo lỗi ạ.
không biết có bác nào bị lỗi như em không thay vì QUÉT ô dữ liệu
như bác Pikachu bẩu thì em lại cứ tương vào ô có dữ liệu mà
Ctrl + C thế nên nó mới không ra.
Giờ thì Ok rồi ạ. Cảm ơn các bác nhiều.
Cho em hỏi nếu em không cần phân biệt chữ in hoa và chữ thường
VD nếu có 2 chữ Nước và nước thì chỉ cần nhập 1 chữ nước thôi.
Trường hợp nữa là chữ tách ra từ đoạn text nếu đã trùng với chữ có trong cột
chọn làm vị trí lưu thì cũng không cần nhập lại.
và nếu sau chữ có dấu chấm, phẩy, chấm than, hỏi chấm, ba chấm v.v...
thì cũng không cần lưu những kí tự này.
thì phải làm thế nào ạ?