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
เมื่อเรารันโค้ดข้างต้นจะแสดงหมายเลขดังกล่าว