กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
        
           455   1		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        Selecting a given 'number' of columns...       
		
    
      ช่วงนี้ผมต้องส่งข้อมูลจาก Access ไปยัง Excel เพื่อสร้าง Chart หรือสรุปผลในรูปแบบที่ Excel ถนัด และได้ไปอ่านเจอกระทู้ของต่างประเทศที่เขาต้องการจะทำงานคล้ายๆ กับสิ่งที่ผมทำอยู่ คือ หาตำแหน่งคอลัมน์สุดท้ายใน Excel เพื่อจะนำไปใช้ในการระบุ Range เพื่อเขียนเป็น Chart 
ที่ http://www.access-programmers.co.uk/forums/showthread.php?s=&threadid=45187
 
เขาสามารถที่จะนับจำนวน Fields ที่ส่งออกไปจาก Access ได้ แต่อยากรู้ว่าคอลัมน์ใน Excel จะอยู่ตำแหน่งใด ที่เขาใช้อยู่คือใช้ Select Case ซึ่งจะเขียนโค้ดยาวมาก ดังนี้
 
Select Case ColumnCount
 
Case 30
last_Column = "AD"
Case 31
last_Column = "AE"
...
Case 50
last_Column = "AX"
 
end case
 
selectRegion = "A1:" & last_Column & "2"
 
ผมเลยลองเขียนฟังก์ชันขึ้นมาแทน Select Case นี้ แบบนี้ครับ
 
Function GetRange(intX As Integer) As String
Dim intY As Integer
If intX < 27 Then
GetRange = Chr(64 + intX)
Else
intY = intX Mod 26
intX = intX \ 26
GetRange = Chr(64 + intX) & Chr(64 + intY)
End If
End Function
 
ลองทดลองแบบนี้
 
? GetRange(50)
AX
 
เวลาใช้ก็ให้ตัดส่วน Select Case ออก แล้วเปลี่ยนเป็น
 
selectRegion = "A1:" & GetRange(ColumnCount ) & "2"
 
 
 
    
    
  ที่ http://www.access-programmers.co.uk/forums/showthread.php?s=&threadid=45187
เขาสามารถที่จะนับจำนวน Fields ที่ส่งออกไปจาก Access ได้ แต่อยากรู้ว่าคอลัมน์ใน Excel จะอยู่ตำแหน่งใด ที่เขาใช้อยู่คือใช้ Select Case ซึ่งจะเขียนโค้ดยาวมาก ดังนี้
Select Case ColumnCount
Case 30
last_Column = "AD"
Case 31
last_Column = "AE"
...
Case 50
last_Column = "AX"
end case
selectRegion = "A1:" & last_Column & "2"
ผมเลยลองเขียนฟังก์ชันขึ้นมาแทน Select Case นี้ แบบนี้ครับ
Function GetRange(intX As Integer) As String
Dim intY As Integer
If intX < 27 Then
GetRange = Chr(64 + intX)
Else
intY = intX Mod 26
intX = intX \ 26
GetRange = Chr(64 + intX) & Chr(64 + intY)
End If
End Function
ลองทดลองแบบนี้
? GetRange(50)
AX
เวลาใช้ก็ให้ตัดส่วน Select Case ออก แล้วเปลี่ยนเป็น
selectRegion = "A1:" & GetRange(ColumnCount ) & "2"
				1 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    1 @R06714    
        
             
    
  
    
      Time: 0.0575s
    
      
		