Hỏi về hàm tìm kiếm trong VBA

Liên hệ QC

diemvuongvathuongde

Thành viên chính thức
Tham gia
5/11/07
Bài viết
75
Được thích
2
Các bạn cho hỏi, trong VBA có hàm tìm kiếm vị trí của 1 kí tự trong 1 chuỗi?
Ví dụ: vitri("a","hgsanhvdabva")=4
 
Các bạn cho hỏi, trong VBA có hàm tìm kiếm vị trí của 1 kí tự trong 1 chuỗi?
Ví dụ: vitri("a","hgsanhvdabva")=4

Trong VBA for excel bạn có hai cách
Cách 1 dùng hàm find của excel
Cách 2 Dùng vùng lặp để quét
Ngoài ra không biết còn cách nào không?? Chắc còn nhiều cách nữa

PHP:
Sub test1()
Dim MyString As String, MyPosition As Integer
MyString = "cdfghajkl"
MyPosition = Application.WorksheetFunction.Find("a", MyString, 1)
a = MsgBox(MyPosition, , "Thong Bao")
End Sub

Sub test2()
Dim MyString, TargetString As String, MyPosition, MyLenth As Integer
MyString = "cdfghajkl"
TargetString = "ha"
Lenth1 = Len(MyString)
Lenth2 = Len(TargetString)
'-----------------------------------------------------------------------------
For i = 1 To Lenth1
    If Mid(MyString, i, Lenth2) = TargetString Then
        MyPosition = i
        a = MsgBox(MyPosition, , "Thong Bao")
        Exit For
    End If
Next i
End Sub
 
Upvote 0
Hàm Instr() bạn à!

Trong CS Immediate của VBE ta nhập dòng sau:
?instr("DiemVuongVaThuongDe","De") & nhấn {ENTER}​
VBA sẽ đưa ra đáp số : 18 . . . . . . . . . . . . . . . . . . . . . . . .
 
Upvote 0
bạn ơi cho mình hỏi tại sao chỗ này lại không cần khai báo biến Lenth1, Lenth2 vậy ?
Tại vì code đó đã mười mấy năm rồi.
Mấy người mà bạn thấy bi giờ đóng dấu "dân xịn, kẻ lão luyện, cốt cừ khôi, công thức mảng trấn thiên hạ,..." hồi mười mấy năm trước đều là mới bặp bẹ học.
 
Upvote 0
Sub test2()
Dim MyString, TargetString As String, MyPosition, MyLenth As Integer
MyString = "cdfghajkl"
TargetString = "ha"
Lenth1 = Len(MyString)
Lenth2 = Len(TargetString)
'-----------------------------------------------------------------------------
For i = 1 To Lenth1
If Mid(MyString, i, Lenth2) = TargetString Then
MyPosition = i
a = MsgBox(MyPosition, , "Thong Bao")
Exit For
End If
Next i
End Sub

bạn ơi cho mình hỏi tại sao trong code này lại không cần khai báo biến Lenth1, Lenth2 vậy ? mình thử thì thấy nó vẫn chạy đúng?
 
Upvote 0
...
bạn ơi cho mình hỏi tại sao trong code này lại không cần khai báo biến Lenth1, Lenth2 vậy ? mình thử thì thấy nó vẫn chạy đúng?
Đâu có ai nói nó sai đâu? Bạn hiểu bài #5 nói gì hôn?
Căn bản biến trong VBA đâu có buộc phải khai báo. Trừ phi mình tự buộc bằng câu lệnh dẫn (lệnh dẫn, không hải lệnh chạy) "Option Explicit"
 
Upvote 0
Đâu có ai nói nó sai đâu? Bạn hiểu bài #5 nói gì hôn?
Căn bản biến trong VBA đâu có buộc phải khai báo. Trừ phi mình tự buộc bằng câu lệnh dẫn (lệnh dẫn, không hải lệnh chạy) "Option Explicit"
mình hiểu rồi cảm ơn bạn nhiều, trước mình nghĩ phải khai báo biến thì mới dùng được.
 
Upvote 0
Thực ra, gặp code ngắn, có mục đích chữa cháy 1 lẩn rồi bỏ thì tôi cũng lười khai báo biến.

Tuy nhiên, người có kinh nghiệm thì khi lười khai báo biến cũng phải kiểm soát 2 điều sau đây:
1. nếu không rõ trong project có những biến toàn cục là gì thì bắt buộc phải khai báo. Mục đích khai báo biến nội trogn trươngf hợp này là để khong bị nhầm lẫn với biến toàn cục. Các biến nội trùng tên sẽ che hết các biến toàn cục.
2. nếu dùng biến loại số thì phải coi chừng. Lần gán đầu tiên VBA sẽ tự tạo biến loại thích hợp.
Nếu lần đầu tiên gán cho một số nguyên thì rất có thể biến được cho là integer (16 bit); gán lần thứ nhì với một trị Long thì có thể bị tràn số.
 
Upvote 0
Thực ra, gặp code ngắn, có mục đích chữa cháy 1 lẩn rồi bỏ thì tôi cũng lười khai báo biến.

Tuy nhiên, người có kinh nghiệm thì khi lười khai báo biến cũng phải kiểm soát 2 điều sau đây:
1. nếu không rõ trong project có những biến toàn cục là gì thì bắt buộc phải khai báo. Mục đích khai báo biến nội trogn trươngf hợp này là để khong bị nhầm lẫn với biến toàn cục. Các biến nội trùng tên sẽ che hết các biến toàn cục.
2. nếu dùng biến loại số thì phải coi chừng. Lần gán đầu tiên VBA sẽ tự tạo biến loại thích hợp.
Nếu lần đầu tiên gán cho một số nguyên thì rất có thể biến được cho là integer (16 bit); gán lần thứ nhì với một trị Long thì có thể bị tràn số.
Tuyệt quá. cảm ơn bạn rất nhiều !
 
Upvote 0
Web KT

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

Back
Top Bottom