PDA

View Full Version : แมโครกับสมุดจองห้องประชุม



thegreattoi
25 May 2007, 10:53
สวัสดีครับสมาชิกทุกท่าน
ผมได้ทดลองเขียนแมโครสำหรับจองห้องประชุมในที่ทำงานขึ้นมา (โปรดดูที่เอกสารแนบ)
ดูๆไปก็เหมือนกับว่าจะสมบูรณ์หรือใช้งานได้แล้ว แต่สิ่งที่เป็นปัญหาและผมไม่สามารถทำเพิ่มเติมได้ก็คือ
เมื่อเราเลือกจองห้องประชุมใดๆแล้ว ข้อมูลนั้นก็จะไปปรากฎในแผ่นงานของห้องประชุมนั้นๆ (แยกชีทเอง)
จึงขอบกวนถามท่านผู้รู้ว่า เราจะมีวิธีการเขียนโค๊ดอย่างไร ให้ข้อมูลแยกชีทเองได้
ขอขอบคุณครับ :confused::confused:

thegreattoi
25 May 2007, 10:57
ขอโทษครับ ลืมเอกสารแนบ

zv735
25 May 2007, 12:51
เพิ่ม If อีกที่เดียวครับผม

ลองดู File แนบนะครับผม

สมเกียรติ
25 May 2007, 20:13
ขอโทษครับ ลืมเอกสารแนบ
คราวหน้าขอให้ตั้งชื่อแฟ้มเป็นภาษาอังกฤษครับ ขอให้อ่านคำอธิบายการตั้งชื่อแฟ้มแนบที่ผมแนะนำไว้ด้วย

Ubolwan
25 May 2007, 20:30
ที่ช่อง Start Time (From) เมื่อคลิกเวลาเริ่มต้นแล้ว เช่น 08:00 น. ช่อง EndTime ไม่ควรแสดง 08:00 น. นะคะ น่าจะแสดงเวลา 08:30 น. ไปเลย
ไม่ได้กรอกเวลาเริ่ม หรือเวลาสิ้นสุด ต้องไม่คำนวณค่ะ แต่เมื่อทดสอบโดยกรอกเวลาใดเวลาหนึ่ง จะขี้น Error
น่าจะระบุอุปกรณ์ที่ต้องใช้ในการประชุมว่าเมื่อต้องการใช้ห้องนี้ จะต้องใช้อุปกรณ์อะไรบ้าง เช่น Projector, White Board, หรือเครื่องฉายภาพข้ามศีรษะ เพื่อป้องกันปัญหาอุปกรณ์ไม่เพียงพอในการใช้งานจริง ๆ แล้ว ถ้าคุณใช้ MS Outlook กับ MS Exchange Server คุณสามารถใช้คุณลักษณะตารางนัดหมายโดยแบ่งปัน (Share) บน Server แล้วให้ผู้ต้องการใช้งานจอง และระบุว่าใช้อุปกรณ์อะไรบ้าง โดยต้องมีชื่อผู้ดูแลห้องประชุมเป็นผู้รับจองค่ะ

ด้วยความปรารถนาดี

thegreattoi
26 May 2007, 11:18
สวัสดีครับอาจารย์ สมเกียรติและสมาชิกทุกท่าน
ต้องขออภัยเป็นอย่างยิ่งครับสำหรับข้อบกพร่องเรื่องชื่อแฟ้ม ทั้งที่คิดว่าได้ศึกษากฏ กติกามาอย่างดีแล้ว โดยเฉพาะเรื่องการใช้ภาษา โอกาศหน้าจะระมัดระวังให้มากกว่านี้ครับ
ส่วนคำแนะนำของคุณ Ubolwan เป็นประโยชน์มากครับ ผมเองมัวแต่มุ่งเน้นที่จะใช้ Excel กับ Macro ในการแก้ปัญหาจนเกินไป เลยลืมนึกถึงอุปกรณ์อื่นๆ ที่น่าจะอำนวยความสะดวกได้มากกว่า
สำหรับคุณ zv375 นั้น ต้องขอขอบคุณมากครับที่แนะนำแนวทางให้ ผมสามารถนำไปประยุกต์ใช้ได้ใช้กับงานอีกหลายอย่างมาก
และอยากจะถามต่ออีกว่า คำสั่ง If ที่ให้มานั้น เป็นคำสั่งเฉพาะที่จะใช้ตัดสินใจกับเหตุการณ์แบบนี้ใช่หรือไม่ แล้วเราสามารถใช้คำสั่งอื่นๆ
ที่อาจจะสั้นกว่ายาวกว่าหรือยุ่งยากกว่าแทนการใช้ If ได้ไหม
อีกคำถามหนึ่งคือ ถ้าผมต้องการเพิ่มห้องประชุมจาก 2 เป็น 5 ห้อง จำเป็นหรือไม่ที่ผมจะต้องเขียนคำสั่งซ้ำๆ ให้เลือกนำข้อมูลไปลงในแผ่นงาน
ตามจำนวนห้องที่เพิ่มขึ้น ถ้าไม่จำเป็นมีคำสั่งอย่างไรที่จะทำให้ง่ายขึ้นบ้าง
ด้วยความนับถือ

สมเกียรติ
26 May 2007, 11:46
ขอบคุณครับสำหรับความตั้งใจที่จะทำตามคำแนะนำในฟอรัมนี้

สำหรับคำถาม ขอแนะนำให้ใช้ VBA ให้ครบทั้งการบันทึกการจองใหม่ และแก้ไขข้อมูลเก่าได้ด้วย โดยพยายามทำให้แฟ้มมีชีตให้น้อยที่สุด ไม่ควรเพิ่มชีตตามจำนวนห้อง แต่ให้บันทึกการจองทั้งหมดลงในชีตเดียว แต่เวลาค้นหาข้อมูลของแต่ละห้องให้ใช้ VBA ควบคุมการสั่ง AutoFilter เพื่อกรองรายการตามหมายเลขห้อง

ขอให้วางแผนให้ดีก่อนที่จึงจะคิดใช้ VBA ต่อไป เพราะถ้าใช้ VBA ไปแล้วจะย้อนกลับมาแก้ไขยาก และเมื่อใช้ VBA แล้ว จะต้องทำงานง่ายขึ้น แฟ้มเล็กลง PC คำนวณเร็วขึ้น

ลองดูตัวอย่างแฟ้มที่ใช้ค้นหา แก้ไข และบันทึกรายการใหม่ได้ในที่เดียวกัน ลองใช้เซลล์ B3 : D3 ดูครับ

zv735
26 May 2007, 19:29
1. If Sheet1.Range("E5") = "Room C2" Then
.คำสั่ง
.คำสั่ง
elseif Sheet1.Range("E5") = "Room C3" Then
.คำสั่ง
.คำสั่ง
elseif Sheet1.Range("E5") = "Room C4" Then
.
.
.
end if
ก็ได้ครับแต่ยาว

2. ใช้ Select Case ครับ สั้นและทำงานได้เร็วกว่าครับ

3. Do .... loop until

มีอีกหลายอย่างครับ แล้วแต่ความถนัด และการใช้งานครับ

ส่วนใน Code คุณ มีการใช้คำสั่งซ้ำๆกันค่อนข้างมาก ควรจะรวม
แล้วทำเป็น Function หรือ Sub เพื่อลด Code ลงครับ และง่ายต่อการแก้ไขในครั้งต่อๆไปครับผม

ขอบคุณมากมากครับ