VBA Long (ตัวอย่าง) | คำแนะนำทีละขั้นตอนสำหรับประเภทข้อมูลแบบยาวใน Excel VBA

Long Data Type ใน VBA คืออะไร?

Long เป็นประเภทข้อมูลใน VBAซึ่งใช้ในการจัดเก็บค่าตัวเลขเรารู้ว่าจำนวนเต็มมีค่าตัวเลขเช่นกัน แต่ Long นั้นแตกต่างจากจำนวนเต็มเนื่องจากช่วงสำหรับการจัดเก็บข้อมูลมีขนาดใหญ่มากในกรณีที่ประเภทข้อมูลแบบยาวมีความยาวเช่นกัน ประเภทข้อมูลเราสามารถเก็บค่าทศนิยมได้เช่นกันนี่คือประเภทข้อมูลที่สร้างขึ้น

“ ยาว”ตามชื่อก็ควรจะถือคุณค่าของสิ่งที่ยิ่งใหญ่ “ Long” คือประเภทข้อมูลตัวเลขใน VBA Excel

ประเภทข้อมูลแบบยาวใน Excel VBA สามารถเก็บค่าได้ตั้งแต่ 0 ถึง 2, 147, 483, 647 สำหรับจำนวนบวกและสำหรับจำนวนลบนั้นสามารถเก็บได้ตั้งแต่ 0 ถึง -2, 147, 483, 648

ประเภทข้อมูล VBA Long ต้องการพื้นที่เก็บข้อมูลหน่วยความจำ 4 ไบต์ของคอมพิวเตอร์ซึ่งเป็นหน่วยความจำตัวแปรชนิดข้อมูลจำนวนเต็มคู่(2 ไบต์) และครึ่งหนึ่งของหน่วยความจำตัวแปรชนิดข้อมูลคู่ (8 ไบต์)

ฉันไม่เคยเห็นสถานการณ์ที่ฉันต้องการใช้ขีด จำกัด ของประเภทข้อมูล VBA Long อย่างเต็มที่ในอาชีพระยะสั้นของฉัน แต่ฉันจะแสดงตัวอย่างบางส่วนให้คุณเข้าใจได้ดีขึ้น

ตัวอย่างประเภทข้อมูลแบบยาว VBA

ด้านล่างนี้คือตัวอย่างประเภทข้อมูล excel VBA Long

คุณสามารถดาวน์โหลดเทมเพลต Excel ประเภทข้อมูลแบบยาว VBA ได้ที่นี่ - เทมเพลต Excel ประเภทข้อมูลแบบยาว VBA

VBA Long Example # 1

ทันทีที่คุณประกาศประเภทข้อมูลตัวแปรเป็น“ Long” คุณสามารถกำหนดค่าได้ตั้งแต่ -2, 147, 483, 648 ถึง 2, 147, 483, 648

ตัวอย่างเช่นประกาศตัวแปรเป็นชนิดข้อมูลแบบยาว

รหัส:

 Sub Long_Example1 () Dim k As Long End Sub 

มากำหนดค่าเป็นจำนวนแถวทั้งหมดของแผ่นงาน

ในการรับจำนวนแถวทั้งหมดในโค้ดแผ่นงาน excel คือ"แถว นับ"

รหัส:

 Sub Long_Example1 () Dim k As Long k = RowsCount End Sub 

ตอนนี้แสดงค่าในกล่องข้อความ

รหัส:

 Sub Long_Example1 () Dim k As Long k = Rows.Count MsgBox k End Sub 

เรียกใช้รหัสนี้และดูว่าแถวทั้งหมดที่นับในแผ่นงานคืออะไร

มันบอกว่าเรามีมากกว่า 1 ล้านแถวในแผ่นงาน

ตอนนี้เพื่อความเข้าใจที่ดีขึ้นฉันจะเปลี่ยนประเภทข้อมูลจาก LONG เป็น INTEGER

รหัส:

 Sub Long_Example1 () Dim k As Integer k = Rows.Count MsgBox k End Sub 

หากฉันเรียกใช้รหัส VBA ฉันจะได้รับข้อความแสดงข้อผิดพลาดว่า“ Overflow”

สาเหตุที่เราได้รับข้อผิดพลาดนี้ใน VBA เนื่องจากข้อมูลประเภท "จำนวนเต็ม" สามารถเก็บค่าได้ตั้งแต่ -31768 ถึง 32767 เท่านั้น ในกรณีนี้คือ "แถว Count” จะส่งกลับตัวเลขที่มากกว่าขีด จำกัด ของตัวแปร“ จำนวนเต็ม”

การกำหนดค่ามากกว่า 1 ล้านให้กับตัวแปรซึ่งสามารถเก็บได้เพียง 32767 ทำให้เกิดข้อผิดพลาดล้นที่นี่

VBA Long Example # 2

ค้นหาแถวสุดท้ายโดยใช้ตัวแปรแบบยาว

การค้นหาแถวที่ใช้ล่าสุดของแผ่นงานเป็นสิ่งสำคัญที่สุดของการเข้ารหัส ในการค้นหาแถวที่ใช้ล่าสุดของแผ่นงานต้องมีการประกาศตัวแปร ในขณะที่การประกาศตัวแปรและการกำหนดประเภทข้อมูลจำเป็นต้องมีสามัญสำนึก

สมมติว่าคุณมีข้อมูลสิ้นสุดที่ 25,000 แถวตามที่แสดงในภาพด้านล่าง

ตอนนี้ฉันรู้แล้วว่าหมายเลขแถวที่ใช้ล่าสุดคือ 25,000 สำหรับสิ่งนี้เราไม่ต้องการประเภทข้อมูล "LONG" เพราะประเภทข้อมูล "INTEGER" สามารถให้แถวสุดท้าย

ดูรหัสด้านล่างสำหรับข้อมูลของคุณ

รหัส:

 Sub Long_Example1 () Dim k As Integer k = Cells (Rows.Count, 1). End (xlUp) .Row MsgBox k End Sub 

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

ในฐานะผู้เขียนโค้ดสิ่งสำคัญคือต้องทราบขนาดของข้อมูลที่คุณจะมีในอนาคต เนื่องจากในขณะนี้ข้อมูลอาจสิ้นสุดที่แถวที่ 25000 แต่ถ้าข้อมูลเพิ่มขึ้นเกินขีด จำกัด “ จำนวนเต็ม” เช่น 32767 จะทำให้เกิดข้อผิดพลาดล้น

ตัวอย่างเช่นฉันจะเพิ่มข้อมูลเป็น 32768 แถว

ตอนนี้ถ้าฉันเรียกใช้รหัสเดิมอีกครั้งฉันจะไม่ได้รับค่า แต่ฉันจะได้รับข้อผิดพลาดดังต่อไปนี้

จำไว้ว่าฉันได้เพิ่มขีด จำกัด เพียง 1 เกินขีด จำกัด ของค่า“ จำนวนเต็ม” ดังนั้นฉันจึงได้รับข้อผิดพลาด Overflow

ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องทราบขนาดของข้อมูลของคุณก่อนที่คุณจะกำหนดประเภทข้อมูลให้กับตัวแปร เป็นตัวเลือกที่ดีกว่าเสมอในการประกาศตัวแปรเป็น "LONG" โดยไม่ต้องคิดถึงขนาดข้อมูลของคุณในอนาคต

รายการทางเลือกสำหรับ Excel VBA Long Variable

คุณต้องคิดอยู่แล้วว่าถ้าเราต้องการเก็บค่าไว้มากกว่าขีด จำกัด ของตัวแปรแบบยาว สำหรับสิ่งนี้เราจำเป็นต้องใช้ประเภทข้อมูลที่แตกต่างกันเช่น VBA“ String” หรือ“ Variant”

จำช่วงเวลาที่ข้ามหมายเลข 2147483647 เราจะได้รับข้อผิดพลาดล้นใน VBA ด้วยประเภทข้อมูล LONG ในการจัดเก็บตัวเลขมากกว่านี้เราจำเป็นต้องใช้ประเภทข้อมูล "String" หรือ "Variant"

สำหรับ String

รหัส:

 Sub Long_Example2 () Dim k As String k = 2147483648 MsgBox k End Sub 

สำหรับ Variant

รหัส:

 Sub Long_Example2 () Dim k As Variant k = 2147483648 MsgBox k End Sub 

เมื่อเรารันโค้ดข้างต้นจะแสดงหมายเลขดังกล่าว