คุณสามารถทำให้ Excel เปลี่ยนสีของเซลล์อื่นได้เมื่อคลิกเซลล์นี้หรือไม่


2

ฉันลอง Googeling แล้วแต่ไม่พบคำตอบ ... ผิดหวังมาก

ฉันพยายามทำสิ่งนี้ใน Excel:

  1. เลือกเซลล์ B1 - B5 (หรือเพียง B1)
  2. เซลล์ที่เลือก A1 (ซึ่งมีสีเหลือง)
  3. Cells B1 - B5 (หรือเพียง B1 ถ้าเลือก B1 เท่านั้น) ก็จะกลายเป็นสีเหลือง

นี่คือสเปรดชีตใบไม้ (วันหยุด) และมีสีต่างกันสำหรับจุดประสงค์ในการลาที่แตกต่างกัน (เช่นป่วยวันหยุดครึ่งวันเป็นต้น) ทุกครั้งที่มีคนไฮไลต์เซลล์ในปฏิทินสเปรดชีตพวกเขาสามารถคลิกที่สีที่สอดคล้องกันเพื่อสีเซลล์ที่เลือก ฉันพยายามจำลองพฤติกรรมเดียวกันนี้

สิ่งนี้ทำโดยใครบางคนสำหรับแผ่นงาน Excel ของสำนักงานของฉัน แต่ฉันไม่สามารถติดต่อบุคคลเดิมที่ทำ ฉันพยายามทำซ้ำฟังก์ชั่นนี้ในแผ่นงาน excel ใหม่

ฉันต้องทำอย่างไร? มาโคร? สคริปต์ VB หรือไม่


มีเหตุผลที่คุณไม่ได้ใช้เครื่องมือเติมสีบนริบบิ้นเพื่อทำให้เซลล์เป็นสีเหลืองหรือไม่?
Sir Adelaide

วิธีการเกี่ยวกับ Format painter ตัวเลือก? มันจะใช้ได้ผลสำหรับคุณหรือไม่
Prasanna

ฉันคิดว่ามันเป็นไปได้เฉพาะกับมาโคร ดูเหมือนจะไม่ค่อยมีประโยชน์: ทุกครั้งที่คลิกจะเปลี่ยนสีของเซลล์
Merzavets

ตอบคำถามของคุณคุณควรดูที่แถบสูตรเพื่อตรวจสอบว่ามีสูตรหรืออะไรบ้าง นอกจากนี้คุณควรกด Alt + F11 และดูว่ามีมาโครบางตัวเชื่อมต่อซึ่งทำงานเป็นตัวจัดการการคลิกเมาส์
Merzavets

ใช่ฉันสามารถใช้เครื่องมือเติมสี แต่สำหรับสเปรดชีทใบ (วันหยุด) และมีสีที่แตกต่างกันสำหรับวัตถุประสงค์การลาที่แตกต่างกัน (เช่นป่วยวันหยุดพักผ่อนครึ่งวัน ฯลฯ ) ทุกครั้งที่มีคนไฮไลต์เซลล์ในปฏิทินของสเปรดชีตพวกเขาสามารถคลิกสีที่เกี่ยวข้องเพื่อกำหนดสีของเซลล์ที่เลือก ฉันพยายามจำลองพฤติกรรมเดียวกันนี้
FrustratedExcelUser

คำตอบ:


0

คุณสามารถทำได้ผ่าน VBA นี่คือรหัสบางส่วนที่คุณสามารถวางลงในวัตถุแผ่นงาน

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = Range("A1").Address Then
        If Not lastRange Is Nothing Then
            lastRange.Interior.Color = Range("A1").Interior.Color
        End If
    Else
       Set lastRange = Target
    End If
End Sub

lastRange วัตถุจะถูกบันทึกจากการเลือกไปยังการเลือก นี่เป็นวิธีเดียวที่จะให้ VBA จดจำช่วงที่เราต้องการเน้น เมื่อใดก็ตามที่คุณเปลี่ยนการเลือกมันจะตั้งค่าการเลือกเป็น lastRange เว้นแต่ มันเป็น A1 ซึ่งในกรณีนี้สีที่เลือกก่อนหน้าเป็นสีใด ๆ A1 คือ..


อย่างไรก็ตามจากความคิดเห็นของคุณความต้องการของคุณนั้นกว้างกว่านี้เล็กน้อย เนื่องจากคุณต้องการช่วงของเซลล์ที่มีสีต่าง ๆ นี่อาจเป็นรหัสที่คุณต้องการ:

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
            If Not lastRange Is Nothing Then
                lastRange.Interior.Color = Target.Interior.Color
                Exit Sub
            End If
        End If
    End If
    Set lastRange = Target
End Sub

ตอนนี้มันมีเซลล์มากมาย A1:A5 ที่สามารถเป็นสีที่ต่างกันทั้งหมด หากคุณเลือกเซลล์เดียวในช่วงนั้นมันจะตั้งค่าการเลือกก่อนหน้าของคุณให้เป็นสีเดียวกับเซลล์ปัจจุบัน คุณสามารถปรับ A1:A5 ช่วงเป็นสิ่งที่คุณต้องการ


นี่เป็นสิ่งที่แปลกประหลาดอย่างหนึ่งที่ฉันรู้: ถ้าคุณเลือกช่วงจากนั้นก็เป็นรูปร่าง A1ช่วงที่คุณเลือกไว้ก่อนหน้านี้จะถูกเก็บไว้เป็น lastRange. อาจเป็นไปได้ แต่ฉันไม่ทราบกรณีการใช้ของคุณ


แค่นั้นแหละ! นี่คือหนึ่งที่สมบูรณ์แบบ ฉันขอโทษที่ตอบช้า ขอบคุณมาก!
FrustratedExcelUser

ดีใจที่มันทำงาน คลิกเครื่องหมายถูกที่อยู่ถัดจากคำตอบของฉันเพื่อทำเครื่องหมายว่ายอมรับแล้วปิดคำถาม
Engineer Toast

0

เปิดไฟล์ excel ของคุณและใน บ้าน ไปที่ การจัดรูปแบบตามเงื่อนไข และคลิกที่จัดการกฎ คุณควรเห็นกฎที่เกี่ยวข้องกับเซลล์ที่กล่าวถึงในคำถามของคุณ

enter image description here

ตรวจสอบลิงค์ microsoft ด้านล่างเพื่อรับข้อมูลเพิ่มเติม:

วิธีใช้การจัดรูปแบบตามเงื่อนไข


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