Chạy công thức khi điều kiện được thay đổi thủ công

Liên hệ QC

tu205489039

Thành viên hoạt động
Tham gia
14/12/14
Bài viết
118
Được thích
12
Giới tính
Nam
Chào các anh chị trong diễn đàn, mình có vấn đề này mong các anh chị giúp đỡ mình với ạ
Mình có 1 file excel, trong đó có 1 code chính An code phụ B đi theo code chính này (n<7). Mình phải làm như thế nào để:
+Khi click chọn 1 code phụ thì công thức sẽ nhận diện code phụ và chạy theo code phụ này
+Khi mình click để chọn 1 code phụ nào đó, thì ô chứa code phụ đó sẽ chuyển từ màu xanh qua màu đỏ
+Khi code chính A thay đổi thì màu trong các ô chứa code phụ B sẽ mặc định trở về màu xanh
Mình xin cảm ơn!
(Mong anh chị thông cảm, cái tiêu đề mình đặt hơi dỡ. Mà mình nghĩ miết không ra được cái tiêu đề nào cho nó dể hiểu hơn 1 chút nữa o_O)
 

File đính kèm

Chào các anh chị trong diễn đàn, mình có vấn đề này mong các anh chị giúp đỡ mình với ạ
Mình có 1 file excel, trong đó có 1 code chính An code phụ B đi theo code chính này (n<7). Mình phải làm như thế nào để:
+Khi click chọn 1 code phụ thì công thức sẽ nhận diện code phụ và chạy theo code phụ này
+Khi mình click để chọn 1 code phụ nào đó, thì ô chứa code phụ đó sẽ chuyển từ màu xanh qua màu đỏ
+Khi code chính A thay đổi thì màu trong các ô chứa code phụ B sẽ mặc định trở về màu xanh
Mình xin cảm ơn!
(Mong anh chị thông cảm, cái tiêu đề mình đặt hơi dỡ. Mà mình nghĩ miết không ra được cái tiêu đề nào cho nó dể hiểu hơn 1 chút nữa o_O)
Sau khi B trở về xanh rồi thì làm thế nào biết nó đã từng chạy rồi?
Có 5 B's. Chạy xong 3, chạy A. Tất cả B's đều trở về mặc định. Làm thế nào biết B nào đã chạy và B nào chưa?
Chuyện này chỉ nên làm nếu mỗi B có thể chạy nhiều lần, kết quả in nhau. Và thứ tự chạy B's không quan trọng.
 
Upvote 0
Sau khi B trở về xanh rồi thì làm thế nào biết nó đã từng chạy rồi?
Có 5 B's. Chạy xong 3, chạy A. Tất cả B's đều trở về mặc định. Làm thế nào biết B nào đã chạy và B nào chưa?
Chuyện này chỉ nên làm nếu mỗi B có thể chạy nhiều lần, kết quả in nhau. Và thứ tự chạy B's không quan trọng.
Anh nhận định đúng rồi ạ, các code B này không quan trọng, mình có quyền click hay không. Cái code B này thì giống nhau, chẳng qua có 1 cái code chính A nào đó nhiều code phụ hơn thôi ạ
 
Upvote 0
Đặt cái code bắt sự kiện này trong code của WorkSheet

Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim e As Variant
If InStr(Target.Address, CellList) < 1 Then Exit Sub
Select Case Target.Address
  Case "$A$1" ' ô chủ
    Call A1
    For Each e in Split( "$B$1,$B$2,$B$3,...", ",")
      ResetMau Range(e)
    Next e
 Case "$B$1"
    Call B1
    SetMau Target
  Case "$B$2"
    Call B2
    SetMau Target
  Case "$B$3"
    Call B3
    SetMau Target
...
End Select
End Sub

Private Sub SetMau(rg As Range)
Range(rg).Interior.ColorIndex = MAUDO
End Sub
Private Sub ResetMau(rg As Range)
Range(rg).Interior.ColorIndex = MAUXANH
End Sub
 
Upvote 0
Đặt cái code bắt sự kiện này trong code của WorkSheet

Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim e As Variant
If InStr(Target.Address, CellList) < 1 Then Exit Sub
Select Case Target.Address
  Case "$A$1" ' ô chủ
    Call A1
    For Each e in Split( "$B$1,$B$2,$B$3,...", ",")
      ResetMau Range(e)
    Next e
Case "$B$1"
    Call B1
    SetMau Target
  Case "$B$2"
    Call B2
    SetMau Target
  Case "$B$3"
    Call B3
    SetMau Target
...
End Select
End Sub

Private Sub SetMau(rg As Range)
Range(rg).Interior.ColorIndex = MAUDO
End Sub
Private Sub ResetMau(rg As Range)
Range(rg).Interior.ColorIndex = MAUXANH
End Sub
Dạ em cảm ơn anh nhiều. Mà a ơi, e chạy thử code a cho, không biết e làm sai chổ nào ko mà nó ra thông báo này vậy aCapture.PNG
 

File đính kèm

Upvote 0
Tôi ngỡ bạn đã biết sơ về cốt kiếc. Té ra bạn nói chuyện code chính code phụ tùm lum mà hoàn toàn không có một khái niệm gì về code.
Bạn chịu khó chờ ngừoi khác vậy. Tôi chỉ quen mách nước chứ rất ít khi giúp theo kiểu từ A đến Z.
 
Upvote 0
Tôi ngỡ bạn đã biết sơ về cốt kiếc. Té ra bạn nói chuyện code chính code phụ tùm lum mà hoàn toàn không có một khái niệm gì về code.
Bạn chịu khó chờ ngừoi khác vậy. Tôi chỉ quen mách nước chứ rất ít khi giúp theo kiểu từ A đến Z.
hì, e mới chỉ tự mò mẫm, kiến thức sơ khai lắm a. Mà ý đầu tiên, a có thể cho e từ khóa hay cái gì đó để e mò được ko ạ.
Với trong yêu cầu ban đầu e nghĩ e dùng từ sai, key có vẻ hợp lý hơn code (key A, key B). hì, mong a thông cảm
 
Upvote 0
Chào các anh chị trong diễn đàn, mình có vấn đề này mong các anh chị giúp đỡ mình với ạ
Mình có 1 file excel, trong đó có 1 code chính An code phụ B đi theo code chính này (n<7). Mình phải làm như thế nào để:
+Khi click chọn 1 code phụ thì công thức sẽ nhận diện code phụ và chạy theo code phụ này
+Khi mình click để chọn 1 code phụ nào đó, thì ô chứa code phụ đó sẽ chuyển từ màu xanh qua màu đỏ
+Khi code chính A thay đổi thì màu trong các ô chứa code phụ B sẽ mặc định trở về màu xanh
Mình xin cảm ơn!
(Mong anh chị thông cảm, cái tiêu đề mình đặt hơi dỡ. Mà mình nghĩ miết không ra được cái tiêu đề nào cho nó dể hiểu hơn 1 chút nữa o_O)

Cho code dưới đây vào 1 Module
Mã:
Sub SubCode()
  Dim wks       As Worksheet
  Dim rtg       As Rectangle
  Dim shpName   As String
  Dim sCaption  As String
  shpName = Application.Caller
  Set wks = ActiveSheet
  Set rtg = wks.Rectangles(shpName)
  sCaption = rtg.Text
  If sCaption = "Code 1" Then
    ResetColor
  Else
    wks.Range("I9").Value = "=VLOOKUP(""" & sCaption & """ ,Sheet2!A1:B10,0)"
    rtg.Interior.Color = vbRed
  End If
End Sub
Private Sub ResetColor()
  Dim wks As Worksheet
  Dim rtg As Rectangle
  Set wks = ActiveSheet
  For Each rtg In wks.Rectangles
    rtg.Interior.Color = &HBD814F
  Next
End Sub
Chọn 7 nút từ Code 1 đến Code 7 rồi Asign Macro nó cho SubCode
Phần công thức VLOOKUP bạn tự sửa lấy vì tôi không biết bạn muốn công thức thế nào
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom