Tạo hàm giờ ra bằng vba

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

Nhật Anh 9x

Thành viên chính thức
Tham gia
21/10/22
Bài viết
72
Được thích
3
Em chào anh chị!

Thưa anh chị em đang muốn viết 1 hàm tính giờ ra cho công nhân, thay vì sử dựng hàm excel lồng quá nhiều lần ạ. Nhưng code của em viết không hoạt động
Hàm em sẽ dùng ở sheet "Datatimecard" dòng màu trắng, và sẽ kéo từ cột L tới cột AO, các dòng khác thì tương tự ạ. Dữ liệu sẽ được kết nối với sheets"Bang Cham Cong_Lam"ạ. Em xin nhờ anh chị xem giùm em sai ở đâu với ạ! Em xin gửi file đính kèm ạ
Function Gio_Ra(rng1 As Range, rng2 As Range, _
GRATS As Double, GRBTS As Double, _
GRAT As Double, GRBT As Double, _
GRA0 As Double, GRB0 As Double, _
GRA1 As Double, GRB1 As Double, _
GRA2 As Double, GRB2 As Double, _
GRA3 As Double, GRB3 As Double) As Variant
Stop
Dim dk1 As Variant
Dim dk2 As Variant
Dim dk3 As Variant

GRATS = Sheets("Data").Range("Q2").value 'Thai san
GRAT = Sheets("Data").Range("O2").value 'tc 19h
GRA0 = Sheets("Data").Range("G2").value 'ko tca
GRA1 = Sheets("Data").Range("I2").value 'tc 17h
GRA2 = Sheets("Data").Range("K2").value 'tc 18h
GRA3 = Sheets("Data").Range("M2").value 'nua ngay

GRBTS = Sheets("Data").Range("Q16").value
GRBT = Sheets("Data").Range("O16").value
GRB0 = Sheets("Data").Range("G16").value
GRB1 = Sheets("Data").Range("I16").value
GRB2 = Sheets("Data").Range("K16").value
GRB3 = Sheets("Data").Range("M16").value



dk1 = rng1.Sheets("Bang Cham Cong_Lam").Cells(rng1.Row, rng1.Column).value
dk2 = rng1.Sheets("Bang Cham Cong_Lam").Cells(rng1.Row + 1, rng1.Column).value

dk3 = rng2.Sheets("Datatimecard").Cells(rng2.Row - 1, rng2.Column).value

If dk1 = "K-1" Then
Gio_Ra = Rnd() * (GRBTS - GRATS) + GRATS
ElseIf dk1 = "K/2" Then
Gio_Ra = Rnd() * (GRBT - GRAT) + GRAT
ElseIf dk1 = "P/2" Then
Gio_Ra = Rnd() * (GRBT - GRAT) + GRAT
ElseIf dk3 = " " Or dk1 = "R" Or dk1 = "P" Or dk1 = "Ô" Or dk1 = "Cô" Or dk1 = "Ro" Or dk1 = "L" Or dk1 = "NS" Then
Gio_Ra = " "
ElseIf dk2 = " " Then
Gio_Ra = Rnd() * (GRB0 - GRA0) + GRA0
Else

Select Case dk2
Case 1
Gio_Ra = Rnd() * (GRB1 - GRA1) + GRA1
Case 2
Gio_Ra = Rnd() * (GRB2 - GRA2) + GRA2
Case 3
Gio_Ra = Rnd() * (GRB3 - GRA3) + GRA3
Case Else
Gio_Ra = " "
End Select
End If
End Function

Em cảm ơn anh chi!
 

File đính kèm

  • BCC.xlsm
    158.6 KB · Đọc: 4
Code ở trên dĩ nhiên là không chạy.
Vừa vào Function nó đã gặp cái lệnh Stop.

Nhưng nó cũng có nhiều câu sẽ không compile. Điển hình: Range làm gì có thuộc tính Sheets
dk1 = rng1.Sheets("Bang Cham Cong_Lam").Cells(rng1.Row, rng1.Column).value
dk2 = rng1.Sheets("Bang Cham Cong_Lam").Cells(rng1.Row + 1, rng1.Column).value
 
Upvote 0
Code ở trên dĩ nhiên là không chạy.
Vừa vào Function nó đã gặp cái lệnh Stop.

Nhưng nó cũng có nhiều câu sẽ không compile. Điển hình: Range làm gì có thuộc tính Sheets
dk1 = rng1.Sheets("Bang Cham Cong_Lam").Cells(rng1.Row, rng1.Column).value
dk2 = rng1.Sheets("Bang Cham Cong_Lam").Cells(rng1.Row + 1, rng1.Column).value
Em cảm ơn anh nhiều ạ! em sửa lại code ra kết quả rồi anh ạ
 
Upvote 0
Web KT

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

Back
Top Bottom