วิธีคัดลอกข้อความที่มีแท็บจาก Excel โดยไม่มีเครื่องหมายคำพูด?


0

ฉันสังเกตเห็นว่าเซลล์ที่มีแท็บนั้นถูกคัดลอกด้วยอัญประกาศ ฉันกำลังมองหาการคัดลอกเซลล์ชนิดนี้โดยไม่มีเครื่องหมายคำพูด


ตัวอย่างที่เป็นตัวอย่าง

ฉันมี 5 เซลล์ A1, A2, A3, A4 และ A5 สูตรสำหรับพวกเขาคือ:

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือลักษณะที่ปรากฏบน Excel:

ป้อนคำอธิบายรูปภาพที่นี่

สูตรถูกตั้งค่าเช่นนั้นเพื่อให้ได้ผลลัพธ์ตามที่คาดไว้เมื่อคัดลอกเซลล์ไปยังโปรแกรมแก้ไขข้อความเป็นดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

น่าเสียดายนี่คือสิ่งที่ฉันได้รับ:

ป้อนคำอธิบายรูปภาพที่นี่

ปัญหาอยู่ที่คำพูด สิ่งที่ฉันต้องการคือการคัดลอกเซลล์เหล่านั้นโดยไม่มีเครื่องหมายอัญประกาศ


ฉันเข้าใจว่าการค้นหา / แทนที่"tabและ1"เป็นโซลูชันที่ยอมรับไม่ได้สำหรับข้อมูลจริงของคุณหรือไม่ หรือนี่เป็นคำถามสร้างความรำคาญทั่วไปและไม่เฉพาะเจาะจงกับไฟล์ใดไฟล์หนึ่ง?
Engineer Toast

ใช่นี่ไม่ใช่คำถามสถานการณ์ที่เฉพาะเจาะจงมันเป็นคำถามที่น่ารำคาญ สิ่งที่ฉันต้องทำคือคัดลอกเซลล์โดยไม่มีเครื่องหมายคำพูดคู่ ค้นหา / แทนที่สำหรับ"tabและ1"ไม่ใช่วิธีการแก้ปัญหาเนื่องจากสถานการณ์ที่กล่าวถึงนั้นมีวัตถุประสงค์เพื่อเป็นตัวอย่างเท่านั้นและฉันต้องการโซลูชันที่ฝังอยู่ภายใน Excel เพื่อให้ฉันสามารถทำตามวัตถุประสงค์ของฉันให้เสร็จสิ้นได้สองสามขั้นตอนโดยไม่ต้องใส่เครื่องหมายอัญประกาศ
โอมาร์

จากนั้น VBA ที่ฉันส่งให้ตั้งค่าไปยังคำสั่งแป้นพิมพ์จะทำการหลอกลวง
Engineer Toast

คำตอบ:


2

วิธีการแก้ปัญหา VBA? การดำเนินการนี้จะคัดลอกตัวเลือกทั้งหมดจากเซลล์ที่เลือกด้านบนซ้ายไปยังเซลล์ที่เลือกด้านล่างขวา หากคุณเลือกเซลล์ที่ไม่ลงรอยกันรหัสนี้จะรวบรวมทุกอย่างระหว่างด้านบนซ้ายและขวาล่าง คุณสามารถเปลี่ยนได้แน่นอน วิธีนี้ง่ายกว่า มันทำให้แท็บระหว่างคอลัมน์และตัวแบ่งบรรทัดระหว่างแถว

Sub CopyText()

    Dim obj As Object
    Dim rng As Range
    Dim r As Long, c As Long
    Dim s As String
    Dim rTL, rBR, cTL, cBR

    rTL = Selection.Cells(1, 1).Row
    cTL = Selection.Cells(1, 1).Column

    For Each rng In Selection.Cells
        If rng.Row < rTL Then rTL = rng.Row
        If rng.Column < cTL Then cTL = rng.Column
        If rng.Row > rBR Then rBR = rng.Row
        If rng.Column > cBR Then cBR = rng.Column
    Next

    For r = rTL To rBR
        For c = cTL To cBR
            s = s & Cells(r, c).Value
            If c < cBR Then s = s & Chr(9)
        Next
        If r < rBR Then s = s & vbNewLine
    Next

    Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    obj.SetText s
    obj.PutInClipboard
    Set obj = Nothing

End Sub

หากคุณสงสัยเกี่ยวกับส่วนนี้:

Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

... นั่นเป็นเพียงเวอร์ชันล่าช้าSet obj = New DataObjectดังนั้นคุณไม่จำเป็นต้องเพิ่มการอ้างอิงใด ๆ ใน VBA

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.