Hỏi đáp VBA trong chủ đề "Chập chững đến VBA" (2 người xem)

Liên hệ QC

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

luongchihien

Thành viên mới
Tham gia
26/8/11
Bài viết
7
Được thích
1
Em xem đề tài và học hỏi được một tí, với yêu cầu như vậy! Trong file excel có sheet "Form" và sheet "Thong Tin KH" bây giờ em muốn nhập vào form (từ ô D4: D32, như trong file) rồi enter thì dữ liệu được nhập vào sheet "Thong Tin KH". Mong mọi người giúp đỡ
Em mò mẫn mãi mà ko ra ( em làm được cái gì là đính kèm hết trong file đó. gồm file excel và word chứa code)
Cảm ơn trước, cho những ai giúp đỡ!
 

File đính kèm

Nói chung em muốn cách nào đó để định vị được nó, rồi ta định dạng & Format
Gợi ý bạn làm thử nhé, để tìm "I." bạn xem FIND METHOD có cả 1 topic viết về nó bạn search trên diễn đàn nhé, kết hợp với offset, còn
muốn tìm hiểu kiểu định dạng bạn có thể ghi Macro để xem.
 
Upvote 0
Nói chung em muốn cách nào đó để định vị được nó, rồi ta định dạng & Format
Dựa vào code này bạn có thể tùy biến nhé
PHP:
Sub Timkiem()
Dim Rng As Range
Set Rng = Sheet1.UsedRange.Find("I.", , , xlWhole)
If Not Rng Is Nothing Then
  MsgBox Rng.Address
End If
End Sub
 
Upvote 0
Dựa vào code này bạn có thể tùy biến nhé
PHP:
Sub Timkiem()
Dim Rng As Range
Set Rng = Sheet1.UsedRange.Find("I.", , , xlWhole)
If Not Rng Is Nothing Then
  MsgBox Rng.Address
End If
End Sub
Rồi sau đó mình tiếp tục định dạng và Format bảng tính như thế nào?, anh bấm "Sub Macro2()" là nó ra kết quả em muốn thực hiện!
Cảm ơn anh
 
Upvote 0
Rồi sau đó mình tiếp tục định dạng và Format bảng tính như thế nào?, anh bấm "Sub Macro2()" là nó ra kết quả em muốn thực hiện!
Cảm ơn anh
Bạn xem code này để phát triển thêm nhé
PHP:
Sub DinhDang()
Dim Rng As RangeSet Rng = Sheet1.UsedRange.Find("I.", , , xlWhole)
If Not Rng Is Nothing Then
   Rng.Resize(, Rng.CurrentRegion.Columns.Count).Font.Bold = True
  With Rng.CurrentRegion
    .Borders.Weight = xlThin
    With .Borders(xlInsideHorizontal)
       .LineStyle = xlContinuous
       .Weight = xlHairline
    End With
  End With
End If
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Trong 1 File có nhiều Sheet trong đó có các Sheet như T01, T02, T03 ...
Tại Sheet T02, em muốn lấy số liệu của Sheet T01, nhưng Sheet T01 có Auto Filter nên em muốn Sheet T01 ShowAllData trước khi em thực hiện, thì em phải đặt câu lệnh có cấn trúc như thế nào? để có thể áp dụng chung cho trường hợp "Tại Sheet hiện hành là Tn, em muốn ShowAllData của Sheet Tn-1"
Xin vui lòng giúp em. Cảm ơn!

Bài trên em có viết code như thế này, nhưng chưa được & báo lỗi
Mã:
Sub Thu()
Dim i As Long, Sheeti As Sheets
Sheets("Sheeti").Activate
Sheets("T" & Format(i - 1, "00")).ShowAllData
End Sub
Xin vui lòng sửa giúp em. Cảm ơn!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Trong 1 File có nhiều Sheet trong đó có các Sheet như T01, T02, T03 ...
Tại Sheet T02, em muốn lấy số liệu của Sheet T01, nhưng Sheet T01 có Auto Filter nên em muốn Sheet T01 ShowAllData trước khi em thực hiện, thì em phải đặt câu lệnh có cấn trúc như thế nào? để có thể áp dụng chung cho trường hợp "Tại Sheet hiện hành là Tn, em muốn ShowAllData của Sheet Tn-1"
Xin vui lòng giúp em. Cảm ơn!
Tại sao bạn không show hết nó lên 1 loạt rồi tiến hành lấy dữ liệu mà lại làm khó cho mình thế.
Trong code trên của bạn không bít i bằng bao nhiêu sao mà biết ta muốn showdata ở sheet nào???
 
Lần chỉnh sửa cuối:
Upvote 0
Tại sao bạn không show hết nó lên 1 loạt rồi tiến hành lấy dữ liệu mà lại làm khó cho mình thế.

Vì ngòai cái ShowAllData, em còn áp dụng cho cái khác!

Thầy cô & anh chị có thể giúp em bài #103 & #104, Không biết ý tưởng của em thực hiện được không? Nếu không thì vui lòng hồi âm cho em biết! Em cảm ơn!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
/(/gâm cứu macro dưới xem sao

Thầy cô & anh chị có thể giúp em bài #103 & #104, Không biết ý tưởng của em thực hiện được không? Nếu không thì vui lòng hồi âm cho em biết! Em cảm ơn!

Thực hiện AutoFilter 1 nữa số trang tính của bạn & chạy thử macro sau

PHP:
Option Explicit
Sub ShowAllDatas()
Dim Sh As Worksheet
 For Each Sh In ThisWorkbook.Worksheets
    If IsNumeric(Right(Sh.Name, 2)) Then
        MsgBox Sh.Name, , Sh.AutoFilterMode
    End If
 Next Sh
End Sub

(*) Bạn cần nghiên cứu nhiều hơn về bẫy lỗi trong VBA
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Thực hiện AutoFilter 1 nữa số trang tính của bạn & chạy thử macro sau
(*) Bạn cần nghiên cứu nhiều hơn về bẫy lỗi trong VBA
Sao em chạy code nó báo lỗi. Xin coi lại giùm em!
Trong File em đính kèm có đọan code em mày mò từ sáng đến giờ.
Code của em nó Show tất cả các Sheet Tn. Em muốn đang đứng ở Sheet T03 thì chỉ Show T02 thôi!
Em cảm ơn
 

File đính kèm

Upvote 0
Sao em chạy code nó báo lỗi. Xin coi lại giùm em!
Trong File em đính kèm có đọan code em mày mò từ sáng đến giờ.
Code của em nó Show tất cả các Sheet Tn. Em muốn đang đứng ở Sheet T03 thì chỉ Show T02 thôi!
Em cảm ơn
Bạn thử code này xem:
PHP:
Sub Thu()
On Error Resume Next
Sheets("T" & Format(Right(ActiveSheet.Name, 2) - 1, "00")).ShowAllData
End Sub
 
Upvote 0
Trong 1 File có nhiều Sheet trong đó có các Sheet như T01, T02, T03 ...
Tại Sheet T02, em muốn lấy số liệu của Sheet T01, nhưng Sheet T01 có Auto Filter nên em muốn Sheet T01 ShowAllData trước khi em thực hiện,
Lấy dữ liệu ở sheet khác thì liên quan gì đến tình trạng Filter của sheet đó? Chẳng lẽ nó đang Filter thì bạn không lấy dữ liệu được à?
 
Upvote 0
Lấy dữ liệu ở sheet khác thì liên quan gì đến tình trạng Filter của sheet đó? Chẳng lẽ nó đang Filter thì bạn không lấy dữ liệu được à?

Tại Sh T02, em lập code lấy số dư cuối kỳ của Sh T01, Mặt khác File thực tế của em có dung lượng khá lớn. Nếu T01 có ẩn dòng mà chạy code, nó treo máy luôn, và ngược lại
Em cảm ơn!
 
Upvote 0
Tại Sh T02, em lập code lấy số dư cuối kỳ của Sh T01, Mặt khác File thực tế của em có dung lượng khá lớn. Nếu T01 có ẩn dòng mà chạy code, nó treo máy luôn, và ngược lại
Em cảm ơn!

Vậy thì vấn đề nằm ở code của bạn... Dung lương chỉ là 1 phần ảnh hưởng đến tốc độ thôi, nếu code viết tốt, dung lương bao nhiêu cũng phải chạy.. vèo vèo
Việc bây giờ là phải xem lại toàn bộ giải thuật trong code chứ không phải đi giải quyết theo kiểu "cố chống"
 
Upvote 0
Nếu T01 có ẩn dòng mà chạy code, nó treo máy luôn, và ngược lại
treo máy không phải do AutoFilter, mà do chính code đang thực thi.
Bạn cho xem đoạn code chính của bạn đi. Nếu Code đúng chuẩn thì chẳng cần activate sheet, không cần xả Filter, không cần xả dòng cột ẩn, ... cũng lấy được dữ liệu.

Ghi chú:
1. Cần phải bẫy lỗi:
- Hoặc xét điều kiện nếu đang AutoFilter thì mớ xả ra, không thì thôi
- hoặc dùng câu lệnh xả AutoFilter khác như:

If Sh.AutoFilterMode = True Then Sh.Cells.AutoFilter

2. Bạn thực nghiệm xả AutoFilter, mà sheet thực nghiệm không dùng AutoFilter, chỉ ẩn dòng đơn thuần. MUốn thử nghiệm vũ khí mới thì phải tạo hiện trường giống thật mới thử được chứ?
 
Upvote 0
Bạn thử gửi file bạn test mà không được lên tôi xem sao.
Anh xem File đính kèm. Em cảm ơn !

Vậy thì vấn đề nằm ở code của bạn... Dung lương chỉ là 1 phần ảnh hưởng đến tốc độ thôi, nếu code viết tốt, dung lương bao nhiêu cũng phải chạy.. vèo vèo
Việc bây giờ là phải xem lại toàn bộ giải thuật trong code chứ không phải đi giải quyết theo kiểu "cố chống"

ptm0412 đã viết:
treo máy không phải do AutoFilter, mà do chính code đang thực thi.
Bạn cho xem đoạn code chính của bạn đi. Nếu Code đúng chuẩn thì chẳng cần activate sheet, không cần xả Filter, không cần xả dòng cột ẩn, ... cũng lấy được dữ liệu.

Ghi chú:
1. Cần phải bẫy lỗi:
- Hoặc xét điều kiện nếu đang AutoFilter thì mớ xả ra, không thì thôi
- hoặc dùng câu lệnh xả AutoFilter khác như:

If Sh.AutoFilterMode = True Then Sh.Cells.AutoFilter

2. Bạn thực nghiệm xả AutoFilter, mà sheet thực nghiệm không dùng AutoFilter, chỉ ẩn dòng đơn thuần. MUốn thử nghiệm vũ khí mới thì phải tạo hiện trường giống thật mới thử được chứ?
Em cảm ơn các thầy đã hướng dẫn, em sẽ xét lại code của em.

Bạn thử gửi file bạn test mà không được lên tôi xem sao.

A, em hiểu rồi, vì em nghỉ che dòng & cột nó giống như Filter, nên áp dụng code của các thầy cô không được.
Em cảm ơn thầy cô & anh chị đã giúp em.
Xin đừng la em nha!
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Các anh cho em hỏi muốn tạo một theard mới trong diễn đàn thì làm như thế nào ? Em cám ơn và xin lỗi chủ thớt vì nếu đặt câu hỏi không đúng chỗ. ^^
 
Upvote 0
A, em hiểu rồi, vì em nghỉ che dòng & cột nó giống như Filter, nên áp dụng code của các thầy cô không được.
Em cảm ơn thầy cô & anh chị đã giúp em.
Xin đừng la em nha!
Chính xác là chế ra súng ngắn cá nhân mà thử nghiệm vào xe tăng.
 
Upvote 0
Web KT

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

Back
Top Bottom