Tính độ rộng tông các cột hay hàng

quanglenb

Thành viên chính thức
Tham gia ngày
2 Tháng mười một 2019
Bài viết
69
Được thích
8
Điểm
20
Tuổi
29
Chào các anh/chị trên diễn đàn, các anh/chị cho em hỏi
Có cách nào để tính được tổng độ rộng của các cột hay hàng giúp em mới ạ!
Trong hình em muốn tính tổng độ rông hàng tương ứng với dòng 1,2,3
Tính tổng độ rông cột A, B, C, D, E, F, G
Dĩ diên không phải xem độ rông từng cột hay dòng rồi cộng lại thủ công
Em xin cảm ơn!
Tổng độ rông cột b2.png
b1.pngb2.png
 

hungpecc1

Thành viên gắn bó
Tham gia ngày
24 Tháng tám 2012
Bài viết
1,617
Được thích
2,209
Điểm
560
Tuổi
33
Chào các anh/chị trên diễn đàn, các anh/chị cho em hỏi
Có cách nào để tính được tổng độ rộng của các cột hay hàng giúp em mới ạ!
Trong hình em muốn tính tổng độ rông hàng tương ứng với dòng 1,2,3
Tính tổng độ rông cột A, B, C, D, E, F, G
Dĩ diên không phải xem độ rông từng cột hay dòng rồi cộng lại thủ công
Em xin cảm ơn!
Tổng độ rông cột View attachment 228093
View attachment 228092View attachment 228093
Biết 1 cách tương tự, chi tiết tham khảo bên dưới:

Sub a()
Dim dA#, dB#, dC#
dA = Range("A1").EntireColumn.Width
dB = Range("B1").EntireColumn.Width
dC = Range("C1").EntireColumn.Width
MsgBox "Do rong cot A ; B; C lan luot la : " & dA & " ;" & dB & " ;" & dC & Chr(10) _
& "Tong chieu rong cot A+B+C la :" & dA + dB + dC
End Sub
 

quanglenb

Thành viên chính thức
Tham gia ngày
2 Tháng mười một 2019
Bài viết
69
Được thích
8
Điểm
20
Tuổi
29
Biết 1 cách tương tự, chi tiết tham khảo bên dưới:

Sub a()
Dim dA#, dB#, dC#
dA = Range("A1").EntireColumn.Width
dB = Range("B1").EntireColumn.Width
dC = Range("C1").EntireColumn.Width
MsgBox "Do rong cot A ; B; C lan luot la : " & dA & " ;" & dB & " ;" & dC & Chr(10) _
& "Tong chieu rong cot A+B+C la :" & dA + dB + dC
End Sub
Cám ơn anh!
Mỗi lần cần thêm cột nào để tính tổng vào code để thêm đúng không anh?
 

hungpecc1

Thành viên gắn bó
Tham gia ngày
24 Tháng tám 2012
Bài viết
1,617
Được thích
2,209
Điểm
560
Tuổi
33
Cám ơn anh!
Mỗi lần cần thêm cột nào để tính tổng vào code để thêm đúng không anh?
Thành viên càng mô tả chính xác yêu cầu , mục đích và kết quả mong muốn thì hiệu quả tương tác giữ bạn và các thành viên khác càng cao; đat yêu cầu thời gian - kỹ thuật
 

quanglenb

Thành viên chính thức
Tham gia ngày
2 Tháng mười một 2019
Bài viết
69
Được thích
8
Điểm
20
Tuổi
29

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Có cách nào khác không ạ?
Ý em là mỗi lần tính tổng độ rộng các cột hay hàng thì phải vào code để chỉnh sửa, giả sử cần tính tổng chiều cao nhiều cột hay hàng thì phải liệt kê những hàg và cột đó và điền tên vào code.
Cách khác thì xem ở sheet2 của File.
 

File đính kèm

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,103
Được thích
948
Điểm
560
Anh ơi! Cho em hỏi thêm ạ:
Anh giúp em đổi đơn vị ra luôn cm được không ạ?
Đơn vị tính anh giúp em ở trên là đơn vị gì vậy anh?
Đơn vị là Points
72 Points = 2.54 Cm
1 Points = 1/72*2.54 Cm

Cách lấy độ rộng Cột chọn:
PHP:
Selection(1,Selection.Columns.Count).Left + Selection(1,Selection.Columns.Count).Width  - Selection(1,1).Left
Cách lấy chiều cao Hàng chọn:
PHP:
Selection(Selection.Rows.Count, 1).Top + Selection(Selection.Rows.Count,1).Height - Selection(1,1).Top
Cách lấy độ rộng và chiều cao đã xác định:
Set RNG = [B4:C25]
Thay thế toàn bộ Selection thành RNG


Hàm (Tạo một Module và copy code dưới vào):
PHP:
Public RSelection As Range
Function SelectionWidth() As Long
  Application.Volatile
  Dim Rng As Range
  If Not RSelection Is Nothing Then
    Set Rng = RSelection
    SelectionWidth = Rng(1, Rng.Columns.Count).Left + Rng(1, Rng.Columns.Count).Width - Rng(1, 1).Left
  End If
End Function

Function SelectionHeight() As Long
  Application.Volatile
  Dim Rng As Range
  If Not RSelection Is Nothing Then
    Set Rng = RSelection
    SelectionHeight = Rng(Rng.Rows.Count, 1).Top + Rng(Rng.Rows.Count, 1).Height - Rng(1, 1).Top
  End If
End Function
Function RangeWidth(Optional ByVal Rng As Range) As Long
  Application.Volatile
  If Rng Is Nothing Then Set Rng = RSelection
  If Rng Is Nothing Then Exit Function
  RangeWidth = Rng(1, Rng.Columns.Count).Left + Rng(1, Rng.Columns.Count).Width - Rng(1, 1).Left
End Function

Function RangeHeight(Optional ByVal Rng As Range) As Long
  Application.Volatile
  If Rng Is Nothing Then Set Rng = RSelection
  If Rng Is Nothing Then Exit Function
  RangeHeight = Rng(Rng.Rows.Count, 1).Top + Rng(Rng.Rows.Count, 1).Height - Rng(1, 1).Top
End Function
Copy đoạn này vào Code Worksheet đang thực hiện:

PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set RSelection = Target
  Application.Calculate
End Sub
 
Lần chỉnh sửa cuối:

quanglenb

Thành viên chính thức
Tham gia ngày
2 Tháng mười một 2019
Bài viết
69
Được thích
8
Điểm
20
Tuổi
29
Đơn vị là Points
72 Points = 2.54 Cm
1 Points = 1/72*2.54 Cm

Cách lấy độ rộng Cột chọn:
PHP:
Selection(1,Selection.Columns.Count).Left + Selection(1,Selection.Columns.Count).Width  - Selection(1,1).Left
Cách lấy chiều cao Hàng chọn:
PHP:
Selection(Selection.Rows.Count, 1).Top + Selection(Selection.Rows.Count,1).Height - Selection(1,1).Top
Cách lấy độ rộng và chiều cao đã xác định:
Set RNG = [B4:C25]
Thay thế toàn bộ Selection thành RNG


Hàm (Tạo một Module và copy code dưới vào):
PHP:
Public RSelection As Range
Function SelectionWidth(Optional ByVal Rng As Range) As Long
  Application.Volatile
  If Not RSelection Is Nothing Then
    Set Rng = RSelection.EntireColumn
    Debug.Print Rng.Address
    SelectionWidth = Rng(1, Rng.Columns.Count).Left + Rng(1, Rng.Columns.Count).Width - Rng(1, 1).Left
  End If
End Function

Function SelectionHeight(Optional ByVal Rng As Range) As Long
  Application.Volatile
  If Not RSelection Is Nothing Then
    Set Rng = RSelection
    SelectionHeight = Rng(Rng.Rows.Count, 1).Top + Rng(Rng.Rows.Count, 1).Height - Rng(1, 1).Top
  End If
End Function
Function RangeWidth(Optional ByVal Rng As Range) As Long
  Application.Volatile
  If Rng Is Nothing Then Set Rng = RSelection
  If Rng Is Nothing Then Exit Function
  RangeWidth = Rng(1, Rng.Columns.Count).Left + Rng(1, Rng.Columns.Count).Width - Rng(1, 1).Left
End Function

Function RangeHeight(Optional ByVal Rng As Range) As Long
  Application.Volatile
  If Rng Is Nothing Then Set Rng = RSelection
  If Rng Is Nothing Then Exit Function
  RangeHeight = Rng(Rng.Rows.Count, 1).Top + Rng(Rng.Rows.Count, 1).Height - Rng(1, 1).Top
End Function
Mã:
Selection(Selection.Rows.Count, 1).Top + Selection(Selection.Rows.Count,1).Height - Selection(1,1).Top
Copy đoạn này vào Code Worksheet đang thực hiện:

PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set RSelection = Target
  Application.Calculate
End Sub
Em đã copy code vào sheet hiện hành và module.
Sao vẫn không được vậy ạ?
Cách lấy độ Rộng cột chọn và cách lấy chiều cao Hàng chọn có 02 mã code sử dụng sao vậy ạ?
02 mã đó như sau:
Mã:
Selection(1,Selection.Columns.Count).Left + Selection(1,Selection.Columns.Count).Width  - Selection(1,1).Left
Mã:
Selection(Selection.Rows.Count, 1).Top + Selection(Selection.Rows.Count,1).Height - Selection(1,1).Top
Anh giúp em mới nhé!
 

File đính kèm

Lần chỉnh sửa cuối:

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,103
Được thích
948
Điểm
560
Sau khi copy xong thì bạn dùng công thức tự tạo ở trên vào Sheet chứa code và vào Ô nào bạn muốn:
4 hàm tương tự cách dùng như nhau:
=SelectionWidth()
=SelectionHeight()
=RangeWidth(D2:G200)
=RangeHeight(D2:Z200)
 
Lần chỉnh sửa cuối:

quanglenb

Thành viên chính thức
Tham gia ngày
2 Tháng mười một 2019
Bài viết
69
Được thích
8
Điểm
20
Tuổi
29
Sau khi copy xong thì bạn dùng công thức tự tạo ở trên vào Sheet chứa code và vào Ô nào bạn muốn:
4 hàm tương tự cách dùng như nhau:
=SelectionWidth(A1)
=SelectionHeight(A1)
=RangeWidth(D2:G200)
=RangeHeight(D2:Z200)
Vâng, em cám ơn anh!
Hàm =SelectionWidth() bị lỗi anh ạ! 3 hàm còn lại thì không vấn đề gi ạ!44444.png
 

File đính kèm

quanglenb

Thành viên chính thức
Tham gia ngày
2 Tháng mười một 2019
Bài viết
69
Được thích
8
Điểm
20
Tuổi
29
Anh ơi cho em hỏi đơn vị mặc định độ rông cột (khi xác định độ rộng cột) trong excel là đơn vị gì vây anh?
Như hình em đăng dưới đây độ rộng cột là 8,11, thì đơn vị của nó là gì vậy anh?
Em nghĩ không phải pt, không phải px.
eeeeee.png
 

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia ngày
17 Tháng tư 2016
Bài viết
2,201
Được thích
1,790
Điểm
360
Tuổi
27

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,103
Được thích
948
Điểm
560
Anh ơi cho em hỏi đơn vị mặc định độ rông cột (khi xác định độ rộng cột) trong excel là đơn vị gì vây anh?
Như hình em đăng dưới đây độ rộng cột là 8,11, thì đơn vị của nó là gì vậy anh?
Em nghĩ không phải pt, không phải px.
Độ rộng này được chuẩn hóa dựa theo tỉ lệ Font chữ
Và đơn vị điều chỉnh độ rộng này là Pica

Đơn vị độ rộng sẽ là: 1 Pica = 12 Points
Tỉ lệ chiều cao tương ứng là: 1*4/3 Points

Tất cả nên được quy về Points khi thực hiện tính toán trong VBA. Khi trả ngược giá trị thì ta nhân theo tỉ lệ tương ứng.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Anh ơi cho em hỏi đơn vị mặc định độ rông cột (khi xác định độ rộng cột) trong excel là đơn vị gì vây anh?
Như hình em đăng dưới đây độ rộng cột là 8,11, thì đơn vị của nó là gì vậy anh?
Em nghĩ không phải pt, không phải px.
View attachment 228274
Theo tôi hiểu thì đơn vị tính là tùy thuộc vào cách thiết lập trong cửa sổ Options (xem hình).

A_Rong.GIF
 

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,103
Được thích
948
Điểm
560
Theo tôi hiểu thì đơn vị tính là tùy thuộc vào cách thiết lập trong cửa sổ Options (xem hình).

View attachment 228281
Thầy be09 sẽ khiến khác bạn nhầm lẩn giữa đơn vị đo lường tiêu chuẩn và tỉ lệ điều chỉnh kích thước trang tính mặc định (không bao giờ đổi).

Cái Thầy chụp kia là đơn vị để tính trong việc căn chỉnh (Lề, khổ giấy, ...), bố trí trang (xem trước trang, bố cục trang, ...), nó hỗ trợ 2 mục là View (Xem) và Page Layout (Bố trí trang).
 
Top Bottom