In một trang nào đó của một sheet

Liên hệ QC

chothadiem

Thành viên hoạt động
Tham gia
29/10/18
Bài viết
188
Được thích
50
Xin chào các bạn!
Mình xin được sự giúp đỡ của các bạn :
Khi mình dùng code để in một sheet thì sẽ in tất cả các trang của sheet đó.
Mã:
Private Sub CommandButton1_Click()
Dim sobatdau As Integer
Dim soketthuc As Integer
sobatdau = txtsobatdau.Text
soketthuc = txtsoketthuc.Text

Dim i As Integer

For i = sobatdau To soketthuc Step 1
Sheet1.Range("A14").Value = i
Sheet20.PrintOut

Next

End Sub

Private Sub UserForm_Click()

End Sub
Gió mình muốn in một hay hai hoặc in các trang bất kỳ nào đó của sheet, mong các bạn giúp mình.
Xin cảm ơn, mong sự hồi âm.
 

File đính kèm

  • Mau.xls
    2.1 MB · Đọc: 13
bạn muốn sao nói rõ hơn xem, nhìn file k hiểu
Dạ! Em in tự động các số thứ tự ở cột A, khi in thì đều in 2 trang, giờ em muốn in chỉ trang thứ nhất hoặc trang thứ hai thôi thì chỉnh đoạn code trên thế nào ạ?
bạn muốn sao nói rõ hơn xem, nhìn file k hiểu
Dạ! Em chạy code thì in theo số thứ tự “ từ số .... đến số....”
Khi chạy để in mỗi số thứ tự thì đều in 2 trang, trang số 01 và số 02.
Giờ em muốn chỉ in ra trang số 01 hoặc trang số 02 mà không in cả 02 trang như khi chạy code trên. Thì phải chỉnh sửa đoạn code như thế nào ạ?
 
Dạ! Em in tự động các số thứ tự ở cột A, khi in thì đều in 2 trang, giờ em muốn in chỉ trang thứ nhất hoặc trang thứ hai thôi thì chỉnh đoạn code trên thế nào ạ?

Dạ! Em chạy code thì in theo số thứ tự “ từ số .... đến số....”
Khi chạy để in mỗi số thứ tự thì đều in 2 trang, trang số 01 và số 02.
Giờ em muốn chỉ in ra trang số 01 hoặc trang số 02 mà không in cả 02 trang như khi chạy code trên. Thì phải chỉnh sửa đoạn code như thế nào ạ?
Sửa lại Code của Bạn 1 tẹo thôi
PHP:
Private Sub CommandButton1_Click()
    Dim sobatdau As Integer
    Dim soketthuc As Integer
    Dim i As Integer
sobatdau = Val(txtsobatdau.Text)
soketthuc = Val(txtsobatdau.Text)
If Val(txtsoketthuc) <> Empty And Val(txtsoketthuc) <> Empty Then
    If Val(txtsoketthuc) >= Val(txtsoketthuc) Then
        For i = sobatdau To soketthuc Step 1
            Sheet1.Range("A14").Value = i
            Sheet20.PrintOut
        Next
    End If
Else
    MsgBox "No No ti Ca"
End If
End Sub
Nếu muốn in 1 trang thì nhập txtsobatdau, txtsobatdau bằng trang đó
1545920840964.png
Bài đã được tự động gộp:

Sửa lại Code của Bạn 1 tẹo thôi
PHP:
Private Sub CommandButton1_Click()
    Dim sobatdau As Integer
    Dim soketthuc As Integer
    Dim i As Integer
sobatdau = Val(txtsobatdau.Text)
soketthuc = Val(txtsobatdau.Text)
If Val(txtsoketthuc) <> Empty And Val(txtsoketthuc) <> Empty Then
    If Val(txtsoketthuc) >= Val(txtsoketthuc) Then
        For i = sobatdau To soketthuc Step 1
            Sheet1.Range("A14").Value = i
            Sheet20.PrintOut
        Next
    End If
Else
    MsgBox "No No ti Ca"
End If
End Sub
Nếu muốn in 1 trang thì nhập txtsobatdau, txtsobatdau bằng trang đó
1545920840964.png
Í Nhầm rồi. Để lát nữa mình tìm Link của Anh @befaint bạn thử xem nha
Đấy rồi. Tìm mãi mới thấy: https://www.giaiphapexcel.com/diendan/threads/add-ins-cho-phép-chọn-in-nhiều-sheets-một-lúc.112451/
Bạn tự sào nấu thêm nha
 
Lần chỉnh sửa cuối:
Sửa lại Code của Bạn 1 tẹo thôi
PHP:
Private Sub CommandButton1_Click()
    Dim sobatdau As Integer
    Dim soketthuc As Integer
    Dim i As Integer
sobatdau = Val(txtsobatdau.Text)
soketthuc = Val(txtsobatdau.Text)
If Val(txtsoketthuc) <> Empty And Val(txtsoketthuc) <> Empty Then
    If Val(txtsoketthuc) >= Val(txtsoketthuc) Then
        For i = sobatdau To soketthuc Step 1
            Sheet1.Range("A14").Value = i
            Sheet20.PrintOut
        Next
    End If
Else
    MsgBox "No No ti Ca"
End If
End Sub
Nếu muốn in 1 trang thì nhập txtsobatdau, txtsobatdau bằng trang đó
Bài đã được tự động gộp:


Í Nhầm rồi. Để lát nữa mình tìm Link của Anh @befaint bạn thử xem nha
Đấy rồi. Tìm mãi mới thấy: https://www.giaiphapexcel.com/diendan/threads/add-ins-cho-phép-chọn-in-nhiều-sheets-một-lúc.112451/
Bạn tự sào nấu thêm nha
Thanks chị xinh gái!
Bài đã được tự động gộp:

Sửa lại Code của Bạn 1 tẹo thôi
PHP:
Private Sub CommandButton1_Click()
    Dim sobatdau As Integer
    Dim soketthuc As Integer
    Dim i As Integer
sobatdau = Val(txtsobatdau.Text)
soketthuc = Val(txtsobatdau.Text)
If Val(txtsoketthuc) <> Empty And Val(txtsoketthuc) <> Empty Then
    If Val(txtsoketthuc) >= Val(txtsoketthuc) Then
        For i = sobatdau To soketthuc Step 1
            Sheet1.Range("A14").Value = i
            Sheet20.PrintOut
        Next
    End If
Else
    MsgBox "No No ti Ca"
End If
End Sub
Nếu muốn in 1 trang thì nhập txtsobatdau, txtsobatdau bằng trang đó
Bài đã được tự động gộp:


Í Nhầm rồi. Để lát nữa mình tìm Link của Anh @befaint bạn thử xem nha
Đấy rồi. Tìm mãi mới thấy: https://www.giaiphapexcel.com/diendan/threads/add-ins-cho-phép-chọn-in-nhiều-sheets-một-lúc.112451/
Bạn tự sào nấu thêm nha
Ồ nhưng mà chị ơi cái của em in theo số thứ tự nên hình như là không hợp lý khi sử dụng https://www.giaiphapexcel.com/diendan/threads/add-ins-cho-phép-chọn-in-nhiều-sheets-một-lúc.112451/
Chị sửa lại dùm em một chút nữa nhé! để code ở bài #7 chị đang sửa gần được là ok mà!
Cám ơn chị!
 
Lần chỉnh sửa cuối:
Cảm ơn chị xinh gái!
Bài đã được tự động gộp:


Ồ nhưng mà chị ơi cái của em in theo số thứ tự nên hình như là không hợp lý khi sử dụng https://www.giaiphapexcel.com/diendan/threads/add-ins-cho-phép-chọn-in-nhiều-sheets-một-lúc.112451/
Chị sửa lại dùm em một chút nữa nhé! để code ở bài #7 chị đang sửa gần được là ok mà!
Cám ơn chị!
Mình làm banh ta nông cái Add In của Anh @befaint mất rồi. Bạn xem thử
 

File đính kèm

  • 1. Ranh chu nhat - Copy.xlsm
    144.4 KB · Đọc: 9
Lần chỉnh sửa cuối:
Mình làm banh ta nông cái Add In của Anh @befaint mất rồi. Bạn xem thử
Mình test trên Excel 64bit bị lỗi như hình đính kèm:

1571996651560.png

Báo lỗi
---------------------------
Microsoft Visual Basic for Applications
---------------------------
Compile error:

Type mismatch
---------------------------
OK Help
---------------------------

tại dòng:
Mã:
AddressOf MouseProc, _
 
Mình test trên Excel 64bit bị lỗi như hình đính kèm:
Báo lỗi
tại dòng:
Mã:
AddressOf MouseProc, _
Khai báo
Mã:
#If VBA7 Then
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" _
                Alias "SetWindowsHookExA" ( _
                ByVal idHook As Long, _
                ByVal lpfn As Long, _
                ByVal hmod As Long, _
                ByVal dwThreadId As Long) As Long
#Else
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" _
                Alias "SetWindowsHookExA" ( _
                ByVal idHook As Long, _
                ByVal lpfn As Long, _
                ByVal hmod As Long, _
                ByVal dwThreadId As Long) As Long
#End If
là sai.

Thử thay xem sao bằng
Mã:
#If VBA7 Then
    Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
                (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
#Else
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
                (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
#End If
-----------
Khai báo
#If VBA7 Then
Private Declare PtrSafe Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
#Else
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
#End If

cũng sai. Phải là LongPtr.
-------------
Khai báo
#If VBA7 Then
Private Declare PtrSafe Function GetWindowLong Lib "user32.dll" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long,
ByVal nIndex As Long) As Long
#Else
Private Declare Function GetWindowLong Lib "user32.dll" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
#End If
cũng sai. Phải là LongPtr
-------------
Khai báo
#If VBA7 Then
Private Declare PtrSafe Function CallNextHookEx Lib "user32" ( _
ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByRef lParam As Any) As Long
#Else
Private Declare Function CallNextHookEx Lib "user32" ( _
ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByRef lParam As Any) As Long
#End If
cũng sai. Phải là LongPtr
-----------
Khai báo
#If VBA7 Then
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hHook As Long) As Long
#Else
Private Declare Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hHook As Long) As Long
#End If
cũng sai. Phải là LongPtr
-----------
Khai báo
#If VBA7 Then
Private Declare PtrSafe Function WindowFromPoint Lib "user32" ( _
ByVal xPoint As Long, _
ByVal yPoint As Long) As Long
#Else
Private Declare Function WindowFromPoint Lib "user32" ( _
ByVal xPoint As Long, _
ByVal yPoint As Long) As Long
#End If
cũng sai. Phải là LongPtr
-------------
Thay
Mã:
    Private mLngMouseHook As Long
    Private mControlHwnd As Long
bằng
Mã:
#If VBA7 Then
    Private mLngMouseHook As LongPtr
    Private mControlHwnd As LongPtr
#Else
    Private mLngMouseHook As Long
    Private mControlHwnd As Long
#End If

Thay
Mã:
    Dim lngAppInst As Long
    Dim hwndUnderCursor As Long

bằng

Mã:
#If VBA7 Then
    Dim lngAppInst As LongPtr
    Dim hwndUnderCursor As LongPtr
#Else
    Dim lngAppInst As Long
    Dim hwndUnderCursor As Long
#End If

Hi vọng đã sửa hết.
 
Khai báo
Mã:
#If VBA7 Then
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" _
                Alias "SetWindowsHookExA" ( _
                ByVal idHook As Long, _
                ByVal lpfn As Long, _
                ByVal hmod As Long, _
                ByVal dwThreadId As Long) As Long
#Else
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" _
                Alias "SetWindowsHookExA" ( _
                ByVal idHook As Long, _
                ByVal lpfn As Long, _
                ByVal hmod As Long, _
                ByVal dwThreadId As Long) As Long
#End If
là sai.

Thử thay xem sao bằng
Mã:
#If VBA7 Then
    Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
                (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
#Else
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
                (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
#End If
-----------
Khai báo


cũng sai. Phải là LongPtr.
-------------
Khai báo

cũng sai. Phải là LongPtr
-------------
Khai báo

cũng sai. Phải là LongPtr
-----------
Khai báo

cũng sai. Phải là LongPtr
-----------
Khai báo

cũng sai. Phải là LongPtr
-------------
Thay
Mã:
    Private mLngMouseHook As Long
    Private mControlHwnd As Long
bằng
Mã:
#If VBA7 Then
    Private mLngMouseHook As LongPtr
    Private mControlHwnd As LongPtr
#Else
    Private mLngMouseHook As Long
    Private mControlHwnd As Long
#End If

Thay
Mã:
    Dim lngAppInst As Long
    Dim hwndUnderCursor As Long

bằng

Mã:
#If VBA7 Then
    Dim lngAppInst As LongPtr
    Dim hwndUnderCursor As LongPtr
#Else
    Dim lngAppInst As Long
    Dim hwndUnderCursor As Long
#End If

Hi vọng đã sửa hết.
Cảm ơn bác @batman1 thật nhiều.
Mặc dù, đã sửa theo hướng dẫn của bác nhưng vẫn còn lỗi:

1572004852956.png

Lỗi:
---------------------------
Microsoft Visual Basic for Applications
---------------------------
Compile error:

Type mismatch
---------------------------
OK Help
---------------------------

Tại dòng:
Mã:
Sub UnhookControlScroll()
....
        UnhookWindowsHookEx mLngMouseHook

Nhờ bác và mọi người xem giúp ạ !
 

File đính kèm

  • In_#15.xlsb
    121 KB · Đọc: 3
Mặc dù, đã sửa theo hướng dẫn của bác nhưng vẫn còn lỗi:
Tại dòng:
Mã:
Sub UnhookControlScroll()
....
        UnhookWindowsHookEx mLngMouseHook

Nhờ bác và mọi người xem giúp ạ !
Bạn làm không đúng tôi hướng dẫn.
Theo tôi hướng dẫn phải là
Mã:
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
                ByVal hHook As LongPtr) As Long
Bạn có ngược lại
Mã:
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
                ByVal hHook As Long) As LongPtr

Trích

1.JPG

Long
trong ngoặc mới là LongPtr
 
Lần chỉnh sửa cuối:
Bạn làm không đúng tôi hướng dẫn.
Theo tôi hướng dẫn phải là
Mã:
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
                ByVal hHook As LongPtr) As Long
Bạn có ngược lại
Mã:
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
                ByVal hHook As Long) As LongPtr

Trích

View attachment 227176

Long trong ngoặc mới là LongPtr
Dạ, cảm ơn bác @batman1 đã nhiệt tình hướng dẫn và giúp đỡ. Em có sửa lại nhưng phát sinh thêm lỗi mới như hình đính kèm ạ!

1572014723450.png

Lại nhờ bác và mọi người xem thêm giúp ạ. Em cảm ơn !
 

File đính kèm

  • In_#16.xlsb
    112.3 KB · Đọc: 4
Dạ, cảm ơn bác @batman1 đã nhiệt tình hướng dẫn và giúp đỡ. Em có sửa lại nhưng phát sinh thêm lỗi mới như hình đính kèm ạ!

View attachment 227183

Lại nhờ bác và mọi người xem thêm giúp ạ. Em cảm ơn !
À còn sót.

Thử thay
Mã:
Private Function MouseProc( _
            ByVal nCode As Long, _
            ByVal wParam As Long, _
            ByRef lParam As MOUSEHOOKSTRUCT) As Long
bằng
Mã:
#If VBA7 Then
Private Function MouseProc( _
            ByVal nCode As Long, _
            ByVal wParam As Long, _
            ByRef lParam As MOUSEHOOKSTRUCT) As LongPtr
#Else
Private Function MouseProc( _
            ByVal nCode As Long, _
            ByVal wParam As Long, _
            ByRef lParam As MOUSEHOOKSTRUCT) As Long
#End If
 
À còn sót.

Thử thay
Mã:
Private Function MouseProc( _
            ByVal nCode As Long, _
            ByVal wParam As Long, _
            ByRef lParam As MOUSEHOOKSTRUCT) As Long
bằng
Mã:
#If VBA7 Then
Private Function MouseProc( _
            ByVal nCode As Long, _
            ByVal wParam As Long, _
            ByRef lParam As MOUSEHOOKSTRUCT) As LongPtr
#Else
Private Function MouseProc( _
            ByVal nCode As Long, _
            ByVal wParam As Long, _
            ByRef lParam As MOUSEHOOKSTRUCT) As Long
#End If
Dạ, hết lỗi rồi ah. Cảm ơn bác thật nhiều !
 
Khai báo
Mã:
#If VBA7 Then
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" _
                Alias "SetWindowsHookExA" ( _
                ByVal idHook As Long, _
                ByVal lpfn As Long, _
                ByVal hmod As Long, _
                ByVal dwThreadId As Long) As Long
#Else
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" _
                Alias "SetWindowsHookExA" ( _
                ByVal idHook As Long, _
                ByVal lpfn As Long, _
                ByVal hmod As Long, _
                ByVal dwThreadId As Long) As Long
#End If
là sai.

Thử thay xem sao bằng
Mã:
#If VBA7 Then
    Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
                (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
#Else
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
                (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
#End If
-----------
Khai báo


cũng sai. Phải là LongPtr.
-------------
Khai báo

cũng sai. Phải là LongPtr
-------------
Khai báo

cũng sai. Phải là LongPtr
-----------
Khai báo

cũng sai. Phải là LongPtr
-----------
Khai báo

cũng sai. Phải là LongPtr
-------------
Thay
Mã:
    Private mLngMouseHook As Long
    Private mControlHwnd As Long
bằng
Mã:
#If VBA7 Then
    Private mLngMouseHook As LongPtr
    Private mControlHwnd As LongPtr
#Else
    Private mLngMouseHook As Long
    Private mControlHwnd As Long
#End If

Thay
Mã:
    Dim lngAppInst As Long
    Dim hwndUnderCursor As Long

bằng

Mã:
#If VBA7 Then
    Dim lngAppInst As LongPtr
    Dim hwndUnderCursor As LongPtr
#Else
    Dim lngAppInst As Long
    Dim hwndUnderCursor As Long
#End If

Hi vọng đã sửa hết.
Bác viết quá chi tiết và cặn cẽ, rất dễ hiểu.
 
Web KT
Back
Top Bottom