แมโคร: แทรกแถวใหม่เหนือเซลล์ที่มีค่า


0

ฉันมีคอลัมน์ที่มีค่าต่อไปนี้: A1 = 0 A2 = 1 A3 = 3 A4 = 4 A5 = 0 A6 = 1

ฉันต้องการเลือกคอลัมน์ A และแทรกคอลัมน์ใหม่ด้านบนอินสแตนซ์ใด ๆ ของ 0

ฉันลองใช้รหัสต่อไปนี้แล้ว แต่ฉันพบข้อผิดพลาดและไม่แน่ใจว่าเกิดอะไรขึ้น ฉันเชื่อว่ามันเป็น OFFSET ที่ทำให้เกิดปัญหาฉันไม่แน่ใจ 100%

Dim c As Range
  For Each c In Range("A:A")
    If c.Value Like "0" Then
      c.Offset(-1, 0).EntireRow.Insert
    End If
  Next c

มันบอกว่าต่อไปนี้:

ข้อผิดพลาดรันไทม์ '1004': แอปพลิเคชันที่กำหนดหรือ   ข้อผิดพลาดที่กำหนดโดยวัตถุ

จากนั้นก็ไฮไลท์ c.Offset(-1, 0).EntireRow.Insert ในรหัส


1
วิธีการเกี่ยวกับการแสดงให้เราเห็นข้อผิดพลาดที่คุณได้รับ?
sjngm

ฉันพยายามโพสต์ภาพหน้าจอ แต่ฉันไม่มีชื่อเสียงพอที่จะทำเช่นนั้น มันระบุสิ่งต่อไปนี้: ข้อผิดพลาดรันไทม์ '1004': ข้อผิดพลาดที่กำหนดโดยแอปพลิเคชันหรือวัตถุที่กำหนด จากนั้นไฮไลต์ "c.Offset (-1, 0) .EntireRow.Insert" ในรหัส
NeverPhased

คำตอบ:


1

ไม่มีเซลล์อยู่ที่ Range("A1").offset(-1)ดังนั้นจึงล้มเหลวเนื่องจากไม่มีวัตถุ เปลี่ยนแปลง A1 เพื่อสิ่งอื่นและมันจะทำงานเป็นอย่างอื่น

นี่อาจเป็นสิ่งที่คุณต้องการทำ -

Sub test()
Dim c As Range
  For Each c In Range("A:A")
    If c.Value Like "0" Then
      Rows(c.Row).Insert shift:=xlDown
    End If
  Next c
End Sub

แต่คุณจะติดอยู่ในวงวนไม่สิ้นสุดด้วยรหัสนี้ คุณควรมีอะไรแบบนี้แทน -

Sub test()
Dim d As Integer
d = Range("A:A").End(xlDown).Row
Dim c As Range
  For i = d To 1 Step -1
    If Cells(i, 1).Value Like "0" Then
      Rows(Cells(i, 1).Row).Insert shift:=xlDown
    End If
  Next
End Sub
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.