標題:
每隔多少欄插入多少欄程式錯誤需幫忙
[打印本頁]
作者:
Genie
時間:
2012-9-19 15:13
標題:
每隔多少欄插入多少欄程式錯誤需幫忙
有一個程式 是希望它能每隔多少欄插入多少欄
但有一個地方一直出現錯誤 (Mark 紅色處)
希望能夠幫我看一下 謝謝∼
程式如下:
Sub 插入欄()
Dim BeginCol As Long, AA As Long, Temp As String, InsCol As Long
Dim myRow As Integer, tempCol As Long
myRow = Selection.Row
BeginCol = Selection.Column
Temp = InputBox("隔幾欄")
If IsNumeric(Temp) Then AA = CLng(Temp) Else Exit Sub
Temp = InputBox("插入幾欄")
If IsNumeric(Temp) Then InsCol = CLng(Temp) Else Exit Sub
Application.ScreenUpdating = False
Do While True
tempCol = Range(Cells(myRow, 255), Cells(myRow, 255)).End(xlToLeft).Column
If tempCol < (BeginCol + AA) Then Exit Do
BeginCol = BeginCol + AA
Columns(BeginCol & ":" & BeginCol + InsRow - 1).Insert Shift:=xlToRight
BeginCol = BeginCol + InsCol
Loop
Application.ScreenUpdating = True
End Sub
作者:
GBKEE
時間:
2012-9-19 16:33
本帖最後由 GBKEE 於 2012-9-20 15:10 編輯
回復
1#
Genie
Columns(
BeginCol & ":" & BeginCol + InsRow - 1
).Insert Shift:=xlToRight
這裡有錯誤: 單欄可用數字 如 E欄 : 5 , 多欄需用文字 如 "A:D"
作者:
Genie
時間:
2012-9-19 17:08
所以我該從一開始的定義就開始改是嗎?
還是可以把 Columns 用別的參數做取代呢?
謝謝∼
作者:
luhpro
時間:
2012-9-19 21:32
本帖最後由 luhpro 於 2012-9-19 21:34 編輯
所以我該從一開始的定義就開始改是嗎?
還是可以把 Columns 用別的參數做取代呢?
謝謝∼
Genie 發表於 2012-9-19 17:08
意思是以 Columns 來表示多個欄位時,
後面要放表示欄位名稱的英文字而不能放數字, (數字是表示多列時在用的)
不過這倒可以用 Chr(64 + 欄位序號) 的方式來轉換.
轉換後的程式可以如下 :
Columns(Chr(64 + BeginCol) & ":" & Chr(64 + BeginCol +
InsCol
- 1)).Insert Shift:=xlToRight
你程式中上列應是 InsCol 而非 InsRow 喔.
另 tempCol = Range(Cells(myRow, 255), Cells(myRow, 255)).End(xlToLeft).Column
可以簡化為 : tempCol = Cells(myRow, 255).End(xlToLeft).Column
作者:
chin15
時間:
2012-9-19 22:02
不好意思,插個花
Chr(64 + BeginCol)在欄位大於26時就出現問題了
個人建議的方法是
Cells(1, BeginCol).Resize(, InsCol).EntireColumn.Insert
複製代碼
作者:
luhpro
時間:
2012-9-19 22:13
本帖最後由 luhpro 於 2012-9-19 22:14 編輯
回復
5#
chin15
晤...
這個討論區系統好像沒有類似 "留言" 的功能
所以只能用回文的方式來回應囉.
--- 以下是回應的內容 ---
嗯...
你提供的方式比我的完善多了,
值得記下來.
PS 剛剛發了個報告, 以為是留言功能,
但又發現好像討論串看不到 "報告" 的內容, 所以請管理者忽略該報告.
作者:
Genie
時間:
2012-9-20 10:19
謝謝 luhpro 和 chin15 解決了我的問題
同時也學到了新的用法
非常感謝∼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)