Thoát khỏi Form nhưng EXCEL vẫn thường trú

  • Thread starter Thread starter kan
  • Ngày gửi Ngày gửi
Liên hệ QC

kan

Thành viên mới
Tham gia
26/1/08
Bài viết
47
Được thích
6
Xin hỏi đoạn code dưới đây cần thay đổi (bổ sung) chỗ nào để sau khi thoat khỏi form thì EXCEL cũng thoát luôn và trường hợp đóng form thì EXCEL mở ra ?

Mình vận dụng đoạn code này nhưng khi thoát khỏi form bằng cách bấm nút X (close), sau đó khởi động lại EXCEL thì nó báo lỗi: "Cannot use object linking and embedding" . Kiểm tra thì thấy sau khi thoát form thì EXCEL vẫn thương trú trong Task Manager.
Cám ơn !

Code:

Option Explicit
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_STYLE As Long = (-16)
Public Const WS_MAXIMIZEBOX As Long = &H10000
Public Const WS_MINIMIZEBOX = &H20000
Public Sub MinMax(sCaption As String)
Dim hWndForm As Long
Dim iStyle As Long
If Val(Application.Version) < 9 Then
hWndForm = FindWindow("ThunderXFrame", sCaption) 'XL97
Else
hWndForm = FindWindow("ThunderDFrame", sCaption) 'XL2000
End If
iStyle = GetWindowLong(hWndForm, GWL_STYLE)
iStyle = iStyle Or WS_MAXIMIZEBOX
iStyle = iStyle Or WS_MINIMIZEBOX
SetWindowLong hWndForm, GWL_STYLE, iStyle
End Sub
Private Sub UserForm_Initialize()
Call MinMax(MenuChinh.Caption)
SendKeys "%{ }X"
Application.Visible = False
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.Visible = True
End Sub
Sub UserForm_Resize()
Application.ScreenUpdating = False
Me.Caption = Height
If Me.Height < 100 Then
Application.Visible = False
Else
SendKeys "%{ }X"
Application.Visible = True
End If
MinMax (Me.Caption)
Application.ScreenUpdating = True
End Sub
'-------------------
Option Explicit
Private Sub Workbook_Open()
MenuChinh.Show
Application.Visible = False
End Sub
 
Lần chỉnh sửa cuối:
Bạn thêm dòng lệnh này

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.Visible = True
Application.Quit
End Sub
 
Upvote 0
Cám ơn Bác PhanTuHuong !

Có 2 userform, sau khi bấm commanbutton ở userform 1 thì xuất hiện userform 2, trong userform 2 có các textbox 1, 2, 3, tôi muốn các textbox này lấy giá trị ban đầu đã có trong các cells đã định của sheet1 thì viết câu lệnh gì ? (Khởi tạo các giá trị ban đầu cho các textbox trong form bằng các giá trị của cells đã có trước trên sheet).
 
Upvote 0
Làm được rồi, mình lú lẫn quá đi !

Nhờ các thành viên giúp: ở sheet1.range("a1) có chuỗi: 100/80, mình muốn tách các ký tự trước ký tự "/" và sau ký tự "/" thì làm thế nào ? (các ký tự trước, sau sau ký tự "/" dạng số và có thể thay đổi lên 4, 5 ..hoặc xuống 1 ký tự).
Cám ơn !
 
Upvote 0
Làm được rồi, mình lú lẫn quá đi !

Nhờ các thành viên giúp: ở sheet1.range("a1) có chuỗi: 100/80, mình muốn tách các ký tự trước ký tự "/" và sau ký tự "/" thì làm thế nào ? (các ký tự trước, sau sau ký tự "/" dạng số và có thể thay đổi lên 4, 5 ..hoặc xuống 1 ký tự).
Cám ơn !
Dùng thử UDF sau, cú pháp:
=Tachso(...,1)
Trong đó
1: số đầu (100)
2: số sau (80)
PHP:
Option Explicit
Option Base 1
Function Tachso(MyStr As String, n As Long) As Long
Dim aSplit() As String
Dim SearchChar As String
Dim i As Long, j As Long
SearchChar = "/"
MyStr = Trim(MyStr)
If Len(MyStr) = 0 Or n > 3 Then Exit Function
  aSplit = Split(MyStr, SearchChar, 3)
  Tachso = Trim(aSplit(n - 1))
End Function
 
Upvote 0
Web KT

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

Back
Top Bottom