iT邦幫忙

0

請問Excel VBA 畫格子抓不到第一個column ?

想請教為何以下function 及用with 在幫資料加框線時會印不到第一個column ?
要怎麼修改才能符合需求,感謝
假設資料是A1~ H30 現在只有B1到H30 有格子,A1~A30 沒有且會跳出型態不符合錯誤。
如果在With中A改成A1但錯誤訊息會變成應用程式或物件定義上的錯誤,我按了偵錯會停在with wks2.Columns 這行,我確認LastRow是有抓到值的,游標指到LastRow 顯示LastRow=34

Function getlastrow() As Long '找到最后一列-資料範圍
    Dim lngReturn  As Long
    Dim wks2 As Worksheet
    Set wks2 = Worksheets(2)    
    lngReturn = wks2.Range("A2").End(xlDown).Row   
    getlastrow = lngReturn    
End Function
				
LastRow = getlastrow 		

With wks2.Columns("A:H" & CStr(LastRow)) '調整儲存格範圍
        .HorizontalAlignment = xlCenter '文字置中對齊
        .VerticalAlignment = xlCenter
        .Font.Name = "calibri" '字型
        .Font.Size = 10 '字型大小
        .Borders().LineStyle = xlNone '儲存格框線的線條樣式
        .Borders().Weight = xlThin '儲存格框線粗細設定
End With

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-10-15 22:46:13
最佳解答

選我正解

Dim wks2 As Worksheet
Function getlastrow() As Long '找到最后一列-資料範圍
    Dim lngReturn As Long
    Set wks2 = Worksheets(1)
    lngReturn = wks2.Range("A2").End(xlDown).Row
    getlastrow = lngReturn
End Function
Sub Main()
    LastRow = getlastrow
    
    '範圍要用 Range
    With wks2.Range("A1:H" & LastRow)
        .HorizontalAlignment = xlCenter '文字置中對齊
        .VerticalAlignment = xlCenter
        .Font.Name = "calibri" '字型
        .Font.Size = 10 '字型大小
        .Borders().LineStyle = xlNone '儲存格框線的線條樣式
        .Borders().Weight = xlThin '儲存格框線粗細設定
    End With
    
    'Columns 是指整「欄」,只要英文字母即可
    With wks2.Columns("A:H") '調整儲存格範圍
        .HorizontalAlignment = xlCenter '文字置中對齊
        .VerticalAlignment = xlCenter
        .Font.Name = "calibri" '字型
        .Font.Size = 10 '字型大小
        .Borders().LineStyle = xlNone '儲存格框線的線條樣式
        .Borders().Weight = xlThin '儲存格框線粗細設定
    End With
End Sub
ianyjlu iT邦新手 5 級 ‧ 2019-10-16 00:44:05 檢舉

非常感謝二位的幫忙,現在我清楚range 與column 在用法上的區分了。

0
paicheng0111
iT邦高手 1 級 ‧ 2019-10-15 20:48:39

發生型態不符錯誤應該是因為這裡

wks2.Columns("A:H" & CStr(LastRow)) 

試試看改成

With wks2.Range("A1:H" & LastRow) '調整儲存格範圍
    .HorizontalAlignment = xlCenter '文字置中對齊
    .VerticalAlignment = xlCenter
    .Font.Name = "calibri" '字型
    .Font.Size = 10 '字型大小
    .Borders().LineStyle = xlNone '儲存格框線的線條樣式
    .Borders().Weight = xlThin '儲存格框線粗細設定
End With
ianyjlu iT邦新手 5 級 ‧ 2019-10-15 22:41:30 檢舉

感謝Paicheng0111建議, 我把A改成A1但錯誤訊息會變成應用程式或物件定義上的錯誤,我按了偵錯會停在with wks2.Columns 這行,我確認LastRow是有抓到值的,游標指到LastRow 顯示LastRow=34

with wks2.Columns改成with wks2.Range試試看

我要發表回答

立即登入回答