snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Public Sub Save()
Dim source As Range
Dim Lr As Integer
Dim mySheet As String
Application.ScreenUpdating = False
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
LL = Application.CountIf(.Range("a3:a41"), "<>")
Set source = .Range("a3", .Range("a" & .Rows.Count).End(xlUp)).Resize(LL, 4)
Workbooks.Open "C:\Users\it-support.cmk\Desktop\testmarcro\สรุปยอดรับ.xlsx"
source.Copy
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
mySheet = Format(.Range("a1").Value, "mmm")
End With
Windows("สรุปยอดรับ.xlsx").Activate
Worksheets(mySheet).Activate
Lr = Range("b" & Rows.Count).End(xlUp).Row + 1
Range("b" & Lr).PasteSpecial xlPasteValues
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
Range("b" & Lr).Offset(0, -1).Resize(LL, 1).Value = .Range("a1").Value
End With
End With
Application.CutCopyMode = False
Workbooks("รับเข้า.xlsm").Activate
Application.ScreenUpdating = True
End Sub
Public Sub Save()
Dim source As Range
Dim Lr As Integer
Dim mySheet As String
Application.ScreenUpdating = False
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
LL = Application.CountIf(.Range("a3:a41"), "<>")
Set source = .Range("a3", .Range("a" & .Rows.Count).End(xlUp)).Resize(LL, 4)
Workbooks.Open "C:\Users\it-support.cmk\Desktop\testmarcro\สรุปยอดรับ.xlsx"
source.Copy
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
mySheet = Format(.Range("a1").Value, "mmm")
End With
Windows("สรุปยอดรับ.xlsx").Activate
Worksheets(mySheet).Activate
Lr = Range("b" & Rows.Count).End(xlUp).Row + 1
Range("b" & Lr).PasteSpecial xlPasteValues
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
Range("b" & Lr).Offset(0, -1).Resize(LL, 1).Value = .Range("a1").Value
End With
End With
Application.CutCopyMode = False
Workbooks("รับเข้า.xlsm").Activate
Application.ScreenUpdating = True
End Sub
เท่าที่ทราบนะครับ ถ้าค่านั้นมีค่าเดียว ไม่จำเป็นต้องประกาศตัวแปร ก็ได้ เช่น For i = 1 TO 10 , i ก็ไม่จำเป็นต้องประกาศครับ แต่ถ้าไม่อยากให้มีการเข้าใจผิดในการหาค่าตัวแปร ควรประกาศเป็น Dim LL As Long ตามนี้ครับ
ส่วน Resize ไว้สำหรับยืดช่วงที่ต้องการครับ ในที่นี้ ยืดจาก LL ไป 4 คอลัมน์ครับ
Public Sub Save()
Dim source As Range
Dim Lr As Integer
Dim mySheet As String
Application.ScreenUpdating = False
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
LL = Application.CountIf(.Range("a3:a41"), "<>")
Set source = .Range("a3", .Range("a" & .Rows.Count).End(xlUp)).Resize(LL, 4)
Workbooks.Open "C:\Users\it-support.cmk\Desktop\testmarcro\สรุปยอดรับ.xlsx"
source.Copy
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
mySheet = Format(.Range("a1").Value, "mmm")
End With
Windows("สรุปยอดรับ.xlsx").Activate
Worksheets(mySheet).Activate
Lr = Range("b" & Rows.Count).End(xlUp).Row + 1
Range("b" & Lr).PasteSpecial xlPasteValues
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
Range("b" & Lr).Offset(0, -1).Resize(LL, 1).Value = .Range("a1").Value
End With
End With
Application.CutCopyMode = False
Workbooks("รับเข้า.xlsm").Activate
Application.ScreenUpdating = True
End Sub
เท่าที่ทราบนะครับ ถ้าค่านั้นมีค่าเดียว ไม่จำเป็นต้องประกาศตัวแปร ก็ได้ เช่น For i = 1 TO 10 , i ก็ไม่จำเป็นต้องประกาศครับ แต่ถ้าไม่อยากให้มีการเข้าใจผิดในการหาค่าตัวแปร ควรประกาศเป็น Dim LL As Long ตามนี้ครับ
ส่วน Resize ไว้สำหรับยืดช่วงที่ต้องการครับ ในที่นี้ ยืดจาก LL ไป 4 คอลัมน์ครับ
Public Sub Save()
Dim source As Range
Dim Lr As Integer
Dim mySheet As String
Application.ScreenUpdating = False
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
LL = Application.CountIf(.Range("a3:a41"), "<>")
Set source = .Range("a3", .Range("a" & .Rows.Count).End(xlUp)).Resize(LL, 4)
Workbooks.Open "C:\Users\it-support.cmk\Desktop\testmarcro\สรุปยอดรับ.xlsx"
source.Copy
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
mySheet = Format(.Range("a1").Value, "mmm")
End With
Windows("สรุปยอดรับ.xlsx").Activate
Worksheets(mySheet).Activate
Lr = Range("b" & Rows.Count).End(xlUp).Row + 1
Range("b" & Lr).PasteSpecial xlPasteValues
With Workbooks("รับเข้า.xlsm").Sheets("รับเข้า")
Range("b" & Lr).Offset(0, -1).Resize(LL, 1).Value = .Range("a1").Value
End With
End With
Application.CutCopyMode = False
Workbooks("รับเข้า.xlsm").Activate
Application.ScreenUpdating = True
End Sub
เท่าที่ทราบนะครับ ถ้าค่านั้นมีค่าเดียว ไม่จำเป็นต้องประกาศตัวแปร ก็ได้ เช่น For i = 1 TO 10 , i ก็ไม่จำเป็นต้องประกาศครับ แต่ถ้าไม่อยากให้มีการเข้าใจผิดในการหาค่าตัวแปร ควรประกาศเป็น Dim LL As Long ตามนี้ครับ
ส่วน Resize ไว้สำหรับยืดช่วงที่ต้องการครับ ในที่นี้ ยืดจาก LL ไป 4 คอลัมน์ครับ
puriwutpokin wrote:
เท่าที่ทราบนะครับ ถ้าค่านั้นมีค่าเดียว ไม่จำเป็นต้องประกาศตัวแปร ก็ได้ เช่น For i = 1 TO 10 , i ก็ไม่จำเป็นต้องประกาศครับ แต่ถ้าไม่อยากให้มีการเข้าใจผิดในการหาค่าตัวแปร ควรประกาศเป็น Dim LL As Long ตามนี้ครับ
ส่วน Resize ไว้สำหรับยืดช่วงที่ต้องการครับ ในที่นี้ ยืดจาก LL ไป 4 คอลัมน์ครับ