: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 ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#1

Post by suka »

เรียนอาจารย์ และท่านผู้รู้ช่วยปรับโค้ดค่ะ
จากตัวอย่างไฟล์แนบตัองการให้โค้ดวางข้อมูลตามเงื่อนไข
หากที่ชีท Form เซลล์ E2 มีค่าเป็น " เบิกสินค้า " , " โอนสินค้า " ให้ชุดโค้ดใน MainCode ทำงานทั้งชุด
คือวางข้อมูลตามขั้นตอนของโค้ดทั้งหมดใน MainCode ซึ่งได้ตามต้องการค่ะ

ติดปัญหาคือหากชีท Form เซลล์ E2 มีค่าเป็น " ผลิต " , " ประกอบ " , " ซื้อ " , " ขาย "
ต้องการให้หยุดการทำงานเฉพาะโค้ด Call PasteData2
ความต้องการคือ ให้โค้ดทำการ Copy ข้อมูลชีท Template เซลล์ A2:AD มาวางที่ไฟล์ Data ชืท Sheet1 ค่ะ
ชีท Template เซลล์ A2:AD ไม่ต้องค่ะ MainCode ควรปรับอย่างไรคะ

Code: Select all

Sub MainCode()
        Dim formBook As Workbook
        Dim wdShare As Workbook
        Dim response As Integer
        Dim r As Range
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Set formBook = ThisWorkbook
        Set wdShare = Workbooks.Open("C:\Documents and Settings\Administrator\Desktop\New Folder (2)\Data.xlsx", False, False)
        Set r = formBook.Sheets("Form").Range("K1")
        If Application.CountIf(wdShare.Sheets("Sheet1").Range("F:F"), r) <> 0 Then
                MsgBox "โปรดตรวจสอบเลขที่เอกสารนี้ได้บันทึกแล้ว รายการซ้ำ "
            Exit Sub
        End If
        Call PasteData2
        Call PasteData
        Call Sort
        Call Data_Copy
        wdShare.Close True
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#2

Post by suka »

ขออภัยค่ะ ขอแก้เนื่องจากใส่ช่วงเซลล์ผิดค่ะ
suka wrote:ชีท Template เซลล์ A2:AD ไม่ต้องค่ะ MainCode ควรปรับอย่างไรคะ
เปลี่ยนเป็น

ชีท Template เซลล์ AH2:BK ให้หยุดไม่ต้อง Copy ค่ะ

ที่ MainCode ควรปรับอย่างไรดีคะ ขอบคุณค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#3

Post by snasui »

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

Code: Select all

'--Other code
With formBook.Sheets("Form").Range("E2")
      If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
           Call PasteData2
      End If
End With
'--Other code
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#4

Post by suka »

อาจารย์คะ Code ด้านล่างนี้ถ้าชีท Form เซลล์ E2 เป็น เบิกสินค้า หรือ โอนสินค้า ถ้าใช่เข้าเงื่อนไขต้องการให้ Run Coed Call PasteData2 และ Call PasteData ทั้ง 2 โค้ดเลยค่ะ

ปัญหาคือโค้ดวางเฉพาะข้อมูลของ Call PasteData เท่านั้นตามตัวอย่างรูปแนบแถวที่ 8 - 10 ค่ะ

ตัวอย่างที่ต้องการตามรูปแนบที่ระบายสีเหลืองค่ะ

MainCode ด้านล่างควรปรับอย่างไรดีคะ ขอบคุณค่ะ

Code: Select all

Sub MainCode()
        Dim formBook As Workbook
        Dim wdShare As Workbook
        Dim response As Integer
        Dim r As Range
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Set formBook = ThisWorkbook
        Set wdShare = Workbooks.Open("C:\Documents and Settings\Administrator\Desktop\New Folder (2)\Data.xlsx", False, False)
        Set r = formBook.Sheets("Form").Range("K1")
        If Application.CountIf(wdShare.Sheets("Sheet1").Range("F:F"), r) <> 0 Then
                MsgBox "โปรดตรวจสอบเลขที่เอกสารนี้ได้บันทึกแล้ว รายการซ้ำ "
            Exit Sub
        End If
        With formBook.Sheets("Form").Range("E2")
            If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
                 Call PasteData2
            End If
        End With
        Call PasteData
        Call Sort
        Call Data_Copy
        wdShare.Close True
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#5

Post by puriwutpokin »

Code: Select all

'--Other code
            If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
                 Call PasteData2
                 Call PasteData
            End If
        End With
        Call Sort
        Call Data_Copy
'--Other code
:shock: :roll: :D
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#6

Post by suka »

วาง Code ตามด้านล่างนี้ Code ไม่ Run ค่าใด ๆ เลยค่ะ

Code: Select all

Sub MainCode()
        Dim formBook As Workbook
        Dim wdShare As Workbook
        Dim response As Integer
        Dim r As Range
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Set formBook = ThisWorkbook
        Set wdShare = Workbooks.Open("C:\Documents and Settings\Administrator\Desktop\New Folder (2)\Data.xlsx", False, False)
        Set r = formBook.Sheets("Form").Range("K1")
        If Application.CountIf(wdShare.Sheets("Sheet1").Range("F:F"), r) <> 0 Then
                MsgBox "โปรดตรวจสอบเลขที่เอกสารนี้ได้บันทึกแล้ว รายการซ้ำ "
            Exit Sub
        End If
        With formBook.Sheets("Form").Range("E2")
            If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
                 Call PasteData2
                 Call PasteData
            End If
        End With
        Call Sort
        Call Data_Copy
        wdShare.Close True
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
End Sub
User avatar
logic
Gold
Gold
Posts: 1506
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#7

Post by logic »

อาจารย์ตอบเป็นแนวไว้แล้วน่าจะปรับได้ไม่ยากครับ

คือถ้าเข้าเงื่อนไขว่า
ถ้าชีท Form เซลล์ E2 เป็น เบิกสินค้า หรือ โอนสินค้า ถ้าใช่เข้าเงื่อนไขต้องการให้ Run Coed Call PasteData2 และ Call PasteData ทั้ง 2 โค้ดเลย
คุณ puriwutpokin ตอบไปให้แล้ว ถ้าไม่ได้อีกผมว่าเงื่อนไขผิดแล้วละครับ

หรือจะใส่ else เพิ่มเข้าไปถ้าไม่เข้าเงื่อนไขข้างต้นก็น่าจะเขียนเองได้ไม่ยาก ปกติถ้าใช้ code ได้ก็น่าจะเขียน if..then...else เป็นอยู่แล้ว

อันนี้แบบมี else คือถ้าไม่เข้าเงื่อนไขแล้วจะให้ run code ไหนบ้างก็ใส่ตามที่ต้องการ จะ code ทุกตัวหรือบางส่วนก็แล้วแต่ต้องการครับ :P

Code: Select all

If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
     Call PasteData2
     Call PasteData
Else
     Call x
     Call y
     Call z
End If
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#8

Post by suka »

ขอกวนอีกรอบนะคะ Code นี้ชีท Form เซลล์ E2 ค่าเป็น เบิกสินค้า หรือ โอนสินค้า วางได้ทั้ง Call PasteData และ
Call PasteData2 ได้ครบตามต้องการค่ั

ยังติดที่ถ้าชีท Form เซลล์ E2 ค่าเป็น ผลิต หรือ ประกอบ โค้ดก็รันมาทั้ง 2 โค้ดค่ะ ต้องให้รันแต่โค้ด Call PasteData เพียงโค้ดเีดียวค่ะ ปรับการจะติดสลับกันค่ะถัาได้ เบิกสินค้า หรือ โอนสินค้า ก็จะไปติดที่ ผลิต หรือ ประกอบ
ขออนุญาตนะคะ ขอบคุณค่ะ

Code: Select all

Sub MainCode()
        Dim formBook As Workbook
        Dim wdShare As Workbook
        Dim response As Integer
        Dim r As Range
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Set formBook = ThisWorkbook
        Set wdShare = Workbooks.Open("C:\Documents and Settings\Administrator\Desktop\New Folder (2)\Data.xlsx", False, False)
        Set r = formBook.Sheets("Form").Range("K1")
        If Application.CountIf(wdShare.Sheets("Sheet1").Range("F:F"), r) <> 0 Then
                MsgBox "โปรดตรวจสอบเลขที่เอกสารนี้ได้บันทึกแล้ว รายการซ้ำ "
            Exit Sub
        End If
        With formBook.Sheets("Form").Range("E2")
            If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
                 Call PasteData
            Else
                Call PasteData2
                Call PasteData
                'Call Sort
                Call Data_Copy
            End If
        End With
        wdShare.Close True
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#9

Post by snasui »

suka wrote:ขอกวนอีกรอบนะคะ Code นี้ชีท Form เซลล์ E2 ค่าเป็น เบิกสินค้า หรือ โอนสินค้า วางได้ทั้ง Call PasteData และ
Call PasteData2 ได้ครบตามต้องการค่ะ
:D เมื่อได้ครบตามต้องการก็ควรจะมี Code ตามลักษณะที่ตอบ ๆ กันไปคือจะมีลักษณะด้านล่างเป็นอย่างน้อยครับ

Code: Select all

If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
	Call PasteData
	Call PasteData2
Else
	Call PasteData
End I
suka wrote:ยังติดที่ถ้าชีท Form เซลล์ E2 ค่าเป็น ผลิต หรือ ประกอบ โค้ดก็รันมาทั้ง 2 โค้ดค่ะ ต้องให้รันแต่โค้ด Call PasteData เพียงโค้ดเีดียวค่ะ ปรับการจะติดสลับกันค่ะถัาได้ เบิกสินค้า หรือ โอนสินค้า ก็จะไปติดที่ ผลิต หรือ ประกอบ
ขออนุญาตนะคะ ขอบคุณค่ะ
หากเป็นไปตามที่อธิบายมา Code จะมีลักษณะตามตัวอย่างด้านบน ตัวอักษรสี่น้ำเงินให้อธิบายมาใหม่ อ่านแล้วไม่เข้าใจครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#10

Post by suka »

อาจารย์คะิ ขออนุญาตอธิบายด้วยรูปนะคะ ชีท Form เซลล์ E2 ค่าเป็น ผลิต หรือ ประกอบ ก็จะได้ตามที่ต้องการ

แต่ถ้าชีท Form เซลล์ E2 ค่าเป็น เบิกสินค้า หรือ โอนสินค้า ยังไม่ใช่ ยังไม่ได้ค่ะ

Code: Select all

With formBook.Sheets("Form").Range("E2")
            If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
                 Call PasteData
                 Call PasteData2
            Else
                Call PasteData
            End If
        End With
You do not have the required permissions to view the files attached to this post.
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#11

Post by suka »

ชีท Form เซลล์ E2 ค่าเป็น เบิกสินค้า หรือ โอนสินค้า ได้ตามที่ต้องการค่ะ

แต่ถ้าชีท Form เซลล์ E2 ค่าเป็น ผลิต หรือ ประกอบ ยังไม่ได้ตามที่ต้องการค่ะ ในรูปแนบพื้นสีแดงคลุ่มกรอบแถว 24 เกินมาค่ะ ที่ต้องการในรูประบายสีเขียวเข้ม,เขียวอ่อน หากค่าเป็น ผลิต,ประกอบ สีเหลือง ค่าเป็น เบิกสินค้า,โอนสินค้า ค่ะ

Code: Select all

With formBook.Sheets("Form").Range("E2")
            If .Value = "เบิกสินค้า" Or .Value = "โอนสินค้า" Then
               Call PasteData2
            Else
                Call PasteData
                Call PasteData2
            End If
        End With
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#12

Post by snasui »

:D ค่อย ๆ ถามตอบกันไป และดูท่าว่าน่าจะถามตอบกันยาวพอควรครับ :mrgreen:

ควรจะอธิบายลักษณะเดิมว่าต้องการจะทำอะไร ภาพทั้งหลายที่แนบมาไม่สามารถสื่อความหมายถึงสิ่งที่ต้องการได้เนื่องจากไม่เชื่อมโยงกับ Code ที่ถาม

การตอบคำถามตามกระทู้นี้ยึดตาม Code ที่เขียนมาแล้ว โดยมีเงื่อนไขแต่เพียงว่า

หากเข้าเงื่อนไขชุดที่ 1 ให้ Run Code ชุดที่ 1
หากเข้าเงื่อนไขชุดที่ 2 ให้ Run Code ชุดที่ 2
หากเข้าเงื่อนไขชุดที่ 3 ให้ Run Code ชุดที่ 3
ฯลฯ

กรณีหลายเงื่อนไข สามารถใช้ If...then...elseif... มาช่วยได้ ดู Link นี้ประกอบครับ viewtopic.php?style=13&f=3&t=2798

การจะวาง Code แบบใดนั้นขึ้นอยู่กับเงื่อนไข ส่วนความถูกต้องในการทำงานของ Code จะต้องแยกออกจากกันกับการตัดสินใจว่าจะทำอะไรหรือไม่ทำอะไรตามเงื่อนไขที่กำหนด

หากเงื่อนไขถูกต้องแล้ว แต่ผลการทำงานยังไม่เป็นที่ต้องการจึงจะค่อยมาดูกันว่าเหตุใดจึงไม่ได้คำตอบ ในขั้นตอนนี้ให้อธิบายเงื่อนไขมาให้ชัดเจนว่าเมื่อเข้าเงื่อนไขใดแล้วให้ Run Code ใดครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#13

Post by suka »

สามารถรันโค้ดได้ตรงตามต้องการแล้วค่ะ ปรับใช้โค้ดด้านล่างนี้ค่ะ
ขอบคุณอาจารย์ ขอบคุณคุณ puriwutpokin ขอบคุณคุณ logic ที่เสียสละเวลาเพื่อช่วยเหลือช่วยแก้ปัญหาให้นะคะ
รู้สึกโชคดีมากมายได้เป็นสมาชิกบอร์ดนี้ค่ะ ขอบพระคุณทุกท่านนะคะ :thup:

Code: Select all

With formBook.Sheets("Form").Range("E2")
            If .Value = "ผลิต" Or .Value = "ประกอบ" Then
               Call PasteData
            Else
                Call PasteData2
                Call PasteData
            End If
        End With
User avatar
logic
Gold
Gold
Posts: 1506
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#14

Post by logic »

:thup: ขอแสดงความยินดีด้วยครับ :P
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#15

Post by suka »

เรียนอาจารย์ และ เพื่อน ๆ ช่วยปรับโค้ดค่ะ

ข้อ1.ตัวอย่างไฟล์แนบไฟล์ Form.xlsm ที่ MainCode เมื่อ Run Code แล้วข้อมูลไปไว้ที่ชีท Sheet1 ไฟล์ ProductionData.xlsx และ ชีท Movement ไฟล์ Stock.xlsx Code นี้สามารถทำได้ตามการค่ะ

ข้อ2.ต้องการเพิ่มโค้ดเพื่อ Copy ชีท Sheet1 ไฟล์ ProductionData.xlsx มาวางที่ชืท Database ไฟล์ Form.xlsm และ Copy ชีท Movement ไฟล์ Stock.xlsx มาวางที่ชืท MovementCopy ไฟล์ Form.xlsm

ติดปัญหาเมื่อเพิ่ม Code แล้ว Run Code วางแต่ข้อมูลข้อ 2 ไม่วางข้อมูลข้อ 1 ค่ะ

Code: Select all

Call MovementData_Copy
Call Data_Copy
ความต้องการให้วางข้อมูลทั้งข้อ 1 และข้อมูลข้อ 2 ด้วยค่ะ

ขอรบกวนช่วยด้วยค่ะที่ MainCode ควรปรับอย่างไรคะ

Code: Select all

Sub MainCode()
        Dim formBook As Workbook
        Dim wdShare As Workbook
        Dim response As Integer
        Dim r As Range
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Set formBook = ThisWorkbook
        formBook.Sheets("Form").Activate
        Call OpenStock
       Set wdShare = Workbooks.Open("C:\Documents and Settings\Administrator\Desktop\ProductionData.xlsx", False, False)
        Set r = formBook.Sheets("Form").Range("H2")
        If Application.CountIf(wdShare.Sheets("Sheet1").Range("F:F"), r) <> 0 Then
                MsgBox "โปรดตรวจสอบเลขที่เอกสารนี้ได้บันทึกแล้ว รายการซ้ำ "
            Exit Sub
        End If
        
        With formBook.Sheets("Form").Range("E2")        '<< == วางค่ากลุ่มเอกสาร
            If .Value = "โอนสินค้า" Or .Value = "เบิกสินค้า" Then
                Call PasteData
                Call PasteData2
                Call PasteMovementData
                Call PasteMovementData2
            Else
                Call PasteData
                Call PasteMovementData
            End If
        End With
        Call MovementSort                  '<= Code ให้เรียงลำดับวันที่
        Call Sort                                    '<= Code ให้เรียงลำดับวันที่
        'Call MovementData_Copy
        'Call Data_Copy
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
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: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#16

Post by snasui »

:D เขียน Code สำหรับการ Copy ไว้แล้วหรือไม่ เขียนไว้ว่างอย่างไรโพสต์มาในฟอรัมด้วยครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#17

Post by suka »

อาจารย์คะ เมื่อได้ทำการแก้ไขโค้ดทั้ง 2 โค้ดด้านล่างนี้แล้ว สามารถแก้ปัญหาที่ติดถามมาในกระทู้ #15 ได้แล้วค่ะ

ขอถามปัญหาใหม่ค่ะ Code Copy ข้อมูลทั้งสองโค้ดด้านล่าง ต้องการเขียนให้คัดลอกเท่าจำนวนข้อมูลที่มีควรปรับโค้ดอย่างดีคะ

ชื่อ Data_Copy สำหรับ Copy ข้อมูจากชีท Sheet1 ไฟล์ ProductionData.xlsx เพื่อนำข้อมูลมาวางที่ชืท Database ไฟล์ Form.xlsm และ Code

ชื่อ MovementData_Copy สำหรับ Copy ข้อมูจากชีท Movement ไฟล์ Stock.xlsx เพื่อนำข้อมูลมาวางที่ชืท MovementCopy ไฟล์ Form.xlsm

Code: Select all

Sub Data_Copy()
         Dim rs As Range, rt As Range
         Dim wb As Workbook
         Dim formBook As Workbook
        Set formBook = ThisWorkbook
        Set wb = Workbooks("ProductionData.xlsx")
        Set rs = Workbooks("ProductionData.xlsx").Sheets(1).Range("a1:y2000")
        Set rt = formBook.Sheets("Database").Range("a1")
        rs.Copy: rt.PasteSpecial xlPasteValues
       Application.Goto reference:="OFFSET(R1C1,COUNTA(C1),0)"
       wb.Save
        wb.Close False
End Sub
และ

Code: Select all

Sub MovementData_Copy()
         Dim wbShare As Workbook
         Dim formBook As Workbook
        Set formBook = ThisWorkbook
        Set wbShare = Workbooks("Stock.xlsx")
        With wbShare.Sheets("Movement").Range("A1:P2000").Copy
             formBook.Worksheets("MovementCopy").Range("A1").PasteSpecial xlPasteValues
        End With
       Application.Goto reference:="OFFSET(R1C1,COUNTA(C1),0)"
       wbShare.Save
       wbShare.Close
       End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#18

Post by snasui »

suka wrote:ขอถามปัญหาใหม่ค่ะ Code Copy ข้อมูลทั้งสองโค้ดด้านล่าง ต้องการเขียนให้คัดลอกเท่าจำนวนข้อมูลที่มีควรปรับโค้ดอย่างดีคะ
:D สร้างตัวแปรขึ้นมาสำหรับการค้นหาว่าบรรทัดสุดท้ายของข้อมูลอยู่ที่บรรทัดใดแล้วค่อยนำตัวแปรนั้นไปใข้ต่อครับ

ยกตัวอย่างเช่น

Code: Select all

dim lstRow as long
With Workbooks("ProductionData.xlsx").Sheets(1)
    lstRow = .Range("a" & .rows.count).end(xlup).row
End With
'...Other code
Set rs = Workbooks("ProductionData.xlsx").Sheets(1).Range("a1:y" & lstrow)
'...Other code
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: VBA ต้องการวางข้อมูลเฉพาะค่าตามเงื่อนไขค่ะ

#19

Post by suka »

:thup: ได้ตรงตามที่ต้องการแล้วค่ะ ขอบคุณอาจารย์มาก ๆ ค่ะ ให้ทั้งความรู้ความช่วยเหลือมากมายเลยค่ะ
Post Reply