Dựa vào dữ liệu của 1 cell mà chạy lệnh tương ứng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

haclong_hoahai

Thành viên mới
Tham gia
7/1/16
Bài viết
41
Được thích
53
Kính chào các thầy cô và anh chị,
Tôi mới gia nhập diễn đàn và muốn học hỏi để nâng cao bản thân. Cho phép tôi được đặc câu hỏi sau: Có cách nào mình dựa vào dữ liệu của một ô (cell) nhất định để chạy một lệnh tương ứng (sub).
Ex:
Tôi có 3 subs A B C. Tôi muốn nếu mình chọn dữ liệu ở cell A1 là 1 thì sub A() sẽ chạy và nếu thay đổi dữ liệu thành 2 thì sub B() sẽ chạy etc...

Cảm ơn và xin được hướng dẫn (đã cố gắng search trước khi post new thread nhưng không tìm thấy cái mình tìm)
 
Bạn cho code sau vào module
Mã:
Public Sub test1()
MsgBox "Chay sub 1"
End Sub


Public Sub test2()
MsgBox "Chay sub 2"
End Sub


Public Sub test3()
MsgBox "Chay sub 3"
End Sub
bạn cho code sau vào sheet bạn muốn thay đổi giá trị ở ô A1
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Select Case Target.Value
Case 1: Call test1
Case 2: Call test2
Case 3: Call test3
End Select
End If
End Sub
Bây giờ bạn thay đổi giá trị ô A1 của Sheet thử xem kết quả.
 
Upvote 0
Select Case cint(Range("A1").Value)
case 1
A
case 2
B
case ...
End Select
 
Upvote 0
Bạn cho code sau vào module
Mã:
Public Sub test1()
MsgBox "Chay sub 1"
End Sub


Public Sub test2()
MsgBox "Chay sub 2"
End Sub


Public Sub test3()
MsgBox "Chay sub 3"
End Sub
bạn cho code sau vào sheet bạn muốn thay đổi giá trị ở ô A1
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Select Case Target.Value
Case 1: Call test1
Case 2: Call test2
Case 3: Call test3
End Select
End If
End Sub
Bây giờ bạn thay đổi giá trị ô A1 của Sheet thử xem kết quả.

cám ơn bạn, dữ liệu của ô A1 là dạng drop list trong đó bao gồm từ 1 đến 10 (ví dụ nhé bạn) thì mình muốn nếu 1 thì chạy lệnh A, 2 chạy lệnh B.... mình thử cách của bạn mà mình ko biết cách quy điều kiện để nếu 1 chạy A... Thông cảm vì mình tự học mò và đang ở trình độ mẫu giáo thôi... Xin cảm ơn
 
Upvote 0
Select Case cint(Range("A1").Value)
case 1
A
case 2
B
case ...
End Select
Đọc nhiều bài của vietmini và thấy bạn có vẻ rất "Dị ứng " với cách giao tiếp bằng tiếng Tây! Vậy mà thấy bạn trả lời bài này kể cũng lạ!
Kính chào các thầy cô và anh chị,
Tôi mới gia nhập diễn đàn và muốn học hỏi để nâng cao bản thân. Cho phép tôi được đặc câu hỏi sau: Có cách nào mình dựa vào dữ liệu của một ô (cell) nhất định để chạy một lệnh tương ứng (sub).
Ex:
Tôi có 3 subs A B C. Tôi muốn nếu mình chọn dữ liệu ở cell A1 là 1 thì sub A() sẽ chạy và nếu thay đổi dữ liệu thành 2 thì sub B() sẽ chạy etc...

Cảm ơn và xin được hướng dẫn (đã cố gắng search trước khi post new thread nhưng không tìm thấy cái mình tìm)
 
Upvote 0
Đọc nhiều bài của vietmini và thấy bạn có vẻ rất "Dị ứng " với cách giao tiếp bằng tiếng Tây! Vậy mà thấy bạn trả lời bài này kể cũng lạ!

Xin lỗi bạn mình là người mới chưa biết rõ hết các quy định này. Thú thật mình làm việc ở nước ngoài nên quen. Nếu đây là quy định thì mình xin tuân theo mặc dù gõ tiếng việt có dấu khá là chậm.
 
Upvote 0
Đọc nhiều bài của vietmini và thấy bạn có vẻ rất "Dị ứng " với cách giao tiếp bằng tiếng Tây! Vậy mà thấy bạn trả lời bài này kể cũng lạ!

Tuy cố chấp nhưng toi khong chủ quan - chủ quan là kẻ thù của dân chuyên nghề dữ liệu.

Mặc dù quen dùng tiếng ngoại, nhưng chủ thớt dùng toàn tiếng xã giao Việt. Nếu bạn không nhận ra những từ xã giao đó thì xin lỗi, giữa tôi và bạn có 1 người hiểu lầm từ "xã giao"

Lý do thứ hai tôi không thích tiếng ngoại là vì có những người dùng nó vào những chỗ có thể gây hiểu lầm. Những từ bạn tô đậm không phải là những từ có thể hiểu lầm.

Chú thích:
Trong chỗ này
chủ thớt cũng cho thấy là mình sử dụng từ ngữ cẩn thận (3 subs, số nhiều đàng hoàng). Tôi vốn không ưa những người hỏi mà cẩu thả.
 
Upvote 0
chủ thớt cũng cho thấy là mình sử dụng từ ngữ cẩn thận (3 subs, số nhiều đàng hoàng). Tôi vốn không ưa những người hỏi mà cẩu thả.
bác Vetmini không chỉ kỹ tính mà còn tinh tường nữa. chứ như tui kể cả khi viết bằng tiếng anh vẫn thường thiếu -s (tiếng anh giả cầy mà)
khi xưa cũng chú ý lắm, thường đọc "chuyện đông chuyện tây", rồi đọc Cao Xuân Hạo nữa, giờ thì cũng phiên phiến thôi.

sông tương nước chảy trong veo
thì ta đem giặt cái lèo mũ ta
sông tương nước đục chảy ra
thì ta lội xuống để mà rửa chân.

(xin lỗi bạn nào không thích thơ tàu, khổ cái tui đọc sách tàu nhiều hơn sách ta)
 
Upvote 0
Tuy cố chấp nhưng toi khong chủ quan - chủ quan là kẻ thù của dân chuyên nghề dữ liệu.

Mặc dù quen dùng tiếng ngoại, nhưng chủ thớt dùng toàn tiếng xã giao Việt. Nếu bạn không nhận ra những từ xã giao đó thì xin lỗi, giữa tôi và bạn có 1 người hiểu lầm từ "xã giao"

Lý do thứ hai tôi không thích tiếng ngoại là vì có những người dùng nó vào những chỗ có thể gây hiểu lầm. Những từ bạn tô đậm không phải là những từ có thể hiểu lầm.

Chú thích:
Trong chỗ này

chủ thớt cũng cho thấy là mình sử dụng từ ngữ cẩn thận (3 subs, số nhiều đàng hoàng). Tôi vốn không ưa những người hỏi mà cẩu thả.

Trước hết tôi xin cảm ơn thầy (xin phép tui gọi bằng thầy vì trình độ kiến thức cũng như đã hướng dẫn cho tôi). Sự quan sát kỹ lưỡng của thầy cho từng chữ tôi viết ra. Tôi là dân không chuyên về tin học lập trình mà thuộc về khối dự toán và kế hoạch về nhân sự nên cũng yêu cầu về tính kỹ lưỡng nhưng điều này thầy hơn tôi vì chính tôi là người viết ra chủ đề này nhưng vẫn không nhận ra được những điều thầy quan sát.

Thú thật dù tôi quen với sử dụng tiếng Anh hơn tiếng Việt (vì 17 năm làm việc ở nước ngoài và công ty chỉ có mình tôi là việt nam) nhưng chính bản thân tôi lại ghét các thể loại tiếng anh dạng "bro, tks, izi man..."). Nhưng đối với ý kiến riêng của bản thân tôi thì tôi vẫn thích sử dụng tiếng anh cho các từ ngữ chuyên dùng. Tôi thích nói "Control panel" hơn "bảng điều chỉnh" vân vân và vân vân. Không thể cho tôi khoe hay tự xưng mình giỏi tiếng anh (tiếng anh của tui cũng thuộc hàng nữa mùa do mẹ tôi dạy tôi từ nhỏ mà thôi) nhưng tôi có thể viết bài này bằng tiếng anh không hơn 2 phút và ngược lại tôi đã sữ dụng gần 10 phút để gửi bằng tiếng việt. Nhưng quy định và luật của diễn đàn thì tôi phải tuân theo thôi.

Một lần nữa tôi xin cảm ơn các thầy trên đây đã hướng dẫn và góp ý tận tình. Chủ đề này tôi đang cố gắng làm nhưng vẫn có trục trặc dựa trên sự hướng dẫn trên nhưng tôi sẽ cố gắng tự tìm cho đến khi không thể thì sẽ hỏi tiếp. Cám ơn mọi người.
 
Upvote 0
cám ơn bạn, dữ liệu của ô A1 là dạng drop list trong đó bao gồm từ 1 đến 10 (ví dụ nhé bạn) thì mình muốn nếu 1 thì chạy lệnh A, 2 chạy lệnh B.... mình thử cách của bạn mà mình ko biết cách quy điều kiện để nếu 1 chạy A... Thông cảm vì mình tự học mò và đang ở trình độ mẫu giáo thôi... Xin cảm ơn
Bạn cho cái file của bạn lên đi tôi sẽ giúp trên chính file của bạn luôn.
 
Upvote 0
Nhờ mọi người xem giúp. Tôi đang cố gắng chuyển từ sub sang câu lệnh trực tiếp để hạn chế tạo sub nhưng khi chạy thì bị báo lỗi:
Mã:
Sub FilterbyRange()


    ActiveSheet.Unprotect 12345
    Range("T1").Select
    If Target.Address = "$T$1" Then
    Select Case Range("T1").Value
        Case ""
            Range("L2:V9").Select
            With Selection.Font
            .ThemeColor = xlThemeColorDark1
            End With
        Case "Advertising Branding & Communi"
            Range("L3:O3").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
        Case "Cage & Count"
            Range("L4:O4").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
        Case "Casino Marketing"
             Range("L5:O5").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
        Case "Club Management"
            Range("L6:O6").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
        Case "Club Operations"
            Range("L7:O7").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
        Case "Electronic Gaming"
            Range("L8:O8").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
        Case "Facilities"
            Range("L9:O9").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
        Case "Table Games"
            Range("V3:V4").Select
            With Selection.Font
            .ThemeColor = xlThemeColorLight1
            End With
      End Select
      End If
    Range("A8:K9").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$8:$K$209").AutoFilter Field:=4, Criteria1:=Range("T1")
    ActiveWorkbook.Worksheets("Master").AutoFilter.Sort.SortFields.Add Key:=Range _
        ("E8:E9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Master").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    ActiveSheet.Protect 12345
    End With
End Sub

Do tôi gà mờ nên dùng record macro để hỗ trợ. Cám ơn mọi người.
 
Upvote 0
Câu này ở đâu ra vậy bạn? chổ màu đỏ ấy!
Mã:
If [COLOR=#ff0000][B]Target.Address = "$T$1"[/B][/COLOR] Then
Đã nói với bạn rồi, bạn muốn giúp vấn đề như thế nào thì phải có file mẫu, nêu yêu cầu cụ thể trong đó, chứ bạn đưa code lên đây ai biết trong file của bạn có gì mà giúp, muốn test cũng không có dữ liệu để test. Bạn nói bạn chỉ quay macro và chuyển đổi, nhìn vào code cũng đủ biết rồi, nhưng thật sự tôi không biết ý bạn là muốn gì? nếu muốn sửa cho code chạy thì rất dể còn muốn sửa cho nó đúng với mục đích của bạn thì phải có file mẫu. &&&%$R &&&%$R &&&%$R
 
Upvote 0
Câu này ở đâu ra vậy bạn? chổ màu đỏ ấy!
Mã:
If [COLOR=#ff0000][B]Target.Address = "$T$1"[/B][/COLOR] Then
Đã nói với bạn rồi, bạn muốn giúp vấn đề như thế nào thì phải có file mẫu, nêu yêu cầu cụ thể trong đó, chứ bạn đưa code lên đây ai biết trong file của bạn có gì mà giúp, muốn test cũng không có dữ liệu để test. Bạn nói bạn chỉ quay macro và chuyển đổi, nhìn vào code cũng đủ biết rồi, nhưng thật sự tôi không biết ý bạn là muốn gì? nếu muốn sửa cho code chạy thì rất dể còn muốn sửa cho nó đúng với mục đích của bạn thì phải có file mẫu. &&&%$R &&&%$R &&&%$R

Xin lỗi đừng nóng giận vì mọi chuyện đều có lý do của nó cả. Không phải tôi giấu dữ liệu hay gì (vì chả có gì để giấu) mà luật của bộ phận IT lả không cho gửi file ra khỏi công ty. Nếu muốn phải xin và phải được chấp thuận. May mắn chắc mấy ông IT hôm qua ở nhà được vợ cưng nên sáng nay xin được lẹ. File đã gửi.

Còn câu lệnh đó (màu đỏ) là mình lấy từ chỉ dẫn của bạn. Cám ơn và một ngày làm việc tốt lành và đừng nóng vì ảnh hưởng đến gan nhé bạn :)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Các điều kiện của bạn chủ yếu chỉ dùng giá trị chọn của drop down list và sử lý trên range khác nhau.
Để giản dị hơn, bạn có thể tạo thêm một danh sách range kế bên nguồn drop down list. Dùng hàm Appplcation.VLookup để tra ra cái range đó và set theme cho nó.
 
Upvote 0
Các điều kiện của bạn chủ yếu chỉ dùng giá trị chọn của drop down list và sử lý trên range khác nhau.
Để giản dị hơn, bạn có thể tạo thêm một danh sách range kế bên nguồn drop down list. Dùng hàm Appplcation.VLookup để tra ra cái range đó và set theme cho nó.

Cảm ơn thầy, tôi sẽ thử áp dụng cách của thầy vì thật sự nhìn vô thấy nó rườm rà thiệt.

Để giải stress (áp lực công việc - viết vầy chắc không phạm quy) thì hình như phải là "xử lý" thì đúng hơn phải không thầy. Cho vui mong thầy không giận.
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng như bác VetMini nói, thật ra thì dùng công thức tham chiếu luôn không cần phải code định dạng ô làm gì cho mệt. Chỉ sử dụng code cho phần lọc và sắp xếp là được rồi.
 
Upvote 0
Diùng mẫu tự x là đúng rồi. Tại tôi kỵ huý riết rồi quen tay ;-)
 
Upvote 0
Mong mọi người hướng dẫn cụ thể hơn một chút để mình có thể tham khảo và áp dụng. Mình thì chỉ đang học mẫu giáo mà thôi. Cảm ơn
 
Upvote 0
Mong mọi người hướng dẫn cụ thể hơn một chút để mình có thể tham khảo và áp dụng. Mình thì chỉ đang học mẫu giáo mà thôi. Cảm ơn
Trước khi giúp mình muốn xác định lại ý của bạn là như thế nào? Có phải chọn dữ liệu tại ô T1 và nháy nút kế bên sẽ lọc dữ liệu ở cột D bằng với T1 đúng không? Thứ hai là bạn tô màu chữ những ô từ L2 đến V9 mục đích để làm gì? Có phải tô màu để xem hay không? Nếu phải tại sao lại có ô thì tô có ô lại không tô? Bạn nêu mục đích cụ thể thì tôi giúp một lần thôi, nếu không chuyên mục này kéo dài hoài đấy.
 
Upvote 0
Web KT

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

Back
Top Bottom