Hỏi nhanh - Đáp nhanh về macro (dành cho các thành viên mới học lập trình)

Liên hệ QC

tuananhya2

Thành viên mới
Tham gia
18/8/12
Bài viết
8
Được thích
0
Co ai chỉ dùm cách tạo pass marco với
 
Thật là nhiều cách để giải quyết vấn đề :D cảm ơn các bạn các anh rất nhiều :X
 
Upvote 0
Các anh chị trong GPE cho mình hỏi : làm thế nào để thay đổi tên module1 ( trong VBA ) thành tên khác được không ?
Ví dụ Module1 --> rename thành abcxyz ....?
 
Upvote 0
Khi đóng File thì muốn Excel trả về chế độ Automatic
-------------------------------------------------------
Em có 1 File Excel khi mở thì đưa về chế độ Application.Calculation = xlCalculationManual
Khi đóng file thì em muốn nó trở về chế độ Application.Calculation = xlCalculationAutomatic
Nhưng thực tế khi đóng file thì nó vẫn ở chế độ Manual
Code trong Thisworkbook
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    Application.Calculation = xlCalculationAutomatic
    If Chk = False Then
        Cancel = True
        
        Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("tb_2") & """,2)")
    Else
        If Workbooks.Count = 1 Then ThisWorkbook.Close
        
    End If
    Application.Caption = ""
    
End Sub
Private Sub Workbook_Open()
    Sheets("Main").Select
    
    Application.Calculation = xlCalculationManual
End Sub
Vui lòng giúp em sửa code để khi đóng file thì trả về chế độ Automatic
em cảm ơn
 

File đính kèm

  • ThuNghiem.xls
    27 KB · Đọc: 10
Upvote 0
Khi đóng File thì muốn Excel trả về chế độ Automatic
-------------------------------------------------------
Em có 1 File Excel khi mở thì đưa về chế độ Application.Calculation = xlCalculationManual
Khi đóng file thì em muốn nó trở về chế độ Application.Calculation = xlCalculationAutomatic
Nhưng thực tế khi đóng file thì nó vẫn ở chế độ Manual
Code trong Thisworkbook
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    [COLOR=#ff0000]Application.Calculation = xlCalculationAutomatic[/COLOR]
    If Chk = False Then
        Cancel = True
        
        Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("tb_2") & """,2)")
    Else
        If Workbooks.Count = 1 Then ThisWorkbook.Close
        
    End If
    Application.Caption = ""
    
End Sub
Private Sub Workbook_Open()
    Sheets("Main").Select
    
    Application.Calculation = xlCalculationManual
End Sub
Vui lòng giúp em sửa code để khi đóng file thì trả về chế độ Automatic
em cảm ơn
Dòng màu đỏ bạn cho vào Sub CloseWb là được rồi
 
Upvote 0
Dòng màu đỏ bạn cho vào Sub CloseWb là được rồi
Em đã cho vào sao chưa thấy có kết qủa
Thầy xem giúp em
Mã:
Sub CloseWb()

    Dim Ans As Long
    With CreateObject("WScript.Shell")
        Ans = .Popup(Evaluate("tb_1"), , "THÔNG BÁO", vbYesNoCancel)
    End With
    If Ans <> 2 Then
        Chk = True
        ThisWorkbook.Close (Ans = 6)
       [COLOR=#0000ff][B] Application.Calculation = xlCalculationAutomatic[/B][/COLOR]
    End If
    
End Sub
 
Upvote 0
Em đã cho vào sao chưa thấy có kết qủa
Thầy xem giúp em
Mã:
Sub CloseWb()

    Dim Ans As Long
    With CreateObject("WScript.Shell")
        Ans = .Popup(Evaluate("tb_1"), , "THÔNG BÁO", vbYesNoCancel)
    End With
    If Ans <> 2 Then
        Chk = True
        ThisWorkbook.Close (Ans = 6)
       [COLOR=#0000ff][B] Application.Calculation = xlCalculationAutomatic[/B][/COLOR]
    End If
    
End Sub

Dòng màu xanh phải cho lên phía trên chứ sao lại nằm ở dưới thế
Mã:
Sub CloseWb()

    Dim Ans As Long
    With CreateObject("WScript.Shell")
        Ans = .Popup(Evaluate("tb_1"), , "THÔNG BÁO", vbYesNoCancel)
    End With
    If Ans <> 2 Then
        [COLOR=#0000ff][B] Application.Calculation = xlCalculationAutomatic[/B][/COLOR]
        Chk = True
        ThisWorkbook.Close (Ans = 6)
    End If
    
End Sub
 
Upvote 0
nhờ các anh giúp em vấn đề này:

em muốn mỗi khi mình nhấn button thì dữ liệu ở bảng sheet1 sẽ cập nhật liên tục thành dòng sang sheet 2. em cảm ơn!
 

File đính kèm

  • test_luudulieu.xls
    16.5 KB · Đọc: 13
Upvote 0
nhờ các anh giúp em vấn đề này:

em muốn mỗi khi mình nhấn button thì dữ liệu ở bảng sheet1 sẽ cập nhật liên tục thành dòng sang sheet 2. em cảm ơn!

Vì đây là topic hỏi nhanh - đáp nhanh --> cũng thử đáp nhanh xem thế nào ?

Assign Macro đoạn code sau vào nút click của bạn :
[GPECODE=vb]
Sub ABC()
With Sheet2.[A65536].End(3).Offset(1)
.NumberFormat = "m/d/yyyy": .Value = [B5]
.Offset(, 1) = [B6]
.Offset(, 2).NumberFormat = "#,##0 ""d"""
.Offset(, 2) = [B9]
End With
End Sub
[/GPECODE]
 
Upvote 0
cảm ơn hungpecc1 giúp em thêm cái cột số thứ tự ở đầu nhé!
 
Upvote 0
Thực ra dùng công thức cũng được mà bạn
Mình cũng thấy bài này dùng công thức vừa gọn nhẹ, lại thông dụng ----> hay bây giờ xu thế là phải phức tạp, màu mè cho giống chuyên nghiệp nhj ?

" Hình thức quyết đinh nội dung " hay " nội dung quyết định hình thức " nhỉ ?
_)()(-_)()(-
 
Upvote 0
Xu thế Xulubu hạy Buluxu gì cũng được mà. Người ta nhờ thêm STT thì thêm STT.
Híc!
 

File đính kèm

  • BuLuXu.rar
    8.4 KB · Đọc: 15
Upvote 0
Hì mình thấy dùng macros gọn hơn và hiệu quả hơn mà ! cảm ơn mọi người!
 
Upvote 0
Chào mọi người!
cho em hỏi ở các topic trước mọi người bảo muốn hiểu về macro thì nhấn Alt+ F11 tìm hiểu. nhưng em mở ra toàn tiếng anh không à. xem ko hiểu gì hết? mọi người ai biết chỉ dùm mình với ạ?
 
Upvote 0
Chào mọi người!
cho em hỏi ở các topic trước mọi người bảo muốn hiểu về macro thì nhấn Alt+ F11 tìm hiểu. nhưng em mở ra toàn tiếng anh không à. xem ko hiểu gì hết? mọi người ai biết chỉ dùm mình với ạ?
Alt + F11 sẽ dẫn bạn vào cửa sổ VBE, là nơi để bạn code. Nó giống như là một môi trường để bạn làm việc chứ nó không có cái hướng dẫn cho bạn làm gì cụ thể cả.

Nếu bạn muốn tìm hiểu về VBA, bạn cần biết bạn phải làm gì, rồi bạn có thể mày mò thông qua sách vở, qua diễn đàn GPE, thông qua các trang web Excel khác, và thực hành tại chính VBE. Ngoài ra bạn có thể tham khảo thêm Help của Excel nữa.
 
Upvote 0
hỏi về cách sử dụng mảng:
chào mọi người tôi đang học mảng trong vba, sao thấy khó nuốt. anh chị chỉ giúp đoạn code sau

Sub Array_sao_kho_qua()

Dim l As Long, m As Long
vArr = Range("A1:B10").Value
For l = LBound(vArr, 1) To UBound(vArr, 1)
For m = LBound(vArr, 2) To UBound(vArr, 2)
If vArr(l, m) = "heo" Then
''''viet gi o day
End If
Next m
Next l

Range("C10:D20").Value = vArr

End Sub

bây giời tôi muốn, cái nào bên cột A là "heo" thì chép nó qua C10:C?
 

File đính kèm

  • ARRAY.xls
    22.5 KB · Đọc: 4
Upvote 0
hỏi về cách sử dụng mảng:
chào mọi người tôi đang học mảng trong vba, sao thấy khó nuốt. anh chị chỉ giúp đoạn code sau

Sub Array_sao_kho_qua()

Dim l As Long, m As Long
vArr = Range("A1:B10").Value
For l = LBound(vArr, 1) To UBound(vArr, 1)
For m = LBound(vArr, 2) To UBound(vArr, 2)
If vArr(l, m) = "heo" Then
''''viet gi o day
End If
Next m
Next l

Range("C10:D20").Value = vArr

End Sub

bây giời tôi muốn, cái nào bên cột A là "heo" thì chép nó qua C10:C?

Mình thì cũng mới học VBA --> nên không đủ trình độ để nhận xét hay sửa code của bạn
Nhưng nếu để thực hiện yêu cầu như bạn thì mình sẽ viết code như sau :
[GPECODE=vb]
Sub Array_Kho_qua_sao()
Dim i As Long, n As Long
Dim Arr, tmparr
tmparr = [A1:B9].Value
ReDim Arr(1 To UBound(tmparr, 1), 1 To 2)
For i = 1 To UBound(tmparr, 1)
If tmparr(i, 1) = "heo" Then
n = n + 1
Arr(n, 1) = tmparr(i, 1)
Arr(n, 2) = tmparr(i, 2)
End If
Next
[C1].Resize(n, 2) = Arr
End Sub
[/GPECODE]
 
Upvote 0
hỏi về cách sử dụng mảng:
chào mọi người tôi đang học mảng trong vba, sao thấy khó nuốt. anh chị chỉ giúp đoạn code sau

Sub Array_sao_kho_qua()

Dim l As Long, m As Long
vArr = Range("A1:B10").Value
For l = LBound(vArr, 1) To UBound(vArr, 1)
For m = LBound(vArr, 2) To UBound(vArr, 2)
If vArr(l, m) = "heo" Then
''''viet gi o day
End If
Next m
Next l

Range("C10:D20").Value = vArr

End Sub

bây giời tôi muốn, cái nào bên cột A là "heo" thì chép nó qua C10:C?
Chắc là vầy chăng:
Mã:
Sub Array_sao_kho_qua()
  Dim tmp, arr, vArr
  Dim lR As Long, lC As Long, n As Long
  vArr = Range("A1:B10").Value
  ReDim arr(1 To UBound(vArr, 1), 1 To UBound(vArr, 2))
  For lR = LBound(vArr, 1) To UBound(vArr, 1)
    tmp = vArr(lR, 1)
    If tmp = "heo" Then
      n = n + 1
      For lC = LBound(vArr, 2) To UBound(vArr, 2)
        arr(n, lC) = vArr(lR, lC)
      Next
    End If
  Next
  If n Then Range("C1:D1").Resize(n).Value = arr
End Sub
 
Upvote 0
cám ơn 2 anh, tôi bắt đầu dzọc vba gần năm rùi, mà nón nay đúng là khó nuốt quá. hồi trước tới giờ né nó luôn...hi,...hi. bi giờ thử học coi có làm nổi ko....còn khó quà thì thui...hi..hi
tôi có đọc một số bài của tác giả lê văn việt, nhưng càng đọc càng lùng bùng
cái gì mà dim rùi lại redim, rùi mảng một chiều 2 chiều.....
thử học xem có làm được ko, có gì nhờ các anh chỉ dạy.....
cám ơn các anh nhiều.
 
Upvote 0
Web KT
Back
Top Bottom