hoahuongduong1986
Thành viên thường trực
- Tham gia
- 14/11/18
- Bài viết
- 346
- Được thích
- 40
Bạn thử dùng sub nàyKính gửi Anh chị,
Có thể dùng code gì thay cho các hàm tại các ô tại vùng H4 và I14 ạ. Cảm ơn anh chị.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, result(), change As Range
Application.EnableEvents = False
Application.ScreenUpdating = False
Set change = Intersect(Range("B4:G600000"), Target)
Set change = Intersect(Target, Range("E4:E600000"))
If Not change Is Nothing Then
result = change.Resize(change.Rows.Count + 1).Value
ReDim Preserve result(1 To UBound(result), 1 To 1)
For i = 1 To UBound(result) - 1
If Len(result(i, 1)) Then
result(i, 1) = Format(result(i, 1), "yyyy")
End If
Next i
change.Offset(0, 4).Resize(, 1).Value = result
End If
With [H4:H1000]
.Value = "=IF(RC7=""VND"",RC6,IF(RC7=""USD"",RC6*'Ty gia'!R4C3,'Sao ke'!RC6*'Ty gia'!R5C3))/1000000"
.Value = .Value
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Function QD_(SoTien As Double, LT As String) As Double
Dim Loai As String: Dim TGia As Double
Loai = Left(LT, 1)
Select Case Loai
Case "V": TGia = 1
Case "U"
TGia = Sheets("Ty gia").[C4]
Case "E"
TGia = Sheets("Ty gia").[C5]
End Select
QD_ = (SoTien * TGia / 10 ^ 6)
End Function
Bạn thử dùng sub này
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, result(), change As Range Application.EnableEvents = False Application.ScreenUpdating = False Set change = Intersect(Range("B4:G600000"), Target) Set change = Intersect(Target, Range("E4:E600000")) If Not change Is Nothing Then result = change.Resize(change.Rows.Count + 1).Value ReDim Preserve result(1 To UBound(result), 1 To 1) For i = 1 To UBound(result) - 1 If Len(result(i, 1)) Then result(i, 1) = Format(result(i, 1), "yyyy") End If Next i change.Offset(0, 4).Resize(, 1).Value = result End If With [H4:H1000] .Value = "=IF(RC7=""VND"",RC6,IF(RC7=""USD"",RC6*'Ty gia'!R4C3,'Sao ke'!RC6*'Ty gia'!R5C3))/1000000" .Value = .Value End With Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Hàm qui đổi (ở cột H) có nội dung như sau:
PHP:Function QD_(SoTien As Double, LT As String) As Double Dim Loai As String: Dim TGia As Double Loai = Left(LT, 1) Select Case Loai Case "V": TGia = 1 Case "U" TGia = Sheets("Ty gia").[C4] Case "E" TGia = Sheets("Ty gia").[C5] End Select QD_ = (SoTien * TGia / 10 ^ 6) End Function
Cú pháp tại [H7] sẽ là: =QD_(F7,G7)
Bạn thử dùng sub này
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, result(), change As Range Application.EnableEvents = False Application.ScreenUpdating = False Set change = Intersect(Range("B4:G600000"), Target) Set change = Intersect(Target, Range("E4:E600000")) If Not change Is Nothing Then result = change.Resize(change.Rows.Count + 1).Value ReDim Preserve result(1 To UBound(result), 1 To 1) For i = 1 To UBound(result) - 1 If Len(result(i, 1)) Then result(i, 1) = Format(result(i, 1), "yyyy") End If Next i change.Offset(0, 4).Resize(, 1).Value = result End If With [H4:H1000] .Value = "=IF(RC7=""VND"",RC6,IF(RC7=""USD"",RC6*'Ty gia'!R4C3,'Sao ke'!RC6*'Ty gia'!R5C3))/1000000" .Value = .Value End With Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Em muốn hỏi chút ạ.Dear Anh,
Em xem chay code rồi ạ. Em muốn không phải áp dụng cho Sheet đó mà giờ cho Code vào Module thì có được không ạ. Tức là em tạo một Nút bấm tại Sheet Tỷ giá thì kết quả vẫn lên ạ.
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2