Macro DienSo()

Liên hệ QC

emgaingayngo

Thành viên hoạt động
Tham gia
9/2/07
Bài viết
141
Được thích
5
Mô tả công việc :
Tại cell A32 của sheet TaoTuTru chứa tên của 25 bộ tứ trụ, mỗi bộ tứ trụ được miêu tả tại A20 và B20
Khi bạn click vào cell A20 và B20 sẽ hiện ra bảng miêu tả các số của tứ trụ trong bảng tương ứng phía dưới.
Tạo macro điền số thỏa điều kiện :
- tự động điền số vào bảng mỗi khi mình chọn tên của tứ trụ.
 

File đính kèm

Cái này mình chưa xem file nhưng mình cũng không rõ là bạn nhờ diễn đàn hay bạn chia sẻ file này cho mọi người sử dụng hoặc tham khảo nữa !!!
 
Upvote 0
Dear emgaingayngo,
-------------------
Có phải ý của bạn muốn thế này không?
 

File đính kèm

Upvote 0
Dear Việt Cường!
-------------------------
Cảm ơn bạn đã trả lời. Nhưng cách của bạn có lẽ sẽ bất tiện cho công việc của mình.
Có cách nào điền số mà không phụ thuộc vào Cell A20 & B20 không các bạn? Còn 2 bảng trên mình tạo ra là để định nghĩa về tứ trụ xem nó có bao nhiêu lọai và mỗi lọai bao nhiêu số.(Để các bạn xem dễ hiểu hơn í mà)
Chào thân ái!
emgaingayngo
À! Các bạn cho mình hỏi thêm chút nha:
Trong VBA mình dùng câu lệnh gì để format một vùng range dưới dạng TEXT( mình muốn XL hiểu ở cột đầu là : 01-02...-09 thay vì : 0-1-2...-9)
 
Upvote 0
Range("vung").Select
Selection.NumberFormat = "@"
 
Upvote 0
Macro điền số

Để VBA có thể nắm bắt được sự kiện Change (thay đổi giá trị) khi ô A32 thay đổi, Thủ tục Worksheet_Change được viết trong sheet trong Sheet “TaoTuTru” là . Thủ tục này thực hiện nhiệm vụ:
- Kiểm tra sự thay đổi trong sheet. Nếu ô A32 thay đổi mới thực hiện công việc tiếp theo.
- Nếu ô A32 thay đổi thì thực hiện việc xóa vùng A8:J17 và ghi vào số mới theo số đầu tiên tại ô A3, số dòng, số cột theo giá trị chuỗi ô A32 (TamxNam, BonxBay, ...). Hàm ChuyenSo có nhiệm vụ đổi “Hai, Ba, ..., Chin thành số 2, 3, .., 9.

Quy luật nhập số tôi dựa vào công thức tại các ô A3:C5. Nhưng không biết công thức của emgaingayngo sai hay tôi chưa hiểu ý đồ bài toán. Ví dụ ô A3=1, dòng=2 (ô B3), cột=3 (C3) thì emgaingayngo cho kết quả:
1 ... 31 theo tôi ghi đủ các cột là 1 11 21 31
2 ... 32 2 12 22 32
như vậy dư 1 cột.

Kết quà mà Sub TuTru cho kết quả là:
1 11 21
2 12 22
Không biết có đúng yêu cầu đề ra hay không?

'=======================
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$32" Then
ten = Target.Value
n = InStr(1, ten, "x")
dong = ChuyenSo(Left(ten, n - 1))
cot = ChuyenSo(Mid(ten, n + 1))
sodau = Val(Cells(3, 1))
Range(Cells(21, 1), Cells(30, 10)).ClearContents
For c = 1 To cot
For n = 1 To dong
Cells(n + 20, c) = (c - 1) * 10 + sodau + n - 1
Next
Next
End If
End Sub

'==============================
Function ChuyenSo(conso) As Byte
Select Case conso
Case "Chin"
ChuyenSo = 9
Case "Tam"
ChuyenSo = 8
Case "Bay"
ChuyenSo = 7
Case "Sau"
ChuyenSo = 6
Case "Nam"
ChuyenSo = 5
Case "Bon"
ChuyenSo = 4
Case "Ba"
ChuyenSo = 3
Case Else
ChuyenSo = 2
End Select
End Function

Không hiểu tại sao giaiphapexcel không gởi file đính kèm được !
 
Upvote 0
emgaingayngo đã viết:
Mô tả công việc :
Tại cell A32 của sheet TaoTuTru chứa tên của 25 bộ tứ trụ, mỗi bộ tứ trụ được miêu tả tại A20 và B20
Khi bạn click vào cell A20 và B20 sẽ hiện ra bảng miêu tả các số của tứ trụ trong bảng tương ứng phía dưới.
Tạo macro điền số thỏa điều kiện :
- tự động điền số vào bảng mỗi khi mình chọn tên của tứ trụ.
Để VBA có thể nắm bắt được sự kiện Change (thay đổi giá trị) khi ô A32 thay đổi, Thủ tục Worksheet_Change được viết trong sheet trong Sheet “TaoTuTru” là . Thủ tục này thực hiện nhiệm vụ:
- Kiểm tra sự thay đổi trong sheet. Nếu ô A32 thay đổi mới thực hiện công việc tiếp theo.
- Nếu ô A32 thay đổi thì thực hiện việc xóa vùng A8:J17 và ghi vào số mới theo số đầu tiên tại ô A3, số dòng, số cột theo giá trị chuỗi ô A32 (TamxNam, BonxBay, ...). Hàm ChuyenSo có nhiệm vụ đổi “Hai, Ba, ..., Chin thành số 2, 3, .., 9.

Quy luật nhập số tôi dựa vào công thức tại các ô A3:C5. Nhưng không biết công thức của emgaingayngo sai hay tôi chưa hiểu ý đồ bài toán. Ví dụ ô A3=1, dòng=2 (ô B3), cột=3 (C3) thì emgaingayngo cho kết quả:
1 ... 31 theo tôi ghi đủ các cột là 1 11 21 31
2 ... 32 2 12 22 32
như vậy dư 1 cột.

Kết quà mà Sub TuTru cho kết quả là:
1 11 21
2 12 22
Không biết có đúng yêu cầu đề ra hay không?

'=======================
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$32" Then
ten = Target.Value
n = InStr(1, ten, "x")
dong = ChuyenSo(Left(ten, n - 1))
cot = ChuyenSo(Mid(ten, n + 1))
sodau = Val(Cells(3, 1))
Range(Cells(21, 1), Cells(30, 10)).ClearContents
For c = 1 To cot
For n = 1 To dong
Cells(n + 20, c) = (c - 1) * 10 + sodau + n - 1
Next
Next
End If
End Sub

'==============================
Function ChuyenSo(conso) As Byte
Select Case conso
Case "Chin"
ChuyenSo = 9
Case "Tam"
ChuyenSo = 8
Case "Bay"
ChuyenSo = 7
Case "Sau"
ChuyenSo = 6
Case "Nam"
ChuyenSo = 5
Case "Bon"
ChuyenSo = 4
Case "Ba"
ChuyenSo = 3
Case Else
ChuyenSo = 2
End Select
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
phamduylong Hàm ChuyenSo có nhiệm vụ đổi “Hai đã viết:
Function ChuyenSo(conso) As Byte[/b]
Select Case conso
Case "Chin"
ChuyenSo = 9
Case "Tam"
ChuyenSo = 8
Case "Bay"
ChuyenSo = 7
Case "Sau"
ChuyenSo = 6
Case "Nam"
ChuyenSo = 5
Case "Bon"
ChuyenSo = 4
Case "Ba"
ChuyenSo = 3
Case Else
ChuyenSo = 2
End Select
End Function
/)/(ình đề xuất tham khảo hàm sau:
Mã:
[b]Function Chu_So(ChuSo As String) As Byte [/b]
    Chu_So = Switch(ChuSo = "Chin", 9, ChuSo = "Tam", 8, ChuSo _
                   = "bay", 7. . . .)
[b]End Function[/b]
 
Lần chỉnh sửa cuối:
Upvote 0
À ! thì ra là khai báo kiểu dữ liệu là byte (mình bị bí ở chổ này). Cảm ơn các bạn nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom