Page 1 of 1
ถามโค้ด VBA ซ่อนข้อมูลบางส่วน
Posted: Thu Oct 18, 2012 3:34 pm
by tutape
ผมได้ใส่ข้อหลายรูปแบบที่ต่างกันไว้ในชีทเดียวกัน และเขียนโค้ดให้แสดงเฉพาะหน้าที่ต้องการ ซึ่งในหน้าที่ 1 (คอลัมน์ A : K) ก็แกะโค้ดที่ได้จากการบันทึก VBA ก็พอใช้งานได้ แต่พอจะให้แสดงเฉพาะหน้าที่ 2 (คอลัมน์ N : X) ก็เริ่มงง ซึ่งโค้ดซ่อนด้านที่ 1 มีดังนี้
Code: Select all
Sub ค1()
Range("D11").Select
Sheets("kd11").Select
Columns("A:N").Select
Range("N1").Activate
Selection.EntireColumn.hidden = False
Columns("K:K").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.EntireColumn.hidden = True
Range("G9").Select
End Sub
ซึ่งโค้ดที่ได้นี้ไปกำหนดให้กับปุ่มแ่ละด้านในชีท "Menu11" รบกวนผู้ที่มีเทคนิคแนะนำด้วยครับ ขอบคุณครับ
Re: ถามโค้ด VBA ซ่อนข้อมูลบางส่วน
Posted: Thu Oct 18, 2012 4:46 pm
by nattasiray
เราสามารถใช้ Custom View รวมกับ VBA เพื่อควบคุมการแสดงพื้นที่ทำงาานได้ครับ
1 ขั้นแรก จัดหน้าตารางของตาราง เช่น ซ่อนอคอลัมน์ ซ่อนบรรทัด
2 คลิกแท็บ View (มุมมอง)
3 คลิกปุ่ม Custom Views (มุมมองกำหนดเอง)
4 คลิกปุ่ม Add (เพิ่ม)
5 ตั้งชื่อมุมมองที่ต้องการ
6 คลิกปุ่ม OK
7 คลิกปุ่ม Close
กระทำซ้ำข้อ 1 - 7 ไปจนกว่าจะหมด
เวลาเรียกใช้ก็กระทำซ้ำ ข้อ 2 - 3 แล้วคลิกเลือกชื่อมุมมองที่ต้องการ สุดท้ายคลิกปุ่ม Show
Re: ถามโค้ด VBA ซ่อนข้อมูลบางส่วน
Posted: Thu Oct 18, 2012 6:17 pm
by snasui

การเขียนด้วย VBA สามารถทำได้หลายแบบ ด้วยวิธีการที่ไม่ยากนัก การเลือกและการซ่อนด้วย VBA มีหลักการคือ
- กำหนดตัวแปรให้กับพื้นที่ที่แสดงอยู่ ณ ปัจจุบัน
- ยกเลิกการซ่อนพื้นที่ที่ต้องการ
- ซ่อนตัวแปรตามข้อ 1
สำหรับวิธีนี้ให้เลือกเขียน Code ให้กับทุกพื้นที่ ตามตัวอย่างด้านล่างผมเขียนมาให้แค่ 2 พื้นที่ ซึ่งต้อง Assign Macro ให้กับแต่ละปุ่มที่ต้องการให้ไปยังพื้นที่นั้นครับ
Code: Select all
Sub Places1()
Sheets("kd11").Select
Range("A1").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Set r = Selection
Columns("A:N").Select
Selection.EntireColumn.hidden = False
r.EntireColumn.hidden = True
End Sub
Sub Places2()
Sheets("kd11").Select
Range("A1").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Set r = Selection
Columns("N:X").Select
Selection.EntireColumn.hidden = False
r.EntireColumn.hidden = True
End Sub
Re: ถามโค้ด VBA ซ่อนข้อมูลบางส่วน
Posted: Thu Oct 18, 2012 7:21 pm
by tutape
ผมลองเอาโค้ดที่ อ. ให้มา ไปใช้ปรากฎว่ามันซ่อนข้อมูลหมดเลย ไม่แน่ใจว่าผมทำผิดขั้นตอนใดหรือเปล่า
Re: ถามโค้ด VBA ซ่อนข้อมูลบางส่วน
Posted: Thu Oct 18, 2012 9:40 pm
by snasui

ลองดูตัวอย่างการปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Places1()
Sheets("kd11").Select
Range("A1").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Set r = Selection
Columns("A:N").Select
Selection.EntireColumn.hidden = False
If Selection.SpecialCells(xlCellTypeVisible).Address <> r.Address Then
r.EntireColumn.hidden = True
End If
End Sub