Page 1 of 2

ถามเกี่ยวกับ Marcro ครับ

Posted: Tue Feb 18, 2014 4:23 pm
by Tahiti80s
สอบถามเกี่ยว การ เขียนโค๊ด VBA ครับ ถ้าเราต้องการให้ มาโครข้อมูล ไปไว้อีก ชีส แต่ไฟล์ที่ได้มันเป็นลักษณะ แนวนอนครับ อยากให้ข้อมูลที่Copyไปอีก Sheet ไปเป็นลักษณะแนวตั้ง เหมือนกับตอนทที่ยังไม่ก๊อบปี้ ต้องเขียนโค้ด อย่างไรบ้าง คือผมก็ไม่ค่อยมีความรู้เกี่ยวกับ VBA เท่าไหร่ครับ รบกวนด้วยครับ ขอบคุณมากครับ :D :D รายละเอียดตามไฟลที่แนบไปครับผม

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Tue Feb 18, 2014 6:30 pm
by snasui
:D ช่วยทำตัวอย่างผลลัพธ์ที่ต้องการมาด้วยเพื่อจะได้เข้าใจตรงกันครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 8:31 am
by Tahiti80s
snasui wrote::D ช่วยทำตัวอย่างผลลัพธ์ที่ต้องการมาด้วยเพื่อจะได้เข้าใจตรงกันครับ
ตัวอย่างตามไฟล์ที่แนบไปข้างต้นครบอาจารย์ :D :D

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 11:07 am
by snasui
:D ทำมาใน Excel ครับ ชี้ให้เห็นว่าเดิมข้อมูลอยู่ในชีทไหน เซลล์ไหน ต้องการคำตอบในชีทไหน เซลล์ไหน มีค่าเท่าใดบ้าง ฯลฯ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 11:31 am
by Tahiti80s
snasui wrote::D ทำมาใน Excel ครับ ชี้ให้เห็นว่าเดิมข้อมูลอยู่ในชีทไหน เซลล์ไหน ต้องการคำตอบในชีทไหน เซลล์ไหน มีค่าเท่าใดบ้าง ฯลฯ
ต้องการให้ข้อมูล Sheet กะเช้า ครับ ในตารางทั้งหมดครับ อยากให้กด Command Box แล้วส่งค่าไปที่ Sheet DataM ครับ ปกติส่งค่าไปได้แต่ มันเป็นลักษณะแนวนอน ตามไฟล์ ที่แนบไปครับ อาจารย์ อยากให้ข้อมูลเป็นลักษณะแนวตั้ง ครับ ต้องแก้โค๊ดอย่างไรบ้างครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 11:58 am
by Tahiti80s
สอบถามอาจารย์เพิ่มเติมครับ อาจารย์เปิดสอน Excel หรือเปล่าครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 12:55 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub test()
    Dim r1 As Range, r2 As Range
    Dim rTarget As Range
    With Sheets("¡ÐàªéÒ")
        Set r1 = .Range("a30:g30")
        Set r2 = .Range("b9:j16")
    End With
    With Sheets("DataM")
        Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
        r1.Copy
        rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
        r2.Copy
        rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
End Sub
สำหรับการสอนมีทีมงานที่สนิทกันสอนอยู่ครับ ลองติดต่อไปตาม Link นี้ครับ viewtopic.php?f=12&t=6255

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 1:13 pm
by Tahiti80s
snasui wrote::D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub test()
    Dim r1 As Range, r2 As Range
    Dim rTarget As Range
    With Sheets("¡ÐàªéÒ")
        Set r1 = .Range("a30:g30")
        Set r2 = .Range("b9:j16")
    End With
    With Sheets("DataM")
        Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
        r1.Copy
        rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
        r2.Copy
        rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
End Sub
สำหรับการสอนมีทีมงานที่สนิทกันสอนอยู่ครับ ลองติดต่อไปตาม Link นี้ครับ viewtopic.php?f=12&t=6255
ขอบคุณมากๆครับอาจารย์ ^^

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 3:02 pm
by Tahiti80s
Tahiti80s wrote:
snasui wrote::D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub test()
    Dim r1 As Range, r2 As Range
    Dim rTarget As Range
    With Sheets("¡ÐàªéÒ")
        Set r1 = .Range("a30:g30")
        Set r2 = .Range("b9:j16")
    End With
    With Sheets("DataM")
        Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
        r1.Copy
        rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
        r2.Copy
        rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
End Sub
สำหรับการสอนมีทีมงานที่สนิทกันสอนอยู่ครับ ลองติดต่อไปตาม Link นี้ครับ viewtopic.php?f=12&t=6255
ขอบคุณมากๆครับอาจารย์ ^^
อาจารย์ครับจะประยุกต์ใช้ยังไงครับ พอดีผมยังไม่ค่อยเข้าใจเกี่ยวกับ Code VBA ผมก็ก๊อบมาลองผิดลองถูก แต่ยังไม่เข้าใจหลักการ เลยไปต่อไม่ได้ครับ ขอบคุณครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 4:25 pm
by snasui
:D สามารถใช้ Code นี้แทน Code เดิมครับ

สำหรับ VBA จำเป็นต้องปรับเองได้บ้าง ผู้ใช้งานจะต้องเรียนรู้มาเองก่อนตามลำดับ ติดตรงไหนแล้วสามารถถามมาได้เรือ่ย ๆ ครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 4:50 pm
by Tahiti80s
snasui wrote::D สามารถใช้ Code นี้แทน Code เดิมครับ

สำหรับ VBA จำเป็นต้องปรับเองได้บ้าง ผู้ใช้งานจะต้องเรียนรู้มาเองก่อนตามลำดับ ติดตรงไหนแล้วสามารถถามมาได้เรือ่ย ๆ ครับ
อาจารย์ครับ ติดตรงที่ตารางที่เรากรอกมัน ไม่ ทำการ Clear ครับ อาจารย์ ไม่ทราบว่าใช้คำสั่ง อะไรครับ ขอบคุณครับๆ :D :D

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Wed Feb 19, 2014 5:19 pm
by snasui
:D ลองปรับให้ Clear มาเองก่อนครับ ปรับแล้วติดตรงไหนสามารถถามมาได้เรือย ๆ ครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Thu Feb 20, 2014 3:48 pm
by Tahiti80s
snasui wrote::D ลองปรับให้ Clear มาเองก่อนครับ ปรับแล้วติดตรงไหนสามารถถามมาได้เรือย ๆ ครับ
ลองปรับดูตามนี้ไม่รู้ถูกหรอป่าว ผมยงังงๆครับ แต่ไม่ได้ -*- ต้องใส่เพิ่มเติมอย่างไรบ้างครับ ขอบคุณรับ
Sub DataM()
Dim r1 As Range, r2 As Range
Dim rTarget As Range
With Sheets("¡ÐàªéÒ")
Set r1 = .Range("a30:g30")
Set r2 = .Range("b9:j16")
End With
With Sheets("DataM")
Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
r1.Copy
rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
r2.Copy
rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = True
'clear input cells that contain constants
With rTarget
On Error Resume Next
With .Range(rTarget).Cells.SpecialCells(xlCellTypeConstants)
.ClearContents
Application.Goto .Cells(1) ', Scroll:=True
End With
On Error GoTo 0
End With
'clear input cells that contain constants
With rTarget
On Error Resume Next
With .Range(rTarget).SpecialCells(xlCellTypeConstants).ClearContents

Application.Goto .Cells(1) ', Scroll:=True
End With
On Error GoTo 0
End With


End Sub

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Thu Feb 20, 2014 5:18 pm
by snasui
:D แนบ Code มาพร้อมไฟล์ จะได้ช่วยทดสอบได้ครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Fri Feb 21, 2014 9:52 am
by Tahiti80s
snasui wrote::D แนบ Code มาพร้อมไฟล์ จะได้ช่วยทดสอบได้ครับ
รบกวนอาจารย์ด้วยครับ :D :D
Sub DataM()
Dim r1 As Range, r2 As Range
Dim rTarget As Range
With Sheets("¡ÐàªéÒ")
Set r1 = .Range("a30:g30")
Set r2 = .Range("b9:j16")
End With
With Sheets("DataM")
Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
r1.Copy
rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
r2.Copy
rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = True

'clear input cells that contain constants
With rTarget
On Error Resume Next
With .Range(rTarget).Cells.SpecialCells(xlCellTypeConstants)
.ClearContents
Application.Goto .Cells(1) ', Scroll:=True
End With
On Error GoTo 0
End With

End Sub

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Fri Feb 21, 2014 10:16 am
by snasui
:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub DataM()
    Dim r1 As Range, r2 As Range
    Dim rTarget As Range
    With Sheets("¡ÐàªéÒ")
        Set r1 = .Range("a30:g30")
        Set r2 = .Range("b9:j16")
    End With
    With Sheets("DataM")
        Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
        r1.Copy
        rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
        r2.Copy
        rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
    End With
    r2.ClearContents '<== this line for clear contents
    Application.CutCopyMode = True
End Sub

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Fri Feb 21, 2014 1:18 pm
by Tahiti80s
snasui wrote::D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub DataM()
    Dim r1 As Range, r2 As Range
    Dim rTarget As Range
    With Sheets("¡ÐàªéÒ")
        Set r1 = .Range("a30:g30")
        Set r2 = .Range("b9:j16")
    End With
    With Sheets("DataM")
        Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
        r1.Copy
        rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
        r2.Copy
        rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
    End With
    r2.ClearContents '<== this line for clear contents
    Application.CutCopyMode = True
End Sub
ขอบคุณอาจารย์มากๆครับ :thup: :cp: :D

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Fri Feb 21, 2014 1:23 pm
by Tahiti80s
Tahiti80s wrote:
snasui wrote::D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub DataM()
    Dim r1 As Range, r2 As Range
    Dim rTarget As Range
    With Sheets("¡ÐàªéÒ")
        Set r1 = .Range("a30:g30")
        Set r2 = .Range("b9:j16")
    End With
    With Sheets("DataM")
        Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
        r1.Copy
        rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
        r2.Copy
        rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
    End With
    r2.ClearContents '<== this line for clear contents
    Application.CutCopyMode = True
End Sub
ขอบคุณอาจารย์มากๆครับ :thup: :cp: :D
รบกวนอาจารย์อีกเรื่องครับ พอมัน Cut ไปหมดจริง สูตรมันก็ Cut ไปด้วยครับ ต้องแก้ไขตรงไหนครับ อาจารย์ ขอบคณครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Fri Feb 21, 2014 1:35 pm
by snasui
:shock: Code นั้นแค่ลบค่าในเซลล์ทิ้งไป ไม่ได้ Cut ครับ

สำหรับการปรับปรุง Code ต้องปรับปรุงมาเอง ติดแล้วค่อยถาม ไม่สามารถถามต่อเนื่องโดยไม่ผ่านการลองปรับมาเองในสิ่งที่ต้องการเพิ่มเติมจากเดิมครับ

Re: ถามเกี่ยวกับ Marcro ครับ

Posted: Thu Feb 27, 2014 4:13 pm
by Tahiti80s
snasui wrote::shock: Code นั้นแค่ลบค่าในเซลล์ทิ้งไป ไม่ได้ Cut ครับ

สำหรับการปรับปรุง Code ต้องปรับปรุงมาเอง ติดแล้วค่อยถาม ไม่สามารถถามต่อเนื่องโดยไม่ผ่านการลองปรับมาเองในสิ่งที่ต้องการเพิ่มเติมจากเดิมครับ

Code: Select all

Sub Button7_Click()
    Dim r1 As Range, r2 As Range
    Dim rTarget As Range
    With Sheets("¡ÐàªéÒ")
        Set r1 = .Range("a30:g30")
        Set r2 = .Range("b9:j16")
    End With
    With Sheets("DataM")
        Set rTarget = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
        r1.Copy
        rTarget.Resize(r2.Rows.Count).PasteSpecial xlPasteValues
        r2.Copy
        rTarget.Offset(0, r1.Columns.Count).PasteSpecial xlPasteValues
    End With
     With rTarget
      On Error Resume Next
         With .Range(r2).Cells.SpecialCells(xlCellTypeConstants)
             .ClearContents
             Application.Goto .Cells(1) ', Scroll:=True
         End With
      On Error GoTo 0
    End With
    r2.ClearContents
    Application.CutCopyMode = True
End Sub

    
พยายามปรับโค้ดแล้วครับ มันก็ยังก๊อบปี้คัตสูตรไปหมดเลยครับ รบกวนอาจารย์ช่วยหน่อยครับ ขอบคุณครับ