:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

เปลี่ยนค่าใน Combobox ตามเงื่อนไข

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Tanasan
Member
Member
Posts: 46
Joined: Mon May 04, 2015 10:53 am

เปลี่ยนค่าใน Combobox ตามเงื่อนไข

#1

Post by Tanasan »

ใน Sheet"record process" Combobox4 ผมต้องการให้ค่าเปลี่ยนจาก 1 เป็น 2 , จาก2 เป็น 3 , จาก 3 เป็น 4
ตามเวลาที่รับค่าเข้ามาจาก PLC ซึ่งจะอยู่ใน Sheet"DATA IO" Cell D4:E4

ตัวอย่างเช่น ปัจจุบัน Sheet"DATA IO" Cell D4:E4 อยู่ในช่วงเวลา 03:00 พอครบเวลาที่กำหนดคือ 7:30 จะให้ ComboBox4 ใน Sheet "record process" +1 อย่างนี้ไปเรื่อยๆ จนเริ่มเดือนใหม่

ผมอยากจะลองเขียนเองก่อนครับ ไม่ทราบว่าพอจะแนะนำได้ไหมครับ
ว่าควรจะใช้คำสั่งใดในการเขียนเงื่อนไขนี้ เพราะก่อนหน้านี้ผมได้ทำให้ ComboBox4 มีการคัดลอกข้อมูลไปตามเซลล์ต่างๆแล้ว
ถ้าผมเขียน Loop ซ้อนเข้าไป ผมสามารถจะทำได้ไหมครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนค่าใน Combobox ตามเงื่อนไข

#2

Post by snasui »

:D การใช้เวลามาเป็น Event ในการเปลี่ยนค่าใน ComboBox จะมี 2 ลักษณะเป็นอย่างน้อยครับ

แบบแรกเปลี่ยนค่าใน ComboBox เมื่อถึงกำหนดเวลานั้นและต้องเปิดไฟล์อยู่ตลอดเวลา Code ที่ใช้จะเป็นการ Code ลักษณะการจับเวลา

แบบที่สองคือ เมื่อเปิดไฟล์ค่อยตรวจสอบแล้วเปลี่ยนค่าใน ComboBox

การเขียน Code จะยากง่ายต่างกัน โดยแบบที่สองจะง่ายกว่า

การดักแบบที่สองนี้สามารถหาได้โดยทั่วไปครับ คือจะมีการเก็บค่าวันที่ เวลา ปัจจุบันเอาไว้สักที่ เมื่อเปิดไฟล์ครั้งถัดไปจะตรวจสอบว่า ขณะที่เปิดไฟล์เป็นเวลาตามเงื่อนไขแล้วหรือไม่ หากเป็นตามเงื่อนไขแล้วค่อยบวกค่าใน ComboBox ไปอีก 1 หากไม่เปิดทุกวันก็จะต้องดักให้ได้ว่าต้องบวกไปเป็นจำนวนเท่าใดเช่นนี้เป็นต้นครับ
Tanasan
Member
Member
Posts: 46
Joined: Mon May 04, 2015 10:53 am

Re: เปลี่ยนค่าใน Combobox ตามเงื่อนไข

#3

Post by Tanasan »

snasui wrote::D การใช้เวลามาเป็น Event ในการเปลี่ยนค่าใน ComboBox จะมี 2 ลักษณะเป็นอย่างน้อยครับ

แบบแรกเปลี่ยนค่าใน ComboBox เมื่อถึงกำหนดเวลานั้นและต้องเปิดไฟล์อยู่ตลอดเวลา Code ที่ใช้จะเป็นการ Code ลักษณะการจับเวลา

แบบที่สองคือ เมื่อเปิดไฟล์ค่อยตรวจสอบแล้วเปลี่ยนค่าใน ComboBox

การเขียน Code จะยากง่ายต่างกัน โดยแบบที่สองจะง่ายกว่า

การดักแบบที่สองนี้สามารถหาได้โดยทั่วไปครับ คือจะมีการเก็บค่าวันที่ เวลา ปัจจุบันเอาไว้สักที่ เมื่อเปิดไฟล์ครั้งถัดไปจะตรวจสอบว่า ขณะที่เปิดไฟล์เป็นเวลาตามเงื่อนไขแล้วหรือไม่ หากเป็นตามเงื่อนไขแล้วค่อยบวกค่าใน ComboBox ไปอีก 1 หากไม่เปิดทุกวันก็จะต้องดักให้ได้ว่าต้องบวกไปเป็นจำนวนเท่าใดเช่นนี้เป็นต้นครับ

ผมเลือกใช้แบบแรกครับ
เนื่องจากผมเปิดไฟล์ตลอดเวลา เมื่อถึงเวลาที่กำหนดจะ ComboBox จะทำการ +1 อัตโนมัติ
แต่เวลาที่ผมใช้ในการจับเวลา Input นั้นมาจาก PLC ครับ เป็นตัวรันเวลา และใน Cell ที่ผมทำไว้คือ ให้ PLC บันทึกเวลาลงใน
Cell D4:E4

Code ที่ใช้ในการจับเวลานั้น ผมลองใช้ Timer ในการเขียนแล้ว แต่ไม่ได้ผลครับ
ComboBox ไม่ +1 ครับ ผมลองใช้ Timer อ้างอิงกับ Cell ที่รับเวลามาจาก PLC ก็ไม่ออกครับ
เพราะผมกำหนดเวลาให้แยกกัน โดยจำนวนชั่วโมงอยู่ที่ D4 ส่วนนาที อยู่ E4 แต่พอนำมาเปรียบเทียบ D4=7,E4=30
เพื่อจะให้ ComboBox +1 เพิ่มไป แต่คำสั่งไม่รัน

หรือว่าผมใช้ Code ในการจับเวลาผิดครับ
Tanasan
Member
Member
Posts: 46
Joined: Mon May 04, 2015 10:53 am

Re: เปลี่ยนค่าใน Combobox ตามเงื่อนไข

#4

Post by Tanasan »

snasui wrote::D การใช้เวลามาเป็น Event ในการเปลี่ยนค่าใน ComboBox จะมี 2 ลักษณะเป็นอย่างน้อยครับ

แบบแรกเปลี่ยนค่าใน ComboBox เมื่อถึงกำหนดเวลานั้นและต้องเปิดไฟล์อยู่ตลอดเวลา Code ที่ใช้จะเป็นการ Code ลักษณะการจับเวลา

แบบที่สองคือ เมื่อเปิดไฟล์ค่อยตรวจสอบแล้วเปลี่ยนค่าใน ComboBox

การเขียน Code จะยากง่ายต่างกัน โดยแบบที่สองจะง่ายกว่า

การดักแบบที่สองนี้สามารถหาได้โดยทั่วไปครับ คือจะมีการเก็บค่าวันที่ เวลา ปัจจุบันเอาไว้สักที่ เมื่อเปิดไฟล์ครั้งถัดไปจะตรวจสอบว่า ขณะที่เปิดไฟล์เป็นเวลาตามเงื่อนไขแล้วหรือไม่ หากเป็นตามเงื่อนไขแล้วค่อยบวกค่าใน ComboBox ไปอีก 1 หากไม่เปิดทุกวันก็จะต้องดักให้ได้ว่าต้องบวกไปเป็นจำนวนเท่าใดเช่นนี้เป็นต้นครับ

อาจารย์ครับ ผมได้ทดลองเขียน Code ตามที่ผมต้องการออกมาแล้วครับ เป็น Code แบบเงื่อนไขง่ายๆ
ที่ผมต้องการให้ตรงตามเงื่อนไข

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        If Sheet3.ComboBox4 = "1" Then
            If Sheet5.Range("D4").Value = 7 And Sheet5.Range("E4").Value = 30 Then Sheet3.ComboBox4 = ("1") + 1
            
        ElseIf Sheet3.ComboBox4 = "2" Then
            If Sheet5.Range("D4").Value = 7 And Sheet5.Range("E4").Value = 30 Then Sheet3.ComboBox4 = ("2") + 1
        
        ElseIf Sheet3.ComboBox4 = "3" Then
            If Sheet5.Range("D4").Value = 7 And Sheet5.Range("E4").Value = 30 Then Sheet3.ComboBox4 = ("3") + 1
            .
            .
            .
            .
        ElseIf Sheet3.ComboBox4 = "30" Then
            If Sheet5.Range("D4").Value = 7 And Sheet5.Range("E4").Value = 30 Then Sheet3.ComboBox4 = ("30") + 1
            
        ElseIf Sheet3.ComboBox4 = "31" Then
            If Sheet5.Range("D4").Value = 7 And Sheet5.Range("E4").Value = 30 Then Sheet3.ComboBox4 = ("31") - 30
        
        End If
End Sub
แต่ติดปัญหาคือ
1. เมื่อทำการคลิกเมาส์ที่ส่วนใดก็ได้ของ Sheet5(DATA IO) วันที่จะเปลี่ยนเอง ถ้าตัวเลขใน D4 = 7 และ E4 = 30
2. เมื่อเปลี่ยน ComboBox5 ใน Sheet3(record Process) วันที่ของผมจะไม่ทำการนับใหม่โดยให้เริ่มจาก 1

ไม่ทราบว่าผมเขียน Code แบบนี้จะมีปัญหาอย่างอื่นตามมาหรือไม่ครับ ถ้า Input เวลาจาก PLC
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เปลี่ยนค่าใน Combobox ตามเงื่อนไข

#5

Post by snasui »

:D กรณีต้องการส่งค่ามาเพื่อเปลี่ยนค่าในเซลล์ แสดงว่าควรดักด้วย Worksheets_Change ไม่ใช่ WorkSheet_SelectionChange ครับ
Tanasan
Member
Member
Posts: 46
Joined: Mon May 04, 2015 10:53 am

Re: เปลี่ยนค่าใน Combobox ตามเงื่อนไข

#6

Post by Tanasan »

snasui wrote::D กรณีต้องการส่งค่ามาเพื่อเปลี่ยนค่าในเซลล์ แสดงว่าควรดักด้วย Worksheets_Change ไม่ใช่ WorkSheet_SelectionChange ครับ
ครับ ขอบคุณมากครับ
เดี๋ยวผมจะลองดูครับ
Post Reply