Page 1 of 1
รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 9:03 am
by toon10510
คือผมต้องการให้วางสูตรในคอลัมภ์ที่เรากำหนดไปเรื่อยๆครับจนสุดตาราง
ปัญหาคือผมยังไม่ค่อยคล่องเรื่องคำสั่ง Loop ครับถ้าไม่ใช้ Loop เข้ามาช่วย
หากช่องตารางมีจำนวนมาก ผมต้องใช้สูตรเป็นจำนวนมากเลยครับในการใส่โค๊ด
จึงขอคำชี้แนะจากผู้รู้ครับ ผมลองมาหลายโค๊ด จนตอนนี้ไปไม่ได้แล้วครับ
ขอบพระคุณครับ
Re: รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 11:10 am
by nattasiray
สอบถามเพิ่มเติม
1 คอลัมน์สุดท้ายเปลี่ยนแปลงตลอดทุกครั้งที่ข้อมูลเพิ่มหรือไม่
2 บรรทัดเริ่มต้นคงที่ ส่วนบรรทัดสุดท้ายไม่คงที่ใช่หรือไม่
Re: รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 11:21 am
by toon10510
ตอบครับ
1. เปลี่ยนแปลงครับ
2. บรรทัดเริ่มต้นและบรรทัดสุดท้ายคงที่ครับ
คือผมต้องการวางสูตรไว้ตาม Colum ที่ผมได้ถามไปข้างต้น เพราะตารางของจริงมี Colum จำนวนมากครับ
จึงอยากรบกวน ขอคำชี้แนะเรื่อง Loop for ครับ
Re: รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 11:47 am
by toon10510
nattasiray wrote:สอบถามเพิ่มเติม
1 คอลัมน์สุดท้ายเปลี่ยนแปลงตลอดทุกครั้งที่ข้อมูลเพิ่มหรือไม่
2 บรรทัดเริ่มต้นคงที่ ส่วนบรรทัดสุดท้ายไม่คงที่ใช่หรือไม่
Re: รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 1:22 pm
by nattasiray
Code: Select all
Sub btnCopyPasteFormula_Click()
Dim lngColumnNum As Long, lngRound As Long, strColumn As String
'strColumn = IIf(Application.Version >= 12, "XFD", "IV")
'lngColumnNum = Range(strColumn & "2").End(xlToLeft).Column
lngColumnNum = Range("V2").End(xlToLeft).Column
Worksheets("Sheet1").Range("C1").Copy
For lngRound = 1 To lngColumnNum Step 2
Range(Cells(3, lngRound), Cells(11, lngRound)).PasteSpecial xlPasteFormulas
Next lngRound
End Sub
Re: รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 1:34 pm
by niwat2811
Code: Select all
Sub test()
Dim lc As Long
Dim r As Range
lc = Cells(2, Columns.Count).End(xlToLeft).Column
With Sheets("Sheet1")
For Each r In Range(Cells(2, 1), Cells(2, lc))
If r = "D/0" Then
r.Offset(1, 0).Resize(8, 1).Formula = "=$A$1+$B$1"
End If
Next r
End With
End Sub
แบบนี้ใช้ได้ไหมครับ
Re: รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 3:59 pm
by toon10510
nattasiray wrote:Code: Select all
Sub btnCopyPasteFormula_Click()
Dim lngColumnNum As Long, lngRound As Long, strColumn As String
'strColumn = IIf(Application.Version >= 12, "XFD", "IV")
'lngColumnNum = Range(strColumn & "2").End(xlToLeft).Column
lngColumnNum = Range("V2").End(xlToLeft).Column
Worksheets("Sheet1").Range("C1").Copy
For lngRound = 1 To lngColumnNum Step 2
Range(Cells(3, lngRound), Cells(11, lngRound)).PasteSpecial xlPasteFormulas
Next lngRound
End Sub
ขอขอบคุณอาจารย์ที่สละมากเลยนะครับ Code ใช้งานได้ตามความต้องการเลยครับ
Re: รบกวนถามการใช้ Loop ทำคำสั่งไปเรื่อยๆครับ VBA
Posted: Tue Aug 13, 2013 4:00 pm
by toon10510
niwat2811 wrote:Code: Select all
Sub test()
Dim lc As Long
Dim r As Range
lc = Cells(2, Columns.Count).End(xlToLeft).Column
With Sheets("Sheet1")
For Each r In Range(Cells(2, 1), Cells(2, lc))
If r = "D/0" Then
r.Offset(1, 0).Resize(8, 1).Formula = "=$A$1+$B$1"
End If
Next r
End With
End Sub
แบบนี้ใช้ได้ไหมครับ
ขอบคุณอาจารย์มากครับ Code ใช้ได้ตามต้องการและมีประโยชน์มากเลยครับผม