: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

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

สอบถามโค๊ดVBA

#1

Post by eyepop99 »

โจทก์ที่แก้ได้แล้ว คือ
นำข้อมูลจาก Cell ไปเทียบ เมื่อเจอ ข้อมูลที่ตรงกันแล้วจะนำ input ไปใส่ให้ถูกต้อง
แต่สามารถ ตรวจสอบได้เพียง 1 ข้อมูล ( 1 criteria หรือ มากกว่าสามารถทำได้แล้วครับ)
แต่ในกรณีนี้ข้อมูลที่ต้องการตรวจสอบมีมากกว่า 1 ข้อมูล
ผมจึงต้องสร้างฟังชันแต่ละ row ข้อมูลเพื่อนำไปตรวจสอบแล้วใช้ อีกฟังชันหนึ่งเพื่อเรียกใช้งานฟังชันทั้งหมด

ปัญหา
ถ้าผมต้องการ สร้างฟังชันเพื่อ loop ให้ครบตามจำนวนrow ที่มีข้อมูลต้องแก้ อย่างไรครับ

Code: Select all

Sub update_vol2()

Dim ship As Long
Dim r_ship As Long
Dim p_fuelvol As Long
Dim p_select As Integer
Dim p_lube As Long
Dim i As Integer

i = 4

  'ตรงนี้ที่มีปันหาคือจะต้องสร้างฟังชันเพิ่มไปเครื่องๆตามจำนวนrowที่มีข้อมูล ถ้ามี ไม่เยอะก็พอไหวแต่ถ้ามีเป็น100ควรจะต้องทำอย่างไรครับ  
    ship = Sheets("Cluster Summary").Cells(26, 11).Value
    p_fuelvol = Sheets("Cluster Summary").Cells(26, 12).Value
    p_select = Sheets("Cluster Summary").Cells(26, 13).Value
    p_lube = Sheets("Cluster Summary").Cells(26, 14).Value
    
    r_ship = Sheets("Cal Sheet").Cells(i, 6).Value
    
    
Do
    If ship = r_ship Then
   
 
    Sheets("Cal Sheet").Cells(i, 12).Value = p_fuelvol * 12
    Sheets("Cal Sheet").Cells(i, 13).Value = p_select * 12
    Sheets("Cal Sheet").Cells(i, 14).Value = p_lube * 12
    
    End If
    i = i + 1
    r_ship = Sheets("Cal Sheet").Cells(i, 6).Value
    
Loop Until r_ship = 0


End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามโค๊ดVBA

#2

Post by snasui »

:D ตัวอย่าง Code ครับ

Code: Select all

Dim rsAll As Range, rs As Range
Dim rtAll As Range, rt As Range
With Sheets("Cluster Summary")
    Set rsAll = .Range("k26", .Range("k" & .Rows.Count).End(xlUp))
End With
With Sheets("Cal Sheet")
    Set rtAll = .Range("f4", .Range("f" & .Rows.Count).End(xlUp))
End With
For Each rt In rtAll
    For Each rs In rsAll
        If CLng(rt.Value) = CLng(rs.Value) Then
            rt.Offset(0, 6).Value = rs.Offset(0, 1).Value * 12
            rt.Offset(0, 7).Value = rs.Offset(0, 2).Value * 12
            rt.Offset(0, 8).Value = rs.Offset(0, 3).Value * 12
        End If
    Next rs
Next rt
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

Re: สอบถามโค๊ดVBA

#3

Post by eyepop99 »

เดี๋ยวลองทำดู ขอบคุณครับอาจาร
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

Re: สอบถามโค๊ดVBA

#4

Post by eyepop99 »

ได้ตามต้องการครับขอบคุณครับ
Post Reply