Hỏi đáp VBA trong chủ đề "Chập chững đến VBA" (1 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

Dạ em muốn tìm dữ liệu không trùng lập trong 1 cột.......
1.đếm số
2. show ra giá trị không trùng lặp

Thanks sư phụ....

Tức là cái nào không trùng với bất cứ cái nào trong dữ liệu thì lấy ra? Hay là sao?
Nếu trích những cái không trùng với ai thì nó chỉ có 1, đếm số gì chứ?
Hay bạn muốn trích lọc duy nhất đây? Tức dù trùng hay không trùng cũng chỉ lấy một?
Nếu vẫn chưa đúng ý bạn, tốt nhất bạn ghi kết quả bạn muốn vào file luôn đi (mô tả gì mà khó hiểu quá)
 
Upvote 0
Dạ để em mô tả thành file cho sư phụ dễ đọc vậy
 

File đính kèm

Upvote 0
Dạ để em mô tả thành file cho sư phụ dễ đọc vậy
dùng cái code này thử xem
Public Sub LOC()
Dim Dic, I As Long, Temp
Temp = Sheet1.Range([E5], [E60000].End(xlUp)).Value
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(Temp)
If Not Dic.Exists(Temp(I, 1)) Then
Dic.Add Temp(I, 1), ""
End If
Next
[H5].Resize(Dic.Count) = Application.WorksheetFunction.Transpose(Dic.keys)
End Sub

thêm cái này nữa
Sub filter()
Dim Colect As Collection, i As Long, Arr As Variant
Application.ScreenUpdating = False
On Error Resume Next
With Sheet1
.Range("h5:h65500").Clear
Arr = .Range("e5:e65500").Value
Set Colect = New Collection
For i = 1 To UBound(Arr, 1)
Colect.Add Arr(i, 1), Arr(i, 1)
Next
For i = 1 To Colect.Count
.Cells(i + 4, "h") = Colect(i)
Next
End With
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cho em hỏi, có thể rút ngắn đoạn Code này không
PHP:
ActiveSheet.Range("G12").Formula = "=MAX(C12-D12+E12-F12,0)"
ActiveSheet.Range("G14").Formula = "=MAX(C14-D14+E14-F14,0)"
ActiveSheet.Range("G20").Formula = "=MAX(C20-D20+E20-F20,0)"
...
Em xin cảm ơn!
 
Upvote 0
Cho em hỏi, có thể rút ngắn đoạn Code này không
PHP:
ActiveSheet.Range("G12").Formula = "=MAX(C12-D12+E12-F12,0)"
ActiveSheet.Range("G14").Formula = "=MAX(C14-D14+E14-F14,0)"
ActiveSheet.Range("G20").Formula = "=MAX(C20-D20+E20-F20,0)"
...
Em xin cảm ơn!
Không tuân theo quy luật khì khó rút ngắn, chỉ được
PHP:
With ActiveSheet
  .Range("G12").Formula = "=MAX(C12-D12+E12-F12,0)"
  .Range("G14").Formula = "=MAX(C14-D14+E14-F14,0)"
  .Range("G20").Formula = "=MAX(C20-D20+E20-F20,0)"
End With
 
Upvote 0
Không tuân theo quy luật khì khó rút ngắn, chỉ được
PHP:
With ActiveSheet
  .Range("G12").Formula = "=MAX(C12-D12+E12-F12,0)"
  .Range("G14").Formula = "=MAX(C14-D14+E14-F14,0)"
  .Range("G20").Formula = "=MAX(C20-D20+E20-F20,0)"
End With

Được chứ!
PHP:
With ActiveSheet
  Union(.[G12], .[G14], .[G20]).FormulaR1C1 = "=MAX(RC3-RC4+RC5-RC6,0)"
End With
 
Upvote 0
Cho em hỏi thêm!
PHP:
Range("A1").Copy range("C1")
Em chỉ muốn copy công thức của A1, chứ không muốn copy Format thì em phải thêm gì vào code?
Xin cảm ơn!
 
Upvote 0
Cho em hỏi thêm!
PHP:
Range("A1").Copy range("C1")
Em chỉ muốn copy công thức của A1, chứ không muốn copy Format thì em phải thêm gì vào code?
Xin cảm ơn!
Code này là copy tất cả (công thức, format..)
Nếu copy công thức không thôi:
PHP:
Range("A1").Copy
Range("C1").PasteSpecial xlPasteFormulas
Hay là tham khảo thêm hình thuộc tính khác
Copy.JPG
 
Lần chỉnh sửa cuối:
Upvote 0
Thầy cô & anh chị cho em hỏi
Giả sử em đang đứng ở Sheet1, em muốn Show lại tất cả dòng cột bị ẩn hoặc Filter của một số Sheet (vídụ: Sheet2, Sheet3) thì dùng câu lệnh gì?
Em cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Được chứ!
PHP:
With ActiveSheet
  Union(.[G12], .[G14], .[G20]).FormulaR1C1 = "=MAX(RC3-RC4+RC5-RC6,0)"
End With
Như anh ViecHoai đã nói, Bài này thực sự không có công thức tổng quát, em nghĩ là đúng.?!!! cách làm của anh ndu cũng chỉ rút gọn được ít dòng code thôi chứ không có thể dùng các dòng lập duyệt qua tự động.(nếu dữ liệu nhiều thì không thể liệt kê từng cột từng cột)
 
Upvote 0
Như anh ViecHoai đã nói, Bài này thực sự không có công thức tổng quát, em nghĩ là đúng.?!!! cách làm của anh ndu cũng chỉ rút gọn được ít dòng code thôi chứ không có thể dùng các dòng lập duyệt qua tự động.(nếu dữ liệu nhiều thì không thể liệt kê từng cột từng cột)
Nguyên tắc: Chỉ cần các cell chứa công thức có thể copy/paste qua lại với nhau là hoàn toàn có thể viết 1 code duy nhất
Trong thực tế, các cell mà ta dự định đặt công thức chúng phải có đặt điểm gì đó chứ (Chẳng hạn chúng đang là những cell rổng)... Vì thế hoàn toàn có thể sử dụng 1 giải pháp nào đó mà không cần phải vòng lập (ví dụ là SpecialCells)
 
Upvote 0
Bold dòng

Nhờ thầy cô & anh chị hướng dẫn, em muốn Bold các dòng dưới thì làm thế nào
PHP:
.Offset(.Rows.Count)(1, 3) = "Cong phat sinh"
.Offset(.Rows.Count)(2, 3) = "Hieu Truong"
Em làm thế này nó cự nự!
PHP:
.Offset(.Rows.Count)(1, 3) = "Cong phat sinh".Font.Bold
.Offset(.Rows.Count)(2, 3) = "Hieu Truong".Font.Bold
Cảm ơn!
 
Upvote 0
Bạn thử thế này coi :
PHP:
.Offset(.Rows.Count)(1, 3) = "Cong phat sinh"
.Offset(.Rows.Count)(1, 3).Font.Bold = true
.Offset(.Rows.Count)(2, 3) = "Hieu Truong" 
.Offset(.Rows.Count)(2, 3).Font.Bold = true
Vì bạn không viết chi tiết CODE nên mình sửa tạm thế
này, tự kết hợp cho ngắn nhé!
 
Upvote 0
Vì bạn không viết chi tiết CODE nên mình sửa tạm thế
này, tự kết hợp cho ngắn nhé!

PHP:
.Offset(.Rows.Count)(1, 5) = Evaluate("Sum(" & .Offset(, 4).Resize(, 1).Address & ")")
.Offset(.Rows.Count)(1, 6) = Evaluate("Sum(" & .Offset(, 5).Resize(, 1).Address & ")")
.Offset(.Rows.Count)(1, 7) = Evaluate("Sum(" & .Offset(, 6).Resize(, 1).Address & ")")
.Offset(.Rows.Count)(1, 8) = Evaluate("Sum(" & .Offset(, 7).Resize(, 1).Address & ")")
Muốn Bold các cells trên, thì có thể rút ngắn được không?
Cảm ơn
 
Upvote 0
PHP:
.Offset(.Rows.Count)(1, 5) = Evaluate("Sum(" & .Offset(, 4).Resize(, 1).Address & ")")
.Offset(.Rows.Count)(1, 6) = Evaluate("Sum(" & .Offset(, 5).Resize(, 1).Address & ")")
.Offset(.Rows.Count)(1, 7) = Evaluate("Sum(" & .Offset(, 6).Resize(, 1).Address & ")")
.Offset(.Rows.Count)(1, 8) = Evaluate("Sum(" & .Offset(, 7).Resize(, 1).Address & ")")
Muốn Bold các cells trên, thì có thể rút ngắn được không?
Cảm ơn
Bạn thử thay đoạn trên thành thế này :
PHP:
For i = 5 to 8
  .Offset(.Rows.Count)(1, i) = Evaluate("Sum(" & .Offset(, i-1).Resize(, 1).Address & ")")
  .Offset(.Rows.Count)(1, i).Font.Bold = True
Next
Vì bạn chỉ trích một đoạn nên tôi đành sửa vậy!
 
Lần chỉnh sửa cuối:
Upvote 0
Giúp câu lệnh xóa định dạng đóng khung (Bỏder)!

Thầy cô & anh chị giúp em câu lệnh xóa định dạng đóng khung!
PHP:
Sh2.Range("A11:J6000").ClearContents
    Sh2.Range("A11:J6000").ClearFormats
.ClearFormats là xóa toàn bộ Formats, em muốn xóa đóng khung, giữ lại các định dạng khác!
Em cảm ơn!
 
Upvote 0
Thầy cô & anh chị giúp em câu lệnh xóa định dạng đóng khung!
PHP:
Sh2.Range("A11:J6000").ClearContents
    Sh2.Range("A11:J6000").ClearFormats
.ClearFormats là xóa toàn bộ Formats, em muốn xóa đóng khung, giữ lại các định dạng khác!
Em cảm ơn!
Thực ra bạn record cũng được code mà bạn
PHP:
Sh2.Range("A11:J6000").Borders.LineStyle = xlNone
 
Upvote 0
Định vị bảng tính, để định dạng & Format!

Em có một bảng tính, (không cố định, có thể dịch chuyển lên xuống, trái phải)
Em Record Macro bằng cách, bẩm tổ hợp Ctrl+F tìm "I.", sau đó định dạng & Format bằng tay. Thực tế thì bảng tính kg cố định, em muốn Học cách định vị để định dạng và Format nó.
Em cảm ơn
 

File đính kèm

Upvote 0
Bạn muốn tìm "I." sau đó định dạng cả vùng phía dưới bằng CODE à??? Nếu vậy thì tôi thấy dữ liệu bạn cho chưa tổng quát, vì "I." xuất hiện một lần tạivị trí ta đã biết.
 
Upvote 0
Web KT

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

Back
Top Bottom