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
:D การเขียนด้วย VBA สามารถทำได้หลายแบบ ด้วยวิธีการที่ไม่ยากนัก การเลือกและการซ่อนด้วย VBA มีหลักการคือ
  1. กำหนดตัวแปรให้กับพื้นที่ที่แสดงอยู่ ณ ปัจจุบัน
  2. ยกเลิกการซ่อนพื้นที่ที่ต้องการ
  3. ซ่อนตัวแปรตามข้อ 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
:D ลองดูตัวอย่างการปรับ 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