xin được giúp đỡ về vòng lặp vba

Liên hệ QC

vn8690

Thành viên mới
Tham gia
11/3/13
Bài viết
36
Được thích
0
xin chào tất cả mọi người

mình có làm 1 file để học từ vựng kanji( tiếng nhật )
mình có thể cho chạy từng chữ 1 , click 1 lần tự động nhảy 1 chữ
nhưng mình muốn nó tự chạy đến hết danh sách từ vựng
nhưng mình không viết được vòng lặp cho nó
rất mong mọi người giúp đỡ
file mình đính kèm bên dưới
thanks & brg
 

File đính kèm

  • kjnvba.xlsm
    52.6 KB · Đọc: 23
Bạn cần ghi chú rõ ràng hơn về yêu cầu của mình nhé.
Có thể thấy bạn đang học từ sheet N5.
1. Vậy có học từ các sheet khác kg ?
2. Vòng lặp tự nhảy theo thời gian ? Cách thức kích hoạt thời gian này (điều kiện nhảy sang từ tiếp theo ? Hay hết giờ thì sẽ làm gì ?)
Bạn càng chi tiết và rõ ràng thì mọi người giúp mới dễ.
 
Bạn cần ghi chú rõ ràng hơn về yêu cầu của mình nhé.
Có thể thấy bạn đang học từ sheet N5.
1. Vậy có học từ các sheet khác kg ?
2. Vòng lặp tự nhảy theo thời gian ? Cách thức kích hoạt thời gian này (điều kiện nhảy sang từ tiếp theo ? Hay hết giờ thì sẽ làm gì ?)
Bạn càng chi tiết và rõ ràng thì mọi người giúp mới dễ.
Cám ơn bạn
mong muốn của mình là
1. hết giờ tự chuyển sang từ tiếp theo
2. nếu có thể thì tạo nút tùy chọn các sheets để học
rất mong nhận được sự giúp đỡ của mọi người
thanks
 
Cám ơn bạn
mong muốn của mình là
1. hết giờ tự chuyển sang từ tiếp theo
2. nếu có thể thì tạo nút tùy chọn các sheets để học
rất mong nhận được sự giúp đỡ của mọi người
Cảm ơn
Cái điểm 1 mà bạn đòi hỏi nó đâu phải đơn giản của vòng lặp.
"tiếp theo" là vòng lặp. Nhưng "hết giờ" và "tự chuyển" nó là hai công việc phức tạp khác.

Chú: ở đây có vài người chuyên về cái vụ "hết giờ" này. Nếu bạn nêu rõ ra từ đầu thì người ta đã giúp rồi.
 
@Chủ thớt:
Gợi ý:
- Lựa chọn sheet lấy dữ liệu (nhập tên sheet vào 1 ô nào đó), gán dữ liệu vào 1 array
- Vòng lặp (tiến và lùi) với giá trị số bắt đầu đã thiết lập áp cho array trên
- Dùng API Sleep để tạo bước nhảy thời gian ghi các các thành phần ứng với mỗi từ xuống bảng tính, sang từ mới thì xóa giá trị cũ khi ghi mới.
 
Cái điểm 1 mà bạn đòi hỏi nó đâu phải đơn giản của vòng lặp.
"tiếp theo" là vòng lặp. Nhưng "hết giờ" và "tự chuyển" nó là hai công việc phức tạp khác.

Chú: ở đây có vài người chuyên về cái vụ "hết giờ" này. Nếu bạn nêu rõ ra từ đầu thì người ta đã giúp rồi.
cảm ơn bạn đã góp ý
mình mới bắt đầu học
nên nhiều điểm không rõ
rất mong mọi người giúp đỡ
mấy cái code time là đi tìm trên mạng
cái code delay cũng tìm rồi sửa
nên chưa làm ăn được gì :D
Bài đã được tự động gộp:

@Chủ thớt:
Gợi ý:
- Lựa chọn sheet lấy dữ liệu (nhập tên sheet vào 1 ô nào đó), gán dữ liệu vào 1 array
- Vòng lặp (tiến và lùi) với giá trị số bắt đầu đã thiết lập áp cho array trên
- Dùng API Sleep để tạo bước nhảy thời gian ghi các các thành phần ứng với mỗi từ xuống bảng tính, sang từ mới thì xóa giá trị cũ khi ghi mới.
cám ơn bạn đã góp ý
nhưng mình vừa học nên chưa biết gì về aray hay API Sleep
nên mình không hiểu hướng dẫn của bạn
nếu có thể cho mình xin ví dụ tham khảo với :)
thanks
 
tình hình là sau 1 hồi mầy mò tùm lum
mình làm được cái này
tuy nhiên có 1 vấn đề là nó chỉ tự nhảy đến 20 hoặc 25
phải click chuột lần 2 nó mới đọc hết đến 40
mọi người chỉ giúp mình xem nó sai ở đâu
và làm sao cho nó tự chạy đến từ cuối với
thanks & brg

Sub VONGLAP()
Dim I As Integer
For I = 1 To 40
I = I + 1


Range("A4").Value = Range("A4").Value + 1
Range("B4").Formula = "=VLOOKUP($A$4,data!$A$4:$C$43,3,0)"
Range("B4").Value = Range("B4").Value

Application.Wait Now() + TimeValue("00:00:01")
Range("B4").Select
'Application.Wait Now() + TimeValue("00:00:01")
Application.Speech.speak Selection.Value
If Range("A4").Value = 40 Then
Application.Wait Now() + TimeValue("00:00:05")
Range("A4").Value = 0
End If
Application.Wait Now() + TimeValue("00:00:02")
Next I
End Sub
 
tình hình là sau 1 hồi mầy mò tùm lum
mình làm được cái này
tuy nhiên có 1 vấn đề là nó chỉ tự nhảy đến 20 hoặc 25
phải click chuột lần 2 nó mới đọc hết đến 40
mọi người chỉ giúp mình xem nó sai ở đâu
và làm sao cho nó tự chạy đến từ cuối với
Cảm ơn & brg

Sub VONGLAP()
Dim I As Integer
For I = 1 To 40
I = I + 1


Range("A4").Value = Range("A4").Value + 1
Range("B4").Formula = "=VLOOKUP($A$4,data!$A$4:$C$43,3,0)"
Range("B4").Value = Range("B4").Value

Application.Wait Now() + TimeValue("00:00:01")
Range("B4").Select
'Application.Wait Now() + TimeValue("00:00:01")
Application.Speech.speak Selection.Value
If Range("A4").Value = 40 Then
Application.Wait Now() + TimeValue("00:00:05")
Range("A4").Value = 0
End If
Application.Wait Now() + TimeValue("00:00:02")
Next I
End Sub
bạn thử bỏ dòng
Mã:
I = I + 1
đi và chạy lại xem
 
Mình chưa thử với tiếng Nhật, nhưng với tiếng Anh, thì máy tính có thể đọc chữ đó lên cho bạn.
Vậy chương trình là hiện lên chữ .... rồi đọc.... hoặc có thể đọc nếu bạn bấm vào nút gi đó

Đoạn voice đó là:
Dim objSpvoice As Object
objSpvoice.Speak Sheet1.Range("A1").Value, 1
Đoạn sheet1.range("A1") là chữ bạn cần cho đọc.
(mình bị báo lỗi nếu máy tính ko cắm với loa, nên nếu có lỗi nhớ ktra xem đã kết nối loa chưa nhé)
 
mình xin báo cáo tình hình vụ này
tình hình là nhờ sự giúp đỡ của mọi người
mình đã làm cho nó tự động chạy , tự động đọc
tuy nhiên nó không tự dừng +-+-+-+
chạy hết tự nó reset rồi nó chạy tiếp (@$%@
mọi người viết giùm mình hết dữ liệu tự dừng với
hay có cách làm cái nút stop hay pause không nhỉ ?

Sub VONGLAP()
' While True
Dim I As Integer
For I = 1 To 50
Range("A4").Value = Range("A4").Value + 1
Range("A9").Value = Range("B4").Value
Application.Wait Now() + TimeValue("00:00:01")
Range("A9").Select
Application.Wait Now() + TimeValue("00:00:01")
Application.Speech.speak Selection.Value
If Range("A4").Value = 41 Then
Application.Wait Now() + TimeValue("00:00:05")
Range("A4").Value = 0

End If
DoEvents
Application.Wait Now() + TimeValue("00:00:02")

Next I

' Wend

End Sub
 
Mình chưa thử với tiếng Nhật, nhưng với tiếng Anh, thì máy tính có thể đọc chữ đó lên cho bạn.
Vậy chương trình là hiện lên chữ .... rồi đọc.... hoặc có thể đọc nếu bạn bấm vào nút gi đó

Đoạn voice đó là:
Dim objSpvoice As Object
objSpvoice.Speak Sheet1.Range("A1").Value, 1
Đoạn sheet1.range("A1") là chữ bạn cần cho đọc.
(mình bị báo lỗi nếu máy tính ko cắm với loa, nên nếu có lỗi nhớ ktra xem đã kết nối loa chưa nhé)
mình test với máy win nhật thì nó đọc tiếng nhật & tiếng anh được , tuy nhiên đọc tiếng anh theo kiểu nhật nên coi như không đọc +-+-+-+
còn máy win tiếng anh thông thường thì đọc được tiếng anh
còn tiếng nhật không đọc
nó theo ngôn ngữ hệ điều hành thì phải :D
 
mình xin báo cáo tình hình vụ này
tình hình là nhờ sự giúp đỡ của mọi người
mình đã làm cho nó tự động chạy , tự động đọc
tuy nhiên nó không tự dừng +-+-+-+
chạy hết tự nó reset rồi nó chạy tiếp (@$%@
mọi người viết giùm mình hết dữ liệu tự dừng với
hay có cách làm cái nút stop hay pause không nhỉ ?

Sub VONGLAP()
' While True
Dim I As Integer
For I = 1 To 50
Range("A4").Value = Range("A4").Value + 1
Range("A9").Value = Range("B4").Value
Application.Wait Now() + TimeValue("00:00:01")
Range("A9").Select
Application.Wait Now() + TimeValue("00:00:01")
Application.Speech.speak Selection.Value
If Range("A4").Value = 41 Then
Application.Wait Now() + TimeValue("00:00:05")
Range("A4").Value = 0

End If
DoEvents
Application.Wait Now() + TimeValue("00:00:02")

Next I

' Wend

End Sub
Bạn thử:
Mã:
Public dk As Boolean

Sub VONGLAP()
If dk = False Then Exit Sub
Dim I As Integer
For I = 1 To 50
Range("A4").Value = Range("A4").Value + 1
Range("A9").Value = Range("B4").Value
Application.Wait Now() + TimeValue("00:00:01")
Range("A9").Select
Application.Wait Now() + TimeValue("00:00:01")
Application.Speech.Speak Selection.Value
If Range("A4").Value = 41 Then
Application.Wait Now() + TimeValue("00:00:05")
Range("A4").Value = 0

End If
DoEvents
Application.Wait Now() + TimeValue("00:00:02")

Next I

' Wend
End Sub

Sub StartScr()
    dk = True
    Call VONGLAP
End Sub

Sub StopScr()
dk = False
End Sub
Bạn có thể them 2 nút chạy và dừng với 2 Sub Start và Stop. :)
 
Bạn thử:
Mã:
Public dk As Boolean

Sub VONGLAP()
If dk = False Then Exit Sub
Dim I As Integer
For I = 1 To 50
Range("A4").Value = Range("A4").Value + 1
Range("A9").Value = Range("B4").Value
Application.Wait Now() + TimeValue("00:00:01")
Range("A9").Select
Application.Wait Now() + TimeValue("00:00:01")
Application.Speech.Speak Selection.Value
If Range("A4").Value = 41 Then
Application.Wait Now() + TimeValue("00:00:05")
Range("A4").Value = 0

End If
DoEvents
Application.Wait Now() + TimeValue("00:00:02")

Next I

' Wend
End Sub

Sub StartScr()
    dk = True
    Call VONGLAP
End Sub

Sub StopScr()
dk = False
End Sub
Bạn có thể them 2 nút chạy và dừng với 2 Sub Start và Stop. :)
trước tiên xin cảm ơn sự nhiệt tình giúp đỡ của bạn
mình test nó không chạy qua nổi chỗ này
Sub VONGLAP()
If dk = False Then Exit Sub
cứ lặp lại hoài
không chạy tiếp (@$%@
nên nút stop cũng không có tác dụng luôn
rất mong các Pro chỉ bảo thêm
thanks
 
không chạy qua nổi chỗ này
Sub VONGLAP()
If dk = False Then Exit Sub
cứ lặp lại hoài
không chạy tiếp
Có nghĩa là lúc đó dk = False. Bạn không thể chạy trực tiếp sub VONGLAP được. mà phải chạy sub Start_Scr. vì khi đó biến dk mới được gán = True.
 
Web KT
Back
Top Bottom