snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
กำหนดไว้ใน CommandButton ของไฟล์ order ตาม code นี้ครับใจจริงผมอยากให้ทุกครั้งที่กดปุ่ม เปลี่ยนผู้ซื้อไปไปโชว์ที่ sheets2 ครับ พอจะมีวิธีไหมครับ และอีกปัญหาก็คือ รายการสินค้าของผู้ซื้อนั้นๆขึ้นไม่ครบ ตามไฟล์ order ครับ รบกวนช่วยแนะนำหน่อยครับ
Private Sub CommandButton1_Click()
a = Worksheets("Order").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To a
If Worksheets("Order").Cells(i, 1).Value = "1.Tony" Then
Worksheets("Order").Rows(i).Copy
Worksheets("Sheet2").Activate
b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("sheet2").Cells(b + 1, 1).Select
ActiveSheet.Paste
Worksheets("Order").Activate
End If
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("Order").Cells(1, 1).Select
End Sub
Dim rall As Range, i As Integer
Dim rselect As Range, rsectAll As Range
Dim rtarget As Range, round As Long
Dim rw As Long, cl As Long
With Sheets("Order")
.Range("d1").Value = .Range("d1").Value + 1
round = .Range("d1").Value
Set rall = .Range("b2", .Range("b" & .Rows.Count).End(xlUp)) _
.Offset(0, -1).SpecialCells(xlCellTypeConstants)
If .Range("d1").Value > rall.Areas.Count Then
.Range("d1").Value = rall.Areas.Count
Exit Sub
End If
Set rselect = rall.Areas(.Range("d1").Value)
If round < rall.Areas.Count Then
Set rselectAll = .Range(rselect, rselect.End(xlDown).Offset(-1, 0)).Resize(, 3)
ElseIf round = rall.Areas.Count Then
Set rselectAll = .Range(rselect, .Range("b" & .Rows.Count).End(xlUp).Offset(0, -1)) _
.Resize(, 3)
Else
Exit Sub
End If
rw = rselectAll.Rows.Count
cl = rselectAll.Columns.Count
With .Parent.Worksheets("Sheet2")
Set rtarget = .Range("b" & .Rows.Count).End(xlUp).Offset(1, -1)
With rtarget
.Resize(rw, cl).Value = rselectAll.Value
End With
End With
End With