Page 1 of 1

แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 9:48 pm
by pk750
เรียน คนควน

รบกวนแก้ไข vba ให้สมบูรณ์หน่อยครับ ผมใช้มันแล้วไม่สามารถแทกรแถวได้ครับ ฟ้อง error ตลอด
error ที่ฟ้องคือ To prevent possible loss of data, Excel cannot shift nonblank cell off of the worksheet. Select another location in which to insert new cells, or deletedate. If you do not have data in cell that can be shifted off of the worksheet, you can reset which cell Excel considers nonblank, T^o do this, press CTRT + End to locate the last nonblank cell on the worksheet delete this cell and all cells between it and the last row and column of your data the save.


ส่วน vba ของผมคือ อันนี้ครับ
Sub price()

Worksheets("PRICE ").Select
Range("B4").Select
ActiveCell.FormulaR1C1 = _
"=IF(R2C-1='RATE '!R1C1,VLOOKUP(RC1,'RATE '!R4C1:R4000C6,6,0))"
Selection.AutoFill Destination:=Range("B4:B700")
Range("B4:B700").Select
Columns("B:B").Select
Selection.Copy
Selection.Insert Shift:=xlToRight
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[1]+1"
Range("B3").Select
End Sub

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 9:57 pm
by snasui
:D การที่แทรกแถวไม่ได้เนื่องจากบรรทัดสุดท้ายหรือก่อนหน้านั้นไม่เป็นบรรทัดว่าง Microsoft Excel จึงฟ้องเช่นนั้น การที่ไม่ว่างอาจจะเกิดจากไม่ได้ตั้งใจ เช่นเผลอไปโดน Space bar ขณะที่ Cursor อยู่ในบรรทัดสุดท้ายของ Worksheet จะทำให้เซลล์นั้นไม่เป็นเซลล์ว่างทันที

กรณีเช่นนี้ให้ไปยังบรรทัดสุดท้ายที่มีข้อมูล แล้วลบค่าในบรรทัดหลังจากนั้นทิ้งไปทั้งหมดครับ

สำหรับการโพสต์ Code ให้แสดงเป็น Code อ่านที่กระทู้นี้ครับ viewtopic.php?f=3&t=1187

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 10:14 pm
by pk750
ขอบคุณมากพี่หลวง เดียวผมวาง code ให้ รบกวนแก้ให้สมบูรณ์ทีครับ

Code: Select all

Sub price()

Worksheets("PRICE ").Select
Range("B4").Select
ActiveCell.FormulaR1C1 = _
"=IF(R2C-1='RATE '!R1C1,VLOOKUP(RC1,'RATE '!R4C1:R4000C6,6,0))"
Selection.AutoFill Destination:=Range("B4:B700")
Range("B4:B700").Select
Columns("B:B").Select
Selection.Copy
Selection.Insert Shift:=xlToRight
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[1]+1"
Range("B3").Select
End Sub

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 10:15 pm
by snasui
:D ที่บอกว่าไม่สมบูรณ์ ติดขัดบรรทัดไหน อย่างไรครับ :?:

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 10:19 pm
by pk750
Selection.AutoFill Destination:=Range("B4:B700")
Range("B4:B700").Select

บรรทัดนี่อะครับ ผมสามารถแก้ให้มันเป็นแทรกทั้ง Columns ได้ไหมครับ
คือว่าผมไม่ได้เขียนอะครับ ใช้วิธีให้มันจดจำเอา ทำแบบง่ายๆนะครับ ทำเป็นเรื่องเป็นราวไม่เป็น ไม่ทราบว่ารับสอนใหม่ครับ แฮะๆ

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 10:30 pm
by snasui
:D ต้องการให้แทรกเท่าใดก็เปลียนตรง Range("B4:B700") เป็นช่วงเซลล์ที่ต้องการครับ ตัวเลข 700 จะปรับเป็นเท่าไรก็ได้ที่ไม่เกินบรรทัดทั้งหมดของชีทนั้น ๆ ครับ

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 10:33 pm
by pk750
ขอบคุณครับ ขอถามอีกข้อนะครับ

ถ้าหากว่าผมแทร แทวจนเต็มถึง แถว IV แล้วแต่ยังจำเป็นต้องใช้ Sheet นี่อยู่ต้องทำไงครับ

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 10:35 pm
by snasui
:D ไม่เข้าใจครับ

จะแทรกไปเท่าใดหรือจะไม่แทรกก็สามารถยังจะใช้ได้อยู่ ไม่ทราบมีปัญหาใดครับ

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 10:47 pm
by pk750
คือผมเข้าใจว่า excel มีแถวแค่ แถว IV ครับ ถ้าใช้งานเต็มแล้วจะแทรกได้อีกเหรอครับ

Re: แทรกแถวไม่ได้

Posted: Sun Jun 22, 2014 11:20 pm
by snasui
:D IV คือคอลัมน์ ไม่ใช่แถว

และไม่ว่าจะเป็นแถวหรือคอลัมน์ จะไม่สามารถลดให้เหลือน้อยลงหรือเพิ่มให้มากขึ้นได้อีก มีเท่าไรก็เท่านั้นครับ