Hỏi lý do cú pháp Range().select không làm việc

Liên hệ QC

khacbao72

Thành viên mới
Tham gia
23/6/08
Bài viết
29
Được thích
18
Vì không để ý nên không ghi rõ tiêu đề, xin nhờ lại lần nữa.;;;;;;;;;;;

Tôi có viết một marcro để link hai file Excel nhưng không hiểu sao lệnh Range().select không có tác dụng. Xin gởi kèm file để các anh chị giúp.

P/S
Xin miêu tả mong ý định của tôi như sau:

Sau khi nhập dự liệu cho file gui.xls , bấm OK , tôi mong muốn toàn bộ dự liệu in ra PDF đồng thời lưu lại thông tin lên file "Quotationrecord.xls".
Vấn đề tôi đang gặp là không thể thiết lập được ô tham chiếu trên file này.
 

File đính kèm

  • gui.xls
    57.5 KB · Đọc: 8
  • Quotation record.xls
    20 KB · Đọc: 3
Tất cả các macro của bạn đều do ghi lại, vì thế khó có thể đáp ứng được nhu cầu.
Khi muốn liên kết đến một địa chỉ nào đó, bạn cần phải có địa chỉ cụ thể, rõ ràng.

Ví dụ tại Workbook WB1 muốn chạy macro để mở Workbook WB2 và tại Sheet SSS của workbook này để chọn cell A1 thì bạn phải ghi đầy đủ các thông tin về địa chỉ:
PHP:
Workbooks("WB2").Sheets("SSS").Range("A1").Select

Hơn thế nữa, bạn cần bỏ các Select và thực hiện trực tiếp lên các địa chỉ sẽ nhanh hơn, chẳng hạn:

Thay vì:
PHP:
    Range("F6").Select
    ActiveCell.FormulaR1C1 = "2.30E+06"

Thì nên:
PHP:
Range("F6").FormulaR1C1 = "2.30E+06"


Với thủ tục Macro4 của bạn, tôi tạm sửa lại như sau:
PHP:
Sub Macro4()
    On Error Resume Next
    Sheets("Sheet1").Range("G2").FormulaR1C1 = "1010"
    ActiveWindow.SmallScroll Down:=24
    Workbooks.Open Filename:="L:\Projects\Quotation Projects\Quotation record.xls"
    With ActiveWorkbook.Sheets("Sheet1").Range("B6")
        .FormulaR1C1 = "test"
        .Offset(, 1).FormulaR1C1 = "1/31/2012"
        .Offset(, 2).FormulaR1C1 = "97"
        .Offset(, 3).FormulaR1C1 = "2032"
        .Offset(, 4).FormulaR1C1 = "2.30E+06"
        .Offset(, 5).FormulaR1C1 = "144.18"
        .Offset(, 6).FormulaR1C1 = "0"
        End With
    Windows("Erection price analysis.xls").Activate
End Sub

Mấy Macro khác bạn có thể xem và sửa lại tương tự.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Bạn đã giúp.
Sẳn tiện nếu không phiền, ban cho minh hỏi cũng trong 02 file minh gửi kèm , khi thực hiện bấm nút commmand button(OK) , máy sẽ tạo ra một thư mục mà mong muốn. Tuy nhiên khi đã có thư mục này tôn tại trên máy, chưong trình sẽ báo lỗi. Có cách nào yêu cầu chương trình thông báo TM đã tồn tại, hỏi có muốn sử dụng tiếp hay không ?
nếu đồng ý thì sử dựng tiếp còn không thì tạo mới?
Chân Thành cảm ơn.
 
Upvote 0
Cảm ơn Bạn đã giúp.
Sẳn tiện nếu không phiền, ban cho minh hỏi cũng trong 02 file minh gửi kèm , khi thực hiện bấm nút commmand button(OK) , máy sẽ tạo ra một thư mục mà mong muốn. Tuy nhiên khi đã có thư mục này tôn tại trên máy, chưong trình sẽ báo lỗi. Có cách nào yêu cầu chương trình thông báo TM đã tồn tại, hỏi có muốn sử dụng tiếp hay không ?
nếu đồng ý thì sử dựng tiếp còn không thì tạo mới?
Chân Thành cảm ơn.
Bạn nghiên cứu ở link sau:
http://www.rondebruin.nl/folder.htm
Hay tham khảo code sau.
PHP:
Function FolderExists(ByVal FolderName As String) As Boolean
Application.Volatile
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
FolderExists = FSO.FolderExists(FolderName)
End Function
Sub CreateFolder()
Dim fName$, Answer$
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
fName = [A1]
If Not FolderExists(fName) Then
  FSO.CreateFolder fName
Else
  Answer = MsgBox("Do you want to continue ?", vbOKCancel, "My Title")
  If Answer = vbCancel Then
    Exit Sub
  Else
    FSO.CreateFolder fName & "backup"
  End If
End If

End Sub
 
Upvote 0
Cảm ơn Bạn đã giúp.
Sẳn tiện nếu không phiền, ban cho minh hỏi cũng trong 02 file minh gửi kèm , khi thực hiện bấm nút commmand button(OK) , máy sẽ tạo ra một thư mục mà mong muốn. Tuy nhiên khi đã có thư mục này tôn tại trên máy, chưong trình sẽ báo lỗi. Có cách nào yêu cầu chương trình thông báo TM đã tồn tại, hỏi có muốn sử dụng tiếp hay không ?
nếu đồng ý thì sử dựng tiếp còn không thì tạo mới?
Chân Thành cảm ơn.

Tôi không biết bạn ứng dụng như thế nào, nhưng code dưới đây bạn có thể làm được điều đó nếu bạn tùy biến:

Mã:
Sub CopyNewFile()
    On Error Resume Next
    Application.ScreenUpdating = False: Application.EnableEvents = False: Application.DisplayAlerts = False
    Dim DuongDan As String, MyFile As String
    DuongDan = ThisWorkbook.Path & "\" & "YourFolderName"
    MyFile = "YourFileName.xls"
    With CreateObject("Scripting.FileSystemObject")
        If .FileExists(DuongDan) = False Then .CreateFolder (DuongDan)
    End With
    With ActiveWorkbook
        .SaveAs Filename:=DuongDan & "\" & MyFile, FileFormat:=xlNormal
        .Close
    End With
    Application.DisplayAlerts = True: Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub
 
Upvote 0
Web KT
Back
Top Bottom