Page 1 of 1
มุมมองใน excel
Posted: Tue Mar 13, 2012 7:17 pm
by tigerwit
ใช้ excel เขียนโปรแกรมอำนวยความสะดวกในงานธุรการของโรงเรียน
โดยกำหนดหน้าหลักของโปรแกรมใน sheet 1 เป็นมุมมอง 100 %
แต่บางที่ผู้ใช้โปรแกรมบางคนก็ไปปรับลดมุมมองลงเป็น 90 % หรือ 85 %
เรามีวิธีการล็อคหน้าหลักของ (sheet1) ให้มุมมองอยู่ที่ 100 % ไม่สามารถปรับเปลี่ยน ได้อย่างไรครับ
Re: มุมมองใน excel
Posted: Tue Mar 13, 2012 8:24 pm
by snasui

กรณีผู้ใช้ต้องเลือกเซลล์ เราสามารถเพิ่ม Event SelectionChange เพื่อปรับให้กลับมาเป็น 100% ในชีทนั้นตามด้านล่างครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveWindow.Zoom = 100
End Sub
Re: มุมมองใน excel
Posted: Tue Mar 13, 2012 9:04 pm
by bank9597
Re: มุมมองใน excel
Posted: Tue Mar 13, 2012 9:46 pm
by tigerwit
ขอบคุณครับ
เอาแบบ ไม่ให้ผู้ใช้ย่อ หรือขยายเลย ได้ไหมครับ
ปล.
(รหัสผ่าน 123456)
Re: มุมมองใน excel
Posted: Tue Mar 13, 2012 10:40 pm
by snasui

ลองดู Code ตามด้านล่าง วางไว้ใน ThisWorkbook ครับ เมื่อเปิดไฟล์ขึ้นมาจะทำให้เมนู Zoom จะไม่ทำงาน และจะทำงานเมื่อปิดไฟล์นี้ไปครับ
Code: Select all
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.CommandBars("Standard").Controls(24).Enabled = True
.CommandBars("View").Controls(11).Enabled = True
End With
End Sub
Private Sub Workbook_Open()
With Application
.CommandBars("Standard").Controls(24).Enabled = False
.CommandBars("View").Controls(11).Enabled = False
End With
End Sub
Re: มุมมองใน excel
Posted: Tue Mar 13, 2012 11:24 pm
by tigerwit
ลองดู Code ตามด้านล่าง วางไว้ใน ThisWorkbook ครับ เมื่อเปิดไฟล์ขึ้นมาจะทำให้เมนู Zoom จะไม่ทำงาน และจะทำงานเมื่อปิดไฟล์นี้ไปครับ
โค้ด: เลือกทั้งหมด
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.CommandBars("Standard").Controls(24).Enabled = True
.CommandBars("View").Controls(11).Enabled = True
End With
End Sub
Private Sub Workbook_Open()
With Application
.CommandBars("Standard").Controls(24).Enabled = False
.CommandBars("View").Controls(11).Enabled = False
End With
End Sub
ลองแล้วครับ
ยังไม่ work
ยังย่อ ขยายได้เหมือนเดิม
ตรงแถบเครื่องมือครับ
Re: มุมมองใน excel
Posted: Tue Mar 13, 2012 11:35 pm
by tigerwit
รูปครับ
Re: มุมมองใน excel
Posted: Tue Mar 13, 2012 11:52 pm
by snasui

ลองใช้วิธีการ Loop ตามด้านล่างครับ
Code: Select all
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
With Application.CommandBars("Standard")
For i = 1 To .Controls.Count
If .Controls(i).Caption = "&Zoom:" Then
.Controls(i).Enabled = True
End If
Next i
End With
Application.CommandBars("View").Controls(11).Enabled = True
End Sub
Private Sub Workbook_Open()
Dim i As Integer
With Application.CommandBars("Standard")
For i = 1 To .Controls.Count
If .Controls(i).Caption = "&Zoom:" Then
.Controls(i).Enabled = False
End If
Next i
End With
Application.CommandBars("View").Controls(11).Enabled = False
End Sub
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 5:18 pm
by tigerwit
ทดลองแล้ว Code ใช้ได้
แต่ยังไม่สามารถแก้ไขปัญหาตามที่ต้องการได้
เพราะถึงแม้จะปิด เมนู Zoom ได้
แต่ผู้ใช้ยังสามารถปรับมุมมอง จากแถบเครื่องมือได้อยู่ครับ
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 5:36 pm
by snasui

ในเครื่องผมสามารถปิดได้ทั้งสองที่ตามภาพด้านล่างครับ
ช่วยเปิด Sheet ว่าง ๆ แล้ว Run Code นี้แล้วส่งผลที่ได้มาให้ด้วยครับ
Code: Select all
Sub Test()
Dim i As Integer
With Application.CommandBars("Standard")
For i = 1 To .Controls.Count
Cells(i, 1) = i
Cells(i, 2) = .Controls(i).Caption
Next i
End With
End Sub
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 6:07 pm
by tigerwit
ทดสอบแล้ว ผลที่ได้
ดังรูปและไฟล์
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 6:14 pm
by snasui

ไม่น่าจะครบนะครับ แนบไฟล์นั้นมาครับ ผมจะดูว่า Shortcut เมนู ทีใช้ในการ Zoom ชื่อว่าอะไรหากเป็นภาษาไทยครับ
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 6:23 pm
by tigerwit
รูปอีกครั้ง
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 6:28 pm
by snasui

ลองปรับ Code เป็นตามด้านล่างครับ สังเกตว่าเปลี่ยนเฉพาะ
&Zoom: เป็น
&ย่อ/ขยาย: เท่านั้นครับ
Code: Select all
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
With Application.CommandBars("Standard")
For i = 1 To .Controls.Count
If .Controls(i).Caption = "&ย่อ/ขยาย:" Then
.Controls(i).Enabled = True
End If
Next i
End With
Application.CommandBars("View").Controls(11).Enabled = True
End Sub
Private Sub Workbook_Open()
Dim i As Integer
With Application.CommandBars("Standard")
For i = 1 To .Controls.Count
If .Controls(i).Caption = "&ย่อ/ขยาย:" Then
.Controls(i).Enabled = False
End If
Next i
End With
Application.CommandBars("View").Controls(11).Enabled = False
End Sub
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 7:31 pm
by tigerwit
ได้แล้วครับ
กับ 2007 จะใช้ได้ไหมครับ
Re: มุมมองใน excel
Posted: Wed Mar 14, 2012 7:45 pm
by snasui

ลองเลยครับ ติดตรงไหนก็ถามมาได้เรื่อย ๆ ครับ

Re: มุมมองใน excel
Posted: Fri Mar 16, 2012 9:13 pm
by tigerwit
ลองรัน ใน 2007 แล้วครับ
Code ใช้ไม่ได้
ผู้ใช้สามารถย่อ/ขยาย ได้ครับ
ต้องปรับ Code อย่างไงครับ
Re: มุมมองใน excel
Posted: Fri Mar 16, 2012 10:15 pm
by snasui

Excel 2007-2010 ไม่เหมือน Excel 2003 ที่สามารถใช้ลำพัง Code VBA ในการจัดการเมนูได้ เพราะจะต้องแก้ไขไฟล์ XML ลองศึกษาจากที่นี่ครับ
http://www.rondebruin.nl/ribbon.htm