註冊
登錄
首頁
論壇版規
禁止列表
說明
地圖
數位書香
私人消息 (0)
公共消息 (0)
論壇任務 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
麻辣家族討論版版
»
Excel程式區
» VBA 物件選取寫法問題
返回列表
下一主題
上一主題
發帖
VBA 物件選取寫法問題
mash071896
發短消息
加為好友
mash071896
當前離線
UID
35945
帖子
11
主題
3
精華
0
積分
59
金錢
59
點名
0
作業系統
win10
軟體版本
office2016
閱讀權限
20
在線時間
64 小時
註冊時間
2020-2-14
最後登錄
2021-5-3
中學生
帖子
11
主題
3
精華
0
積分
59
點名
0
作業系統
win10
軟體版本
office2016
閱讀權限
20
註冊時間
2020-2-14
最後登錄
2021-5-3
1
#
跳轉到
»
正序看帖
打印
字體大小:
t
T
發表於 2020-6-19 17:02
|
只看該作者
VBA 物件選取寫法問題
請問各位大大
Sub test()
Dim a As Worksheet
Dim b As Worksheet
Set a = Sheets("工作表1")
Set b = Sheets("工作表2")
For i = 0 To 2
a.Select
Range(Cells(i + 2, 2), Cells(i + 2, 6)).Copy
b.Select
Cells(i * 9 + 2, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Next
End Sub
複製代碼
我把
a.Select
Range(Cells(i + 2, 2), Cells(i + 2, 6)).Copy 這段縮寫
a.Range(Cells(i + 2, 2), Cells(i + 2, 6)).Copy 為什麼他會跳出錯誤?
活頁簿1.rar
(17.18 KB)
下載次數: 5
2020-6-19 17:02
樓主熱帖
Excel 函數擷取字串問題
特定值迴圈寫法
收藏
分享
mash071896
發短消息
加為好友
mash071896
當前離線
UID
35945
帖子
11
主題
3
精華
0
積分
59
金錢
59
點名
0
作業系統
win10
軟體版本
office2016
閱讀權限
20
在線時間
64 小時
註冊時間
2020-2-14
最後登錄
2021-5-3
中學生
帖子
11
主題
3
精華
0
積分
59
點名
0
作業系統
win10
軟體版本
office2016
閱讀權限
20
註冊時間
2020-2-14
最後登錄
2021-5-3
5
#
發表於 2020-6-21 14:41
|
只看該作者
回復
2#
n7822123
感謝詳細說明父代 與子代的關係
TOP
mash071896
發短消息
加為好友
mash071896
當前離線
UID
35945
帖子
11
主題
3
精華
0
積分
59
金錢
59
點名
0
作業系統
win10
軟體版本
office2016
閱讀權限
20
在線時間
64 小時
註冊時間
2020-2-14
最後登錄
2021-5-3
中學生
帖子
11
主題
3
精華
0
積分
59
點名
0
作業系統
win10
軟體版本
office2016
閱讀權限
20
註冊時間
2020-2-14
最後登錄
2021-5-3
4
#
發表於 2020-6-21 13:59
|
只看該作者
回復
3#
n7822123
感謝大大 原來是cell部分出錯
學到了with
TOP
n7822123
發短消息
加為好友
n7822123
(阿龍)
當前離線
UID
20045
帖子
406
主題
8
精華
0
積分
453
金錢
453
點名
0
作業系統
WINDOWS 7
軟體版本
2007
閱讀權限
20
性別
男
來自
台灣
在線時間
202 小時
註冊時間
2015-2-7
最後登錄
2021-7-31
暱稱:
阿龍
中學生
帖子
406
主題
8
精華
0
積分
453
點名
0
作業系統
WINDOWS 7
軟體版本
2007
閱讀權限
20
性別
男
來自
台灣
註冊時間
2015-2-7
最後登錄
2021-7-31
3
#
發表於 2020-6-20 13:56
|
只看該作者
本帖最後由 n7822123 於 2020-6-20 14:10 編輯
回復
1#
mash071896
用With 結合你的其他程式可以略做簡化 如下
Sub test2()
Sheets("工作表2").Activate '
設當前工作表為
工作表2
For i = 0 To 2
With Sheets("工作表1")
.Range(.Cells(i + 2, 2), .Cells(i + 2, 6)).Copy '
工作表1
複製
Cells(i * 9 + 2, 2).PasteSpecial xlPasteValues, xlNone, False, True '
工作表2
(被省略)
貼上
End With
Next
End Sub
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助
TOP
n7822123
發短消息
加為好友
n7822123
(阿龍)
當前離線
UID
20045
帖子
406
主題
8
精華
0
積分
453
金錢
453
點名
0
作業系統
WINDOWS 7
軟體版本
2007
閱讀權限
20
性別
男
來自
台灣
在線時間
202 小時
註冊時間
2015-2-7
最後登錄
2021-7-31
暱稱:
阿龍
中學生
帖子
406
主題
8
精華
0
積分
453
點名
0
作業系統
WINDOWS 7
軟體版本
2007
閱讀權限
20
性別
男
來自
台灣
註冊時間
2015-2-7
最後登錄
2021-7-31
2
#
發表於 2020-6-19 23:08
|
只看該作者
本帖最後由 n7822123 於 2020-6-19 23:22 編輯
回復
1#
mash071896
Set a = Sheets("工作表1")
Set b = Sheets("工作表2")
我把
a.Select
Range(Cells(i + 2, 2), Cells(i + 2, 6)).Copy 這段縮寫
a.Range(Cells(i + 2, 2), Cells(i + 2, 6)).Copy 為什麼他會跳出錯誤?
如果你現在當前的表格是 "
工作表2
",你執行下面這行,本來就是有問題
Sheets("工作表1").Range(Cells(i + 2, 2), Cells(i + 2, 6)).Copy
這就要說明 ,在當前物件下,
可以省略前面父物件的敘述
今天你在"
工作表2
"當下,寫了這一行程式
Range("A1")="123"
系統會在
當前活頁簿
的
當前工作表
的[A1]欄位填值,也就相當於下面這行
Workbooks("你的活頁簿.xlsx").Sheets("
工作表2
").Range("A1")="123"
也就是說你只寫了
Range("A1")="123"
,但是系統自動幫你把"
父物件
" 填上了
回頭來看你的程式,如果你當前畫面在"
工作表2
",系統會幫你把父物件填好如下
Sheets("
工作表1
").Range(Sheets("
工作表2
").Cells(i + 2, 2), Sheets("
工作表2
").Cells(i + 2, 6)).Copy
這下你知道問題在哪了吧!? 你想讓電腦在工作表1找工作表2的儲存格,當然找不到!
寫成下面就沒問題了
a.Range(a.Cells(i + 2, 2), a.Cells(i + 2, 6)).Copy
或者
Sheets("工作表1").Range(Sheets("工作表1").Cells(i + 2, 2), Sheets("工作表1").Cells(i + 2, 6)).Copy
覺得很長嗎? 你可以用原本的方式
a.Select
切換當前工作表,或者你應該要學學用
With
(正常VBA熟手的用法)
With Sheets("工作表1")
.Range(.Cells(i + 2, 2), .Cells(i + 2, 6)).Copy
End With
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助
TOP
靜思自在 :
能善用時間的人,必能掌握自己努力的方向。
返回列表
下一主題
上一主題
EXCEL專屬討論區
Excelㄧ般區
Excel程式區
進階應用專區
OFFICE 系列
Word
PowerPoint
Access
Office不分區
程式語言
VB 與 VB.Net
C 與 C#
Java 與 J#
程式設計不分區
資料庫
ORACLE
My SQL
MS SQL
網頁設計
ASP 與 ASP.NET
PHP
PHP+MySQL 入門實作
JavaScript
FLASH / ActionScript
HTM/ HTML/ CSS
網頁設計不分區
電腦與作業系統
電腦各種硬體討論
一般電腦軟體討論
論壇事務
管理公告
投訴反映
新手測試
愛 • 生活
公益佈告欄
生活與感動
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]
申請友情鏈接
Facebook粉絲