Board logo

標題: [發問] 奇怪的巨集?? [打印本頁]

作者: t8899    時間: 2013-11-1 10:38     標題: 請問此語法如何寫?

假如 BOOK1.xls 不是作用視窗 則....................
IF Windows("BOOK1.xls")<>Activate THEN
沒有此語法??
作者: GBKEE    時間: 2013-11-1 11:08

回復 1# t8899
  1. If ActiveWindow.Caption <> "BOOK1.xls" Then MsgBox ActiveWindow.Caption
  2. 或是
  3. If ActiveWorkbook.Name <> "BOOK1.xls" Then MsgBox ActiveWorkbook.Name
複製代碼

作者: t8899    時間: 2013-11-1 15:03     標題: 請問此巨集錯誤如何修改??

本帖最後由 t8899 於 2013-11-1 15:17 編輯

型態不符合  附檔[attach]16542[/attach]

在開另一檔案後執行會錯誤 ,不開則不會???
Public Runtime
Sub a123()
If Range("i1").Value <> 1 Then
On Error Resume Next
Application.OnTime EarliestTime:=TimeValue(Runtime), _
    Procedure:="a123", Schedule:=False
  Exit Sub
On Error GoTo 0
End If
Macro1
If Range("k14") = 4 Then mytime = "00:00:15"
Runtime = Now + TimeValue(mytime)
Application.OnTime Runtime, "Sheet1.a123"
End Sub
作者: sunnyso    時間: 2013-11-1 15:48

回復 2# GBKEE

請問超版 .caption 和 .name 有何區別?

作者: GBKEE    時間: 2013-11-1 16:17

本帖最後由 GBKEE 於 2013-11-1 16:55 編輯

回復 4# sunnyso

請詳看VBA的說明

[attach]16544[/attach]
作者: GBKEE    時間: 2013-11-1 16:53

本帖最後由 GBKEE 於 2013-11-1 16:55 編輯

回復 3# t8899
  1. Sub Macro1()
  2. If ActiveWindow.Caption <> "Book2.xls" Then
  3. Dim ah As Workbook
  4. Set ah = ActiveWorkbook         '這裡是 Workbook物件
  5. 'Dim ah As Window                '變數物件要一致
  6. '******************這裡錯誤嗎????   **************
  7. Set ah = ActiveWindow           '這裡是 Window物件
  8. '*********************************************
  9. End If
  10. MsgBox "test"
  11. End Sub
複製代碼

作者: t8899    時間: 2013-11-1 20:09     標題: 奇怪的巨集??

本帖最後由 t8899 於 2013-11-1 20:10 編輯

1.15秒自動執行一次,沒問題
但當打開A檔案,視窗停留在A檔案,則所得的數字是不對的???
2.單用Sheets("Sheet1").Select 或  With Sheets("Sheet1")
執行會寫進A檔案的工作表裡???
Sub Macro1()
Dim ah As Workbook
Set ah = ActiveWorkbook
'   Sheets("Sheet1").Select
'   With Sheets("Sheet1")
Workbooks("book2.xls").Sheets("Sheet1").Range("a1").Value = Now
t = [TEXT(A1,"hh:mm")+LOOKUP(--TEXT(A1,"s"),{0,15,30,45})/86400]
Workbooks("book2.xls").Sheets("Sheet1").Range("a65536").End(xlUp).Offset(1).Value = Format(t, "hh:mm:ss")
' End With
ah.Activate
End Sub
[attach]16547[/attach]
作者: GBKEE    時間: 2013-11-1 21:41

回復 7# t8899
  1. Sub Macro1()
  2.     Dim t, Ar()
  3.     Ar = Array(60, 45, 30, 15)
  4.     With Workbooks("book2.xls").Sheets("Sheet1")
  5.         .Range("a1").Value = Now
  6.         t = Val(Format(.Range("a1"), "s"))
  7.         t = Application.Match(t, Ar, -1)
  8.         t = Application.Text(.[A1], "hh:mm:") & Ar(t - 1)
  9.         '*************************************************************
  10.         't = [TEXT(A1,"hh:mm")+LOOKUP(--TEXT(A1,"s"),{0,15,30,45})/86400]
  11.         ' 這裡的A1是作用中活頁簿ActiveWorkbook(當打開A檔案)的ActiveSheet的 A1
  12.        '************************************************************
  13.         .Range("a65536").End(xlUp).Offset(1).Value = Format(t, "hh:mm:ss")
  14.     End With
  15. End Sub
複製代碼

作者: t8899    時間: 2013-11-1 22:06

本帖最後由 t8899 於 2013-11-1 22:13 編輯

回復 8# GBKEE

     
    't = [TEXT(A1,"hh:mm")+LOOKUP(--TEXT(A1,"s"),{0,15,30,45})/86400]
        ' 這裡的A1是作用中活頁簿ActiveWorkbook(當打開A檔案)的ActiveSheet的 A1     

單純能否只改這句來解決呢??
這句裡的A1 無法指定到  Workbooks("book2.xls").Sheets("Sheet1")  裡??
t = [TEXT(NOW,"hh:mm")+LOOKUP(--TEXT(NOW,"s"),{0,15,30,45})/86400]
作者: GBKEE    時間: 2013-11-2 06:48

回復 9# t8899
VBA函數   NOW
工作表函數 NOW()
  1. t = [TEXT(NOW(),"hh:mm")+LOOKUP(--TEXT(NOW(),"s"),{0,15,30,45})/86400]
複製代碼

作者: t8899    時間: 2013-11-2 08:29

回復 10# GBKEE
謝謝
昨晚想了另一個方法如下:
儲存格B1=TEXT(FLOOR(A1,"0:00:15"),"hh:mm:SS")
Sub Macro1()
Dim ah As Workbook
Set ah = ActiveWorkbook
Workbooks("book2.xls").Sheets("Sheet1").Range("a1").Value = Now  
Workbooks("book2.xls").Sheets("Sheet1").Range("a65536").End(xlUp).Offset(1).Value =Workbooks("book2.xls").Sheets("Sheet1").Range("B1").Value
ah.Activate
END SUB
作者: GBKEE    時間: 2013-11-2 09:25

回復 11# t8899
vba的寫法不是死的,只要達成想法的就可以了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)