Gán một giá trị cố định cho 1 biến (1 người xem)

Liên hệ QC

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

tunglinhmot

Thành viên chính thức
Tham gia
17/5/17
Bài viết
59
Được thích
6
Giới tính
Nam
Mình có một file check, tùy vào thao tác DoubleClick, RightClick, hay SelectionChange mà nó sẽ nhập các giá trị NG hay ✓ vào ô cell mà mình chọn. Nhưng do mỗi người thích một cách dùng khác nhau ( có người thích DoubleClick thì nhập NG, người thì thích nhập dấu ✓.) nên mình muốn có một cách nào đấy để gán một giá trị cố định cho một biến nào đó, rồi dùng biến đó gán vào ô cell tùy vào thao tác DoubleClick, RightClick...
Biến này chỉ gán 1 lần lúc mở file lên, từ lần mở sau nếu không gán lại giá trị thì biến đó vẫn giữ nguyên giá trị đã được gán lúc trước. Có cao thủ nào giúp mình với được không ạ.
 

File đính kèm

Trị không thay đổi thì gọi là hằng chứ sao lại là biến?
 
Upvote 0
Nếu là hằng số thì gán giá trị làm sao được hả bác, em vẫn muốn gán giá trị cho nó lúc mở file lần đầu mà
 
Upvote 0
Nếu là hằng số thì gán giá trị làm sao được hả bác, em vẫn muốn gán giá trị cho nó lúc mở file lần đầu mà

Đương nhiên phải định cho nó một trị. Nếu không cho trị thì nó mặc định là 0/blank/empty/nothing, làm sao mà xài được?
 
Upvote 0
Đây là câu trả lời của trầu bà điểm, cạnh tranh với cau thủ đức.

Thớt hỏi mập mờ, khong định nghĩa được từ "cố định". Không phân biệt được các tình huống - nếu phân biệt được thì đã dùng từ ngữ khác.

1. Loại cố định hằng. Tiếng chuyên môn là constant. Một vật thể được định là hằng thì sẽ mang giá trị này mãi, không thể dùng phép gán (dấu =) để gán cho một trị khác. VBA định loại này bằng từ khoá Const
Const coDinh = 100
Lưu ý rằng hằng không thể thay đổi cho nên không thể gọi là biến. Cái dấu = tôi dùng trên là phép định trị, không hẳn 100% là phép gán. Đối với VBA thì định trị không khác gán là bao nhiêu, nhưng ngôn ngữ khác thì có thể có sự khác biệt.

2. Loại cố định trong mỗi lượt gọi của hàm/phương thức (function/sub). Tiếng chuyên môn gọi là heap memory variables. Tuy biến có tầm vực trong sub/function nhưng được chứa trong heap thay vì stack như các biến khác. Khi sub/function thoát ra thì các biến chứa trong stack bị huỷ trong khi phần chứa trong heap vẫn tồn tại. Vì vậy, loại biến này sẽ giữ giá trị của nó trong suốt thời gian chạy của chương trình. Nếu lượt gọi thứ i của function gán cho biến 1 trị abc trước khi thoát ra thì lượt gọi thứ i+1 của function sẽ thấy nó khởi đầu bằng trị abc. VBA định loại này bằng từ khoá Static
Static coDinh As Integer
Lưu ý rằng khi chương trình chấm dứt thì heap cũng bị huỷ luôn. Vì vậy, trong lượt chạy kế tiếp của chương trình thì biến này lại bắt đầu lại từ đầu.

3. Loại cố định sau khi chương trình chấm dứt. Tiếng chuyên môn gọi là persistent. Loại này dùng để giữ lại giá trị tính toán của chương trình trong lượt chạy thứ i để tiếp tục dùng cho đợt chạy thứ i+1. Điển hình của loại này là CSDL. Đối với khoảng giá trị thì cách thực nhiện dễ nhất là tạo một hidden worksheet và chứa chúng.

(nếu tôi đoán không lầm thì ý của thớt là muốn loại 3. Nhưng tôi không đi sâu nữa vì giới hạn của trầu bà điểm chỉ tới đây. Việc thực hiện cái gì đó thì thớt chỉ muốn hỏi cau thủ đức)
 
Upvote 0
Đây là câu trả lời của trầu bà điểm, cạnh tranh với cau thủ đức.

Thớt hỏi mập mờ, khong định nghĩa được từ "cố định". Không phân biệt được các tình huống - nếu phân biệt được thì đã dùng từ ngữ khác.

1. Loại cố định hằng. Tiếng chuyên môn là constant. Một vật thể được định là hằng thì sẽ mang giá trị này mãi, không thể dùng phép gán (dấu =) để gán cho một trị khác. VBA định loại này bằng từ khoá Const
Const coDinh = 100
Lưu ý rằng hằng không thể thay đổi cho nên không thể gọi là biến. Cái dấu = tôi dùng trên là phép định trị, không hẳn 100% là phép gán. Đối với VBA thì định trị không khác gán là bao nhiêu, nhưng ngôn ngữ khác thì có thể có sự khác biệt.

2. Loại cố định trong mỗi lượt gọi của hàm/phương thức (function/sub). Tiếng chuyên môn gọi là heap memory variables. Tuy biến có tầm vực trong sub/function nhưng được chứa trong heap thay vì stack như các biến khác. Khi sub/function thoát ra thì các biến chứa trong stack bị huỷ trong khi phần chứa trong heap vẫn tồn tại. Vì vậy, loại biến này sẽ giữ giá trị của nó trong suốt thời gian chạy của chương trình. Nếu lượt gọi thứ i của function gán cho biến 1 trị abc trước khi thoát ra thì lượt gọi thứ i+1 của function sẽ thấy nó khởi đầu bằng trị abc. VBA định loại này bằng từ khoá Static
Static coDinh As Integer
Lưu ý rằng khi chương trình chấm dứt thì heap cũng bị huỷ luôn. Vì vậy, trong lượt chạy kế tiếp của chương trình thì biến này lại bắt đầu lại từ đầu.

3. Loại cố định sau khi chương trình chấm dứt. Tiếng chuyên môn gọi là persistent. Loại này dùng để giữ lại giá trị tính toán của chương trình trong lượt chạy thứ i để tiếp tục dùng cho đợt chạy thứ i+1. Điển hình của loại này là CSDL. Đối với khoảng giá trị thì cách thực nhiện dễ nhất là tạo một hidden worksheet và chứa chúng.

(nếu tôi đoán không lầm thì ý của thớt là muốn loại 3. Nhưng tôi không đi sâu nữa vì giới hạn của trầu bà điểm chỉ tới đây. Việc thực hiện cái gì đó thì thớt chỉ muốn hỏi cau thủ đức)
Chắc là bạn ý không hiểu điều anh nói đâu, nếu hiểu thì đã không có thớt này.

Dùng một ô tạm để chứa giá trị mà muốn dùng. khi cần chèn giá trị thì đọc cái ô tạm đó và viết vào ô cần biết. Người dùng thích dùng cái gì thì điền vào ô đó( bài toán trở thành copy một ô cố định vào một ô bắt kỳ)

Đẹp hơn thì có thể dùng Name.
 
Upvote 0
Bạn xem và chỉnh sữa lại theo nhu cầu của bạn thử
Cái dở của SelectionChange là: Nếu ta Double Click hoặc Right Click trên 1 cell, ra giá trị rồi lại đổi ý Click 1 phát sẽ không ăn thua gì. Buộc phải click chỗ khác rồi click vào cell đó mới có tác dụng
Cho nên trường hợp có từ 2 giá trị trở xuống, ta dùng sự kiện BeforRightClick và DoubleClick là đủ. Còn không cứ dùng AutoCorrect cho khỏe (thay ký tự nào ít dùng, dễ gõ nhất thành ký tự ta cần)
Mà thấy cũng lạ: "NG" còn chấp nhận được chứ "v" và "-" thôi gõ luôn cho chắc (chỉ 1 thao tác chứ mệt mỏi gì)
 
Upvote 0
Đây là câu trả lời của trầu bà điểm, cạnh tranh với cau thủ đức.

Thớt hỏi mập mờ, khong định nghĩa được từ "cố định". Không phân biệt được các tình huống - nếu phân biệt được thì đã dùng từ ngữ khác.

1. Loại cố định hằng. Tiếng chuyên môn là constant. Một vật thể được định là hằng thì sẽ mang giá trị này mãi, không thể dùng phép gán (dấu =) để gán cho một trị khác. VBA định loại này bằng từ khoá Const
Const coDinh = 100
Lưu ý rằng hằng không thể thay đổi cho nên không thể gọi là biến. Cái dấu = tôi dùng trên là phép định trị, không hẳn 100% là phép gán. Đối với VBA thì định trị không khác gán là bao nhiêu, nhưng ngôn ngữ khác thì có thể có sự khác biệt.

2. Loại cố định trong mỗi lượt gọi của hàm/phương thức (function/sub). Tiếng chuyên môn gọi là heap memory variables. Tuy biến có tầm vực trong sub/function nhưng được chứa trong heap thay vì stack như các biến khác. Khi sub/function thoát ra thì các biến chứa trong stack bị huỷ trong khi phần chứa trong heap vẫn tồn tại. Vì vậy, loại biến này sẽ giữ giá trị của nó trong suốt thời gian chạy của chương trình. Nếu lượt gọi thứ i của function gán cho biến 1 trị abc trước khi thoát ra thì lượt gọi thứ i+1 của function sẽ thấy nó khởi đầu bằng trị abc. VBA định loại này bằng từ khoá Static
Static coDinh As Integer
Lưu ý rằng khi chương trình chấm dứt thì heap cũng bị huỷ luôn. Vì vậy, trong lượt chạy kế tiếp của chương trình thì biến này lại bắt đầu lại từ đầu.

3. Loại cố định sau khi chương trình chấm dứt. Tiếng chuyên môn gọi là persistent. Loại này dùng để giữ lại giá trị tính toán của chương trình trong lượt chạy thứ i để tiếp tục dùng cho đợt chạy thứ i+1. Điển hình của loại này là CSDL. Đối với khoảng giá trị thì cách thực nhiện dễ nhất là tạo một hidden worksheet và chứa chúng.

(nếu tôi đoán không lầm thì ý của thớt là muốn loại 3. Nhưng tôi không đi sâu nữa vì giới hạn của trầu bà điểm chỉ tới đây. Việc thực hiện cái gì đó thì thớt chỉ muốn hỏi cau thủ đức)

Cám ơn bác đã cất công giải thích, em tuy chưa hiểu hoàn toàn nhưng cũng hiểu được đại khái, quan trọng là có cơ sở để tìm thông tin về mấy cái kiểu thế này trên google.
 
Upvote 0
Bạn vẽ case chứ đọc chả hiểu đầu cua trước sau gì sất ^^
 
Upvote 0
Web KT

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

Back
Top Bottom