XD360 KÍNH CHÚC CHO MỌI NHÀ VẠN SỰ AN LÀNH!

Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

 Quên mật khẩu
 Đăng ký mới
Anh Trần HòeBùi Quốc Hưng
Xem: 2201|Trả lời: 28
In Chủ đề trước Tiếp theo
Thu gọn cột thông tin

Mong các a chỉ giúp về lập trình VBA

[Lấy địa chỉ]

Hãy đăng nhập để có nhiều chức năng hữu dụng hơn và xem ảnh rõ hơn!

Bạn phải đăng nhập để xem được nội dung, nếu bạn chưa có tài khoản? hãy Đăng ký mới

x
Chào các a trong diễn đàn./.
Mấy lần xem đoạn video hướng dẫn VBA trong excel của anh Fubi, e hiểu lơ mơ về VBA, rất muốn tham gia lớp học VBA nhưng mà 6 tháng nữa mới có đợt. Xem mấy đoạn video e thấy rất thích làm việc thông minh như anh Fubi nhưng mà ... dốt anh văn wa, ko hiểu gì cả
- Hiện e đang làm rất nhiều trên excel và gặp 1 tình huống như thế này : e muốn ẩn tất cả các dòng - chiết tính vật liệu của 1 công tác, chỉ giữ lại dòng nhân công và máy thi công ( công trình e có khoảng 1000 công tác ). Làm thủ công thì lâu wa mong anh Fubi và các ae trong diễn đàn giúp đỡ.


Đánh giá

Bạn đưa fiel lên mọi người giúp cho. Nói khơi khơi làm sao biết được yêu cầu. Hình như cái đó anh Bình đã hướng dẫn rồi.  Đăng lúc 16/6/2014 16:41

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

2#
phamvana Đăng lúc 16/6/2014 21:12 | Chỉ xem của tác giả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

3#
tranhungdao12a3 Đăng lúc 16/6/2014 22:45 | Chỉ xem của tác giả
Bạn Xài code sau xem sao:
[Visual Basic] 纯文本查看 复制代码
Sub anhiendong()
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  For ir = Selection.Count To 1 Step -1
      If Selection.Item(ir) = x1Blanks Then _
         Selection.Item(ir).Rows.Hidden = True
  Next ir
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
 End Sub


Quét qua vùng dữ liệu, tìm thấy cell rỗng thì ẩn cả dòng.

Số người tham gia 1Thanked +1 Thu lại Lý do
ctythhhducchien + 1 Cảm ơn sự quan tâm của bạn nhiều!.

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

4#
tranhoe Đăng lúc 16/6/2014 23:12 | Chỉ xem của tác giả
tranhungdao12a3 gửi lúc 16/6/2014 22:45
Bạn Xài code sau xem sao:[mw_shl_code=vb,true]Sub andongtrong()
  Application.ScreenUpdating = Fal ...

Không phải ẩn dòng trống đâu!
Mục tiêu là: "ẩn tất cả các dòng - chiết tính vật liệu của 1 công tác,  chỉ giữ lại dòng nhân công và máy thi công"
Nhưng vấn đề là phải đưa file công việc lên (có thể chỉ cần vài công việc thôi, không cần 1000.000 cv), ghi rõ yêu cầu.
.....................................................................
Bạn phải biết rõ 1 nguyên lý bất biến sau: "Tất cả những cái gì có tính chất lập đi lập lại theo 1 qui luật thì đều có thể ghi lại macro để dùng chung sau này".
Ghi thành Sub hay Function là tùy ý thích của Người dùng.

Đánh giá

Bạn ấy cần ẩn dòng chiết tính mà!  Đăng lúc 16/6/2014 23:27
Chủ thớt quét vùng chứa mã hiệu, cell nào trống thì ẩn cả dòng được mà anh!  Đăng lúc 16/6/2014 23:23

Số người tham gia 1Thanked +1 Thu lại Lý do
ctythhhducchien + 1 Rất chuyên nghiệp. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

5#
tranhungdao12a3 Đăng lúc 16/6/2014 23:32 | Chỉ xem của tác giả
Do chủ thớt không có gửi File, nên em mặc định tại cột chứa mã hiệu thì các cell phần chiết tính là rỗng nên em mới viết thế! Nếu đề bài thực tế có khác thì ta sẽ chỉnh lại. Do chủ thớt hỏi mà không gửi File cụ thể nên em ném đá đại thôi! Nói chung viết đúng phải là ẩn dòng chứa cell rỗng thì đúng hơn.

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

6#
tranhoe Đăng lúc 7/7/2014 17:05 | Chỉ xem của tác giả
Bạn vừa cám ơn 1 bài trả lời của mình.
Bạn đã giải quyết được chưa?
Bạn chỉ cần đưa file rút gọn (chỉ cần chừng vài công việc) lên thôi.
Căn cứ trên file đó mới viết code cho Bạn được; vì cái này liên quan đến "Nhân công" và "Máy thi công" sử dụng font Unicode trong khi VBA không hổ trợ Unicode.
Nhìn thấy file mới viết được code cho chuẩn để sử dụng cho cả vài nghìn công việc.

Số người tham gia 1Thanked +2 Thu lại Lý do
tranhungdao12a3 + 2 Đồng tình. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

7#
tranhungdao12a3 Đăng lúc 8/7/2014 08:00 | Chỉ xem của tác giả
Đọc kỹ mới nhận ra là có câu"Chỉ giữ lại dòng Nhân Công và Máy thi công", heeee! mình ném đá linh tinh rồi! Tốt nhất bạn nên gửi File lên. Câu hỏi này gần giống câu hỏi của bạn Phuongnt. Bạn không gửi file lên thì anh TranHoe và anh Fubi không biết thế nào mà giúp đỡ bạn đâu. Theo mình tất cả các câu hỏi khi đưa lên diễn đàn thì đều nên cân nhắc kỹ càng xem bản thân đã cố gắng hết mức để làm chưa? nếu đã thực sự cố gắng tìm hiểu mà vẫn không làm được thì hãy nên hỏi? và một khi đã hỏi thì phải thực sự chú tâm và nhiệt tình học hỏi. Vì các bạn cũng biết là các anh ấy cũng bận trăm công nghìn việc, một khi đã giành thời gian giúp đỡ bạn thì mình tin đến đây các bạn sẽ biết phải làm gì. Hỏi cũng cần phải thể hiện sự chuyên nghiệp và nhiệt thành nhé!

Số người tham gia 1Uy Tín: +3 Thưởng +3 Thanked +1 Thu lại Lý do
tranhoe + 3 + 3 + 1 Rất kinh nghiệm. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

8#
 Tác giả| ctythhhducchien Đăng lúc 13/7/2014 10:22 | Chỉ xem của tác giả
ở sheet CHIẾT TÍNH các bác ạ:em muốn ẩn tất cả các dòng vật liệu , chỉ giữ lại các dòng nhân công và máy ở tất cả các công tác.

du toan DE XUATquai nua.xls

3.7 MB, Lượt tải về: 1434

Đánh giá

Bạn chọn bài viết của mình, bấm trả lời thì mình mới biết được (có tin nhắn). Hôm nay tình cờ thấy lại. sẽ nghiên cứu giải quyết.  Đăng lúc 4/8/2014 15:02

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

9#
laocong Đăng lúc 3/8/2014 22:02 | Chỉ xem của tác giả
Muốn chỉ hide những dòng Blank / Null, đơn giản là dùng CountA

Tùy theo điều kiện mà ta nêm nếm thức ăn



[Visual Basic] 纯文本查看 复制代码
Sub HideRows()
    Dim iLastRow As Long
    Dim i As Long
     
    With ActiveSheet
         
        iLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = 1 To iLastRow
            Rows(i).Hidden = Application.CountA(Cells(i, "A").Resize(, 4)) = 0
        Next i
         
    End With
     
End Sub


Nếu muốn nhấn mạnh điêu kiện là . Ô của cột A ,B , C  và D mà blank thì hide

Sub HideRows()
    Dim rRange As Range, rCell As Range
    Dim strVal As String
     
    Set rRange = Worksheets(1).Range("A1:A100")
     
    For Each rCell In rRange
        strVal = rCell & rCell(1, 2) & rCell(1, 3) & rCell(1, 4)
        rCell.EntireRow.Hidden = strVal = vbNullString
    Next rCell
     
     'A, B, C & D are empty.
     
End Sub 

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

10#
tranhoe Đăng lúc 4/8/2014 14:55 | Chỉ xem của tác giả
laocong gửi lúc 3/8/2014 22:02
Muốn chỉ hide những dòng Blank / Null, đơn giản là dùng CountA

Tùy theo điều kiện mà  ...

Bạn hiểu sai vấn đề rồi.
Yêu cầu của bài Không phải ẩn dòng trống đâu!
Mục tiêu là: "ẩn tất cả các dòng - chiết tính vật liệu của công tác,  chỉ giữ lại dòng nhân công và máy thi công"

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

11#
tranhoe Đăng lúc 4/8/2014 16:09 | Chỉ xem của tác giả
ctythhhducchien gửi lúc 13/7/2014 10:22
ở sheet CHIẾT TÍNH các bác ạ:em muốn ẩn tất cả các dòng vật liệu , chỉ giữ lại các ...

File của Bạn đây.
Xem thử đúng ý chưa nhé!
du toan DE XUATquai nua 2.xls (3.8 MB, Lượt tải về: 1053)

Đánh giá

@tranhungdao12a3: A đã tắt cập nhật tính toán. Trong file không có Events nên không cần tắt. Thanks!  Đăng lúc 4/8/2014 21:58
Tắt cập nhật tính toán và tắt Events sẽ chạy nhanh hơn đó anh!  Đăng lúc 4/8/2014 16:52

Số người tham gia 1Thanked +2 Thu lại Lý do
tranhungdao12a3 + 2 Chuyên nghiệp. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

12#
tranhungdao12a3 Đăng lúc 4/8/2014 22:44 | Chỉ xem của tác giả
tranhoe gửi lúc 4/8/2014 16:09
File của Bạn đây.
Xem thử đúng ý chưa nhé!

Em thử tắt mấy thứ cập nhật này ở File lần trước anh làm cho bạn Phuongnt, tốc độ thay đổi rõ rệt, em nhớ lần trước File anh để cập nhật tự động chạy mất mười mấy phút hay hai mấy phút, tắt mỗi cập nhật nó còn có 9 giây chạy cho 50000 dòng.

Đánh giá

Chia sẻ hay! Thanks bạn nhé!: 5.0
Vì ít dòng quá ~5000 dòng. Đúng là phải tắt hết các chức năng của Excel, chạy xong mới mở lại. Thanks!  Đăng lúc 4/8/2014 23:32
Chia sẻ hay! Thanks bạn nhé!: 5
OK! AE mình có thể bỏ ra hàng tiếng đồng hồ cũng được mà! Nói vui thôi nhé!  Đăng lúc 4/8/2014 23:29

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

13#
laocong Đăng lúc 5/8/2014 07:29 | Chỉ xem của tác giả
Thanks cậu tranhoe

"em muốn ẩn tất cả các dòng vật liệu , chỉ giữ lại các dòng nhân công và máy ở tất cả các công tác."

Muốn ẩn dòng có chữ vật liệu thì đau có gì
Range thì chọn column nào mà có chữ "vật liệu"
Dùng .Find("vật liệu", lookat:=xlWhole, LookIn:=xlValues ......
Nếu thấy thì rCell.EntireRow.Hidden
Nhớ là dùng loop findnext

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

14#
tranhungdao12a3 Đăng lúc 5/8/2014 08:37 | Chỉ xem của tác giả
laocong gửi lúc 5/8/2014 07:29
Thanks cậu tranhoe

"em muốn ẩn tất cả các dòng vật liệu , chỉ giữ lại các dòng nhân ...

Bạn đang hiểu sai ý của người hỏi. Người hỏi muốn ẩn tất cả dòng chiết tính liên quan đến vật liệu chứ không phải ẩn dòng có chữ "vật liệu", ẩn dòng có chữ "vật liệu" thì đơn giản hơn nhiều!
Một điều nữa là anh Tranhoe đã có cháu gọi bằng ông rồi đó bạn!

Đánh giá

Chia sẻ hay! Thanks bạn nhé!: 5.0
Chia sẻ hay! Thanks bạn nhé!: 5
  Đăng lúc 5/8/2014 09:54

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

15#
laocong Đăng lúc 5/8/2014 10:56 | Chỉ xem của tác giả
tranhungdao12a3 gửi lúc 5/8/2014 08:37
Bạn đang hiểu sai ý của người hỏi. Người hỏi muốn ẩn tất cả dòng chiết tính liê ...

Thanks cậu tranhoe

"em muốn ẩn tất cả các dòng vật liệu , chỉ giữ lại các dòng nhân công và máy ở tất cả các công tác."

Muốn ẩn dòng có chữ vật liệu thì đau có gì
Range thì chọn column nào mà có chữ "vật liệu"
Dùng .Find("vật liệu", lookat:=xlWhole, LookIn:=xlValues ......
Nếu thấy thì rCell.EntireRow.Hidden
Nhớ là dùng loop findnext

Vì ko từng dùng Font chữ Việt bên Mỹ, nên phải đổi chữ Vật liệu thành "baaaaaaaaaa", và cái Sheet thành AAA . Nếu tìm mà thấy trong cột ("C1:C6000") thì hide nguyên row

Option Explicit
Sub HideRows()
Dim c As Range
Dim firstAddress As String
        
    With Worksheets("AAA").Range("C1:C6000")
        Set c = .Find(What:="baaaaaaaaaa", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.EntireRow.Hidden = True
                Set c = .FindNext(c)
            Loop While Not c Is Nothing
        End If
    End With
End Sub

Đánh giá

Cách này Chỉ giải quyết được dòng có chữ "vật liệu", còn các dòng chi tiết vật liệu phía dưới thì vẫn còn nguyên.  Đăng lúc 7/8/2014 10:37

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

16#
tranhungdao12a3 Đăng lúc 7/8/2014 09:46 | Chỉ xem của tác giả
tranhoe gửi lúc 4/8/2014 16:09
File của Bạn đây.
Xem thử đúng ý chưa nhé!

Anh Tranhoe cho em hỏi với:
Trong code của anh có đoạn:
Private Sub CommandButton1_Click()
     Dim KMVL As String, TCVL As String
     Dim i As Integer
     KMVL = "a.) V" & ChrW(7853) & "t li" & ChrW(7879) & "u"
     TCVL = "C" & ChrW(7897) & "ng"
Anh chỉ cho em hàm Chrw() theo e hiểu thì các đối số bên trong 7853 là char code của ký tự "ậ" hay"aaj" còn 7979 là của "ệ".
Em thấy VBA không hỗ trợ unicode, em cũng không thấy anh viết hay gọi cái hàm chrw này trong File hay trong VBA có sẵn hàm đổi số ra chữ này nhỉ? mong anh chỉ giáo thêm!

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

17#
tranhoe Đăng lúc 7/8/2014 10:26 | Chỉ xem của tác giả
tranhungdao12a3 gửi lúc 7/8/2014 09:46
Anh Tranhoe cho em hỏi với:
Trong code của anh có đoạn:
Private Sub CommandButton1_Click()

Đúng rồi. Có hàm để chuyển đổi từ chuỗi Unicode sang code VBA chứ ai mà nhớ cho nỗi. Anh viết riêng thành 1 bài để ACE tải về cùng sử dụng.
Xem bài viết này: http://xaydung360.vn/diendan/ham ... -vba-12809-1-1.html

Số người tham gia 1Thanked +2 Thu lại Lý do
tranhungdao12a3 + 2 Thực tiễn. Cám ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

18#
mythanh76 Đăng lúc 27/8/2014 14:21 | Chỉ xem của tác giả
Chào các anh trong diễn đàn.
Em làm đoạn code để ẩn hiện dòng trong excel nhưng chỉ ẩn các dòng có công thức kết quả là rổng " ", khi nhập dữ liệu vào thì các dòng này tự động hiện ra, đoạn code của em nó tự động ẩn mà không tự động hiện được, em phải Unhide thì mất công quá. Các anh chỉ dùm em với, em mới tập lập trình VBA nên em không biết làm cách nào, các anh sữa lại đoạn code dưới đây dùm em.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim firstAddress As String
    With Range("C4:C23")
        Set c = .Find(What:=" ", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.EntireRow.Hidden = True
                Set c = .FindNext(c)
            Loop While Not c Is Nothing
        End If
    End With
End Sub

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

19#
tranhungdao12a3 Đăng lúc 27/8/2014 14:50 | Chỉ xem của tác giả
mythanh76 gửi lúc 27/8/2014 14:21
Chào các anh trong diễn đàn.
Em làm đoạn code để ẩn hiện dòng trong excel nhưng chỉ  ...

Chèn thêm câu lệnh:
[Visual Basic] 纯文本查看 复制代码
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c4:c23")) Is Nothing Then
Dim c As Range
Dim firstAddress As String
    With Range("C4:C23")
        Set c = .Find(What:="", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.EntireRow.Hidden = True
                Set c = .FindNext(c)
            Loop While Not c Is Nothing
        End If
    End With
End If
End Sub

xài thêm đoạn:
[Visual Basic] 纯文本查看 复制代码
Sub hienrow()
Rows("4:23").Hidden = False
End Sub

Cho hiện bằng tay thôi, vì tôi nghĩ sự kiện nó không thể chạy đồng thời vừa ẩn vừa hiện được. Nếu nó hiện được thế thì tôi chưa biết, các bạn khác sẽ giúp bạn.

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

Phiên bản Mobile|Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng  

Phần mềm dự toán xây dựng excel | Hướng dẫn lập dự toán xây dựng | Phần mềm tư vấn giám sát | Phần mềm quản lý chất lượng xây dựng |

Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Kiến Trúc sư

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Đấu thầu

GMT+7, 23/8/2026 03:38 , Processed in 0.152593 second(s), 38 queries .

Powered by Discuz! X3.2

© 2001-2013 Kiso Comsenz Inc.