各位高手,小弟想請問,我之前用
For a =1 to 10 step 1
Me("leabel"&1+a). caption=......(略)
Next a
這樣是沒問題
可是因為我要跨表單
Userfrom1.leabel1=userfrom2.leabe1
這樣的狀況,我該怎麼寫??
謝謝
shps1129 wrote:
me跟controls有什麼不一樣嗎...(恕刪)
這是不同東西,完全不一樣
真要省略也可以,我是習慣加上controls
userform1("label" & a).caption=userform2("label" & a).caption
me 是方便寫程式用的語法,指的是"現在程式碼的所在位置"
例如:程式碼在thisworkbook裡面
thisworkbook.name
可用
me.name
代替
例如:程式碼在“工作表1”裡面
sheets("工作表1").range("a1")="abc"
可用
me.range("a1")="abc"
代替
userform1 <=> userform2 是2個不同位置
所以不可以用 me()=me()
最多可以用一個,要看"正在執行的程式碼"是寫在那邊
在userform1
me()=userform2()
建議用指定名稱,比較安全,出錯時也比較容易除錯
shps1129 wrote:
Userfrom1.leabel1=userfrom2.leabe1...(恕刪)
如果不跑迴圈,您這種寫法就可以了
Userfrom1.label1=userfrom2.label1
smash15 wrote:
userform1與2 是否是同時開啟兩張表單?...(恕刪)
Sub test()
UserForm1.Show 0
UserForm1.Top = 100
UserForm1.Left = 200
UserForm2.Show 0
UserForm2.Top = 200
UserForm2.Left = 400
End Sub
https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/show-method
https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/startupposition-property
snare wrote:
Sub test()...(恕刪)

原來如此!
感謝釋疑...
---------------------------
再請教:
有一張工作表啟動 SelectionChange
用第一個模組處理
同一工作表用第二個模組時必須把 SelectionChange 關閉,才不會產生錯誤!
請問有何方法?
例:
.range("A1")...第一模組可正常工作
但,第二模組的工作範圍是 .range("A1:A7") ,會出現型態的錯誤!
------------------------------------------------------------------------------------------------------------
5分奉上
感謝!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each Rng In [A1:A7]
If Rng.Address = Target.Address Then
UserForm2.Show
Exit For
End If
Next
End Sub
儲存格範圍大時,用迴圈可能會比較慢,可以改用row/column限制
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Row < 8 Then
UserForm2.Show
End If
End Sub
smash15 wrote:
.range("A1")...第一模組可正常工作
但,第二模組的工作範圍是 .range("A1:A7") ,會出現型態的錯誤!...(恕刪)
看不懂
請上傳一個簡易範例,或等其它高手回答
f10629 wrote:
儲存格範圍大時,用迴圈可能會比較慢,可以改用row/column限制...(恕刪)
可以改用Intersect,不用迴圈,可直接指定範圍
'範例: 工作表1 a5: b10 範圍
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If Intersect(Target, Worksheets("工作表1").Range("a5:b10")) Is Nothing Then
'範圍外,或切換到不同工作表
'程式碼放這裡
Else
'範圍內
'程式碼放這裡
End If
End Sub
內文搜尋
X



























































































