: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

ผลลัพธ์ของการคูณ VBA มีค่าเป็น 0

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
patipan.yosmek
Member
Member
Posts: 2
Joined: Thu May 27, 2021 9:36 am
Excel Ver: 365

ผลลัพธ์ของการคูณ VBA มีค่าเป็น 0

#1

Post by patipan.yosmek »

ตามที่แนบมาด้านล่างครับทำไมบรรทัด Efficiency * EquipmentAvia * Quality_rate ถึงมีค่าเป็น 0 ครับทั้งๆ ค่าแต่ละตัวไม่เป็น 0 ครับ
Dim Avitime, Autotime_per, Nettime, Plantime, Unplantime, Operatingtime, Quality_rate, Autotime, Efficiency, Tacttime, EquipmentAvia, Meet_per, Collet_per, Repiar_per, OBA_per As Double
Dim Totalproduct, TOTALNG, PM, Breaktime, Overalleff As Integer


If ComboBox2.Text = "LD Mounter" Then
Meet_per = 0.02
Collet_per = 0.02
Repiar_per = 0.07
OBA_per = 0.03
Tacttime = 2.35
ElseIf ComboBox2.Text = "Burn-in" Then
Meet_per = 0.014
Collet_per = 0.014
Repiar_per = 0.043
OBA_per = 0.014
Tacttime = 2.35
Else
Meet_per = 0.02
Collet_per = 0.021
Repiar_per = 0.071
OBA_per = 0.029
Tacttime = 2.35
End If
If ComboBox3.Text = "No" Then
PM = 0
ElseIf ComboBox3.Text = "Yes" Then
PM = 180
Else
PM = 0
End If
If ComboBox1.Value = "24" Then
Breaktime = 120
ElseIf ComboBox1.Value = "12" Then
Breaktime = 60
Else
Breaktime = 0
End If
'Cal basic time
Avitime = ComboBox1.Value * 60
Plantime = ((Meet_per + Collet_per + Repiar_per + OBA_per) * Avitime) + PM + Breaktime
Autotime_per = TextBox2.Value

Autotime = (Autotime_per * 1440) / 100
Nettime = Avitime - Plantime
Unplantime = Nettime - Autotime
'Operatingtime = Nettime - Unplantime
EquipmentAia = Autotime / Nettime

Totalproduct = TextBox3.Value
TOTALNG = TextBox4.Value
Efficiency = ((Totalproduct * Tacttime) / 60) / Autotime
Quality_rate = (Totalproduct - TOTALNG) / Totalproduct
Overalleff = EquipmentAvia * Efficiency * Quality_rate * 100

emptyRow = WorksheetFunction.CountA(Range("B:B")) + 1
Cells(emptyRow, 1).Value = TextBox1.Value
Cells(emptyRow, 2).Value = ComboBox2.Text
Cells(emptyRow, 3).Value = EquipmentAia
Cells(emptyRow, 4).Value = Efficiency
Cells(emptyRow, 5).Value = Quality_rate
Cells(emptyRow, 6).Value = Efficiency * EquipmentAvia * Quality_rate
Cells(emptyRow, 7).Value = Avitime
Cells(emptyRow, 8).Value = Plantime
Cells(emptyRow, 9).Value = Autotime_per
Cells(emptyRow, 10).Value = Autotime
Cells(emptyRow, 11).Value = Unplantime
Cells(emptyRow, 12).Value = Nettime
Cells(emptyRow, 13).Value = Overalleff
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ผลลัพธ์ของการคูณ VBA มีค่าเป็น 0

#2

Post by snasui »

:D กรุณาทำตามกฎการใช้บอร์ดข้อ 5 ด้านบนเพื่อสะดวกต่อการตอบของเพื่อนสมาชิกครับ
patipan.yosmek
Member
Member
Posts: 2
Joined: Thu May 27, 2021 9:36 am
Excel Ver: 365

Re: ผลลัพธ์ของการคูณ VBA มีค่าเป็น 0

#3

Post by patipan.yosmek »

patipan.yosmek wrote: Thu May 27, 2021 9:46 am ตามที่แนบมาด้านล่างครับทำไมบรรทัด Efficiency * EquipmentAvia * Quality_rate ถึงมีค่าเป็น 0 ครับทั้งๆ ค่าแต่ละตัวไม่เป็น 0 ครับ

Code: Select all

 Dim Avitime, Autotime_per, Nettime, Plantime, Unplantime, Operatingtime, Quality_rate, Autotime, Efficiency, Tacttime, EquipmentAvia, Meet_per, Collet_per, Repiar_per, OBA_per As Double
Dim Totalproduct, TOTALNG, PM, Breaktime, Overalleff As Integer


If ComboBox2.Text = "LD Mounter" Then
    Meet_per = 0.02
    Collet_per = 0.02
    Repiar_per = 0.07
    OBA_per = 0.03
    Tacttime = 2.35
ElseIf ComboBox2.Text = "Burn-in" Then
    Meet_per = 0.014
    Collet_per = 0.014
    Repiar_per = 0.043
    OBA_per = 0.014
    Tacttime = 2.35
Else
    Meet_per = 0.02
    Collet_per = 0.021
    Repiar_per = 0.071
    OBA_per = 0.029
    Tacttime = 2.35
    End If
If ComboBox3.Text = "No" Then
    PM = 0
    ElseIf ComboBox3.Text = "Yes" Then
    PM = 180
    Else
    PM = 0
    End If
If ComboBox1.Value = "24" Then
    Breaktime = 120
ElseIf ComboBox1.Value = "12" Then
    Breaktime = 60
Else
Breaktime = 0
    End If
'Cal basic time
Avitime = ComboBox1.Value * 60
Plantime = ((Meet_per + Collet_per + Repiar_per + OBA_per) * Avitime) + PM + Breaktime
Autotime_per = TextBox2.Value

    Autotime = (Autotime_per * 1440) / 100
    Nettime = Avitime - Plantime
    Unplantime = Nettime - Autotime
    'Operatingtime = Nettime - Unplantime
    EquipmentAia = Autotime / Nettime

Totalproduct = TextBox3.Value
TOTALNG = TextBox4.Value
Efficiency = ((Totalproduct * Tacttime) / 60) / Autotime
Quality_rate = (Totalproduct - TOTALNG) / Totalproduct
Overalleff = EquipmentAvia * Efficiency * Quality_rate * 100

emptyRow = WorksheetFunction.CountA(Range("B:B")) + 1
Cells(emptyRow, 1).Value = TextBox1.Value
Cells(emptyRow, 2).Value = ComboBox2.Text
Cells(emptyRow, 3).Value = EquipmentAia
Cells(emptyRow, 4).Value = Efficiency
Cells(emptyRow, 5).Value = Quality_rate
Cells(emptyRow, 6).Value = Efficiency * EquipmentAvia * Quality_rate
Cells(emptyRow, 7).Value = Avitime
Cells(emptyRow, 8).Value = Plantime
Cells(emptyRow, 9).Value = Autotime_per
Cells(emptyRow, 10).Value = Autotime
Cells(emptyRow, 11).Value = Unplantime
Cells(emptyRow, 12).Value = Nettime
Cells(emptyRow, 13).Value = Overalleff 
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ผลลัพธ์ของการคูณ VBA มีค่าเป็น 0

#4

Post by snasui »

patipan.yosmek wrote: Thu May 27, 2021 8:10 pm ทำไมบรรทัด Efficiency * EquipmentAvia * Quality_rate ถึงมีค่าเป็น 0 ครับทั้งๆ ค่าแต่ละตัวไม่เป็น 0 ครับ
:D กรุณาแนบไฟล์ Excel มาด้วย ตัดมาเฉพาะที่เกี่ยวกับ Code นี้ จะได้ตรวจสอบได้ว่าตัวแปรดังกล่าวไม่ได้มีค่าเป็น 0 ตามที่กล่าวมาไม่ครับ

ในเบื้องต้นลอง Debug ดูตามภาพ เพื่อสังเกตว่าตัวแปรแต่ละตัวให้ผลลัพธ์เป็น 0 หรือไม่ ตามข้อ 2 ในภาพ หาก Code นี้อยู่ใน UserForm ก็ Run Code มาตามวิธีเดิมครับ
Attachments
Debug.png
Debug.png (84.46 KiB) Viewed 20 times
Post Reply