ทาสีเซลล์ใหม่ด้วย excel VBA

ปัญหา

ฉันกำลังเขียนรหัสใน excel VBA เพื่อสร้างรายงานฉันยังใหม่กับ VBA นี่คือรหัสของฉัน

 Private Sub CommandButton1_Click () Dim a1 เป็น Integer Dim d1 เป็น Integer Dim r1 ในฐานะ Integer a1 = Sheet1.Cells (2, 3) d1 = a1 8 r1 = a1 Mod 8 หาก d1> = 5 แล้ว Sheet1.Cells.Range ("A20 : E20 "). Interior.Color = vbBlack Else สำหรับ cnt = 1 ถึง d1 Sheet1.Cells (20, cnt) .Interior.Color = vbBlack ถัดไป cnt ถ้า r1 0 แล้ว Sheet1.Cells (20, cnt) .Interior.Color = vbBlack Sheet1.Cells (20, cnt) .Font.Color = vbWhite Sheet1.Cells (20, cnt) = (8 - r1) สิ้นสุดถ้า End ถ้า End Sub 

แนวคิดพื้นฐานคือเซลล์สีหลังจากคลิกปุ่มคำสั่งตามค่าใน Cells (2, 3) เซลล์จะได้สีตามจำนวนทวีคูณ 8 ปัญหาที่ฉันเผชิญคือเซลล์เก็บสีอย่างถาวร

ตัวอย่างเช่นขึ้นอยู่กับค่าในเซลล์ (2, 3) ถ้า 5 เซลล์ได้รับสีพวกเขายังคงอยู่ที่นั่นอย่างถาวรเมื่อฉันเปลี่ยนค่าในเซลล์ (2, 3) และคลิกที่ปุ่มคำสั่งทาสีของเซลล์ไม่เกิดขึ้น .. ใครช่วยกรุณาแนะนำฉันเกี่ยวกับเรื่องนี้?

สารละลาย

ลองนี่ที่จุดเริ่มต้นของรหัส การทำเช่นนี้จะล้างเซลล์ทั้งหมดในแผ่นงานที่มีสี

 Cells.Select Selection.Interior.ColorIndex = xlNone Cells (2, 3). เลือก Private Sub CommandButton2_Click () Dim a1 เป็น Integer Dim d1 เป็น Integer Dim r1 เป็น Integer Cells.Select Selection.Interior.ColorIndex เลือก (2, 3) ). เลือก a1 = Sheet1.Cells (2, 3) d1 = a1 8 r1 = a1 Mod 8 หาก d1> = 5 จากนั้น Sheet1.Cells.Range ("A20: E20"). Interior.Color = vbBlack Else สำหรับ cnt = 1 ถึง d1 Sheet1.Cells (20, cnt) .Interior.Color = vbBlack ถัดไป cnt หาก r1 0 จากนั้น Sheet1.Cells (20, cnt) .Interior.Color = vbBlack Sheet1.Cells (20, cnt) vbWhite Sheet1.Cells (20, cnt) = (8 - r1) สิ้นสุดถ้า End ถ้า End Sub 

บันทึก

ขอบคุณ Helper สำหรับเคล็ดลับนี้ในฟอรัม

บทความก่อนหน้านี้ บทความถัดไป

เคล็ดลับยอดนิยม