Hỏi về cách tạo một số thay đổi giá trị theo chu kỳ

Liên hệ QC

hoangdanh282vn

Nguyễn Cảnh Hoàng Danh
Thành viên danh dự
Tham gia
21/12/07
Bài viết
1,902
Được thích
5,303
Nghề nghiệp
Kinh doanh các mặt hàng văn phòng phẩm
Các bạn giúp mình bài toán này nha.
Mình muốn tạo một macro tạo ra một giá trị số biến thiên đặt vào ô A1 : 0,1,0,1,0,1...với tần số 10Hz cho trước được đặt trong ô B1
Tương tự, ô A2 sẽ tạo một giá trị số biến thiên 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0... với tần số cũng trong ô B1
 
Các bạn giúp mình bài toán này nha.
Mình muốn tạo một macro tạo ra một giá trị số biến thiên đặt vào ô A1 : 0,1,0,1,0,1...với tần số 10Hz cho trước được đặt trong ô B1
Tương tự, ô A2 sẽ tạo một giá trị số biến thiên 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0... với tần số cũng trong ô B1
Chưa hiểu Danh hỏi gì. Cụ thể hơn. Hay là muốn tạo A1=0,1,0,1,0,1... tổng cộng có 10 số.
 
Upvote 0
Tôi hiểu!
Cell A1 sẽ thay đổi tuần tự 0 rồi 1 rồi 0 rồi 1 theo tần số cho trước
Cell A2 sẽ thay đổi tuần tự 0 rồi 1 rồi 2.... đến 9 rồi lại 0, 1... theo tần số cho trước
Hiểu nhưng hỏng biết làm
Cái này nghe giống điện tử quá trời!
 
Upvote 0
Tôi hiểu!
Cell A1 sẽ thay đổi tuần tự 0 rồi 1 rồi 0 rồi 1 theo tần số cho trước
Cell A2 sẽ thay đổi tuần tự 0 rồi 1 rồi 2.... đến 9 rồi lại 0, 1... theo tần số cho trước
Hiểu nhưng hỏng biết làm
Cái này nghe giống điện tử quá trời!

Nếu giống như thế này thì em nghĩ bài toán này cũng giống bài toán cho hiện đồng hồ trên Application.Caption của excel vậy!
Có thể dùng Application.Ontime và các tham số vòng, tham số đo tần số.
 
Lần chỉnh sửa cuối:
Upvote 0
Có thể dùng hàm API để giải quyết vấn đề:
Mã:
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Chuky_chay()
Dim i As Byte, j As Byte
Dim t As Integer
j = 0
t = Cells(1, 2)
    For i = 0 To 9
      If Cells(1, 1) = "Stop" Then Exit For
         Cells(1, 1) = j
         Cells(2, 1) = i
           Sleep (t)
           DoEvents
             j = j + 1
             If j > 1 Then j = 0
    Next i
 If Cells(2, 1) = 9 Then
    Call Chuky_chay
 End If
End Sub
 

File đính kèm

Upvote 0
Tôi hiểu là bạn muốn sinh dãy số tuần hoàn.
Đọc file đính kèm.
 

File đính kèm

Upvote 0
chưa hiểu hết ý của tác gia lắm, nhưng cứ gởi thử

Xin ý kiến của tác gia macro sau

PHP:
Option Explicit

Sub ChuKy10hz()
Dim zz As Byte, jJ As Byte,  bTh As Byte 
Dim Timer_ As Double

 Randomize:                 bTh = 100 +Int(50 * Rnd)
Do
   jJ = jJ + 1:      If jJ > bTh Then Exit Do
 If [a1] = 1 Then [a1] = 0 Else [a1] = 1
 If zz = 10 Then zz = 0 Else zz = zz + 1
 [a2] = zz
 Timer_ = Timer
 Do
   If Timer - Timer_ > 1 / [b1] Then Exit Do
 Loop:            Loop
 
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xin ý kiến của tác gia macro sau

PHP:
Option Explicit

Sub ChuKy10hz()
Dim zz As Byte, jJ As Byte,  bTh As Byte 
Dim Timer_ As Double

 Randomize:                 bTh = 100 +Int(50 * Rnd)
Do
   jJ = jJ + 1:      If jJ > bTh Then Exit Do
 If [a1] = 1 Then [a1] = 0 Else [a1] = 1
 If zz = 10 Then zz = 0 Else zz = zz + 1
 [a2] = zz
 Timer_ = Timer
 Do
   If Timer - Timer_ > 1 / [b1] Then Exit Do
 Loop:            Loop
 
End Sub

Cám ơn Bác, Bác có thể gửi file đính kèm giúp em được không, sao em test thử mà cứ báo lỗi.
 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom