返回列表 上一主題 發帖

請幫忙翻譯一下程式

請幫忙翻譯一下程式

有兩個excel,分別是a.xlsx 和b.xlsx
我想在a.xlsx些vba, 讀取b.xlsx的資料。
請問我應該如何寫
for i = b.xlsx的最後一筆 to 1
因為我想用b.xlsx最後一欄開始往上檢查a.xlsx
但不知道怎樣寫才可以知道b.xlsx的最後一筆

Sub ex()
Dim FRng As Range
Dim A As Range, Rng As Range
  fs = "c:\user\destop\b.xlsx"
'fs = ThisWorkbook.Path & "\b.xlsx"
set wb = Workbooks.Open(fs)
     Set FRng = wb.Sheets("sheet1").Range("k:k").Find(today(), lookat:=xlWhole, SearchDirection:=xlPrevious) 在b.xlsx 的K欄尋找等當日的日期的一列
     If Not FRng Is Nothing Then 假如找到
        If FRng.Offset(, -3).Value >= 0.95 Then 假如b.xlsx 這列的H欄的值大過或等於0.95
set rng = workbooks(a).range("a:a").find(Frng.offset(,-9), lookat:=xlWhole, SearchDirection:=xlPrevious)     在a.xlsx 的A欄尋找b.xlsx 這列的B欄的值是否存在
If FRng Is Nothing Then  假如找不到
                在a.xlsx 的A欄最後一列加上b.xlsx 這列的B欄的值,及   在a.xlsx 的F欄最後一列加上b.xlsx 這列的K欄的值

end sub

回復 1# 198188
  1. Option Explicit
  2. Sub Ex()
  3.     Dim fs As String, xi As Integer
  4.     fs = "c:\user\destop\b.xlsx"
  5.     'fs = ThisWorkbook.Path & "\b.xlsx"
  6.     'Set wb = Workbooks.Open(fs)
  7.     'With Wb.Sheets("sheet1")
  8.     With Workbooks.Open("d:\book1.xls").Sheets("sheet1")
  9.       For xi = .UsedRange.Cells(.UsedRange.Count).Row To 1 Step -1
  10.              '由小到大:不必 Step  但如要間隔執行如:  Step 5
  11.             MsgBox .UsedRange.Cells(xi, "A").Address  'A欄
  12.       Next
  13.     End With
  14. End Sub
複製代碼

TOP

回復 2# GBKEE

a.xlsm

a.JPG
2012-12-8 11:58

b.xlsx

b.JPG
2012-12-8 11:58

Sub ex()
Dim FRng As Range
Dim A As Range, Rng As Range
Dim fs As String, xi As Integer
   fs = "C:\Documents and Settings\USER\桌面\b.xlsx"
  set wb = Workbooks.Open(fs)
     Set FRng = wb.Sheets("sheet1").Range("k:k").Find(today(), lookat:=xlWhole, SearchDirection:=xlPrevious) 在b.xlsx 的K欄尋找等當日的日期的一列
        If Not FRng Is Nothing Then 假如找到
        If FRng.Offset(, -3).Value >= 0.95 Then 假如b.xlsx 這列的H欄的值大過或等於0.95
  set rng = workbooks(a).range("a:a").find(Frng.offset(,-9), lookat:=xlWhole, SearchDirection:=xlPrevious)     在a.xlsx 的A欄尋找b.xlsx 這列的B欄的值是否存在
         If FRng Is Nothing Then  假如找不到
          With Workbooks.Open("a.xlsm").Sheets("outstanding payments")    在a.xlsx 的A欄最後一列加上b.xlsx 這列的B欄的值,及   在a.xlsx 的F欄最後一列加上b.xlsx 這列的K欄的值
           xi = .UsedRange.Cells(.UsedRange.Count).Row
             .UsedRange.Cells(xi, "A") = FRng.offset(, -9).value
           .UsedRange.Cells(xi, "F") = FRng.value
         End With
         End If
     End If
End If
End Sub

請問程式文化有問題嗎?

TOP

回復 3# 198188
是文法不是文化.
當日的日期: today()這是工作表函數 ,VBA ->  Date
  1. Option Explicit
  2. Sub ex()
  3.     Dim FRng As Range, Wb As Workbook
  4.     Dim A As Range, Rng As Range
  5.     Dim fs As String, xi As Integer
  6.     fs = "C:\Documents and Settings\USER\桌面\b.xlsx"
  7.     Set Wb = Workbooks.Open(fs)
  8.     Set FRng = Wb.Sheets("sheet1").Range("k:k").Find(Date, lookat:=xlWhole, SearchDirection:=xlPrevious) '在b.xlsx 的K欄尋找等當日的日期的一列
  9.     If Not FRng Is Nothing Then                 '假如找到
  10.         If FRng.Offset(, -3).Value >= 0.95 Then '假如b.xlsx 這列的H欄的值大過或等於0.95
  11.             '*** Workbooks(A)-> A這變數字串沒有見到  ****
  12.             Set Rng = Workbooks(A).Range("a:a").Find(FRng.Offset(, -9), lookat:=xlWhole, SearchDirection:=xlPrevious)   ' 在a.xlsx 的A欄尋找b.xlsx 這列的B欄的值是否存在
  13.             If FRng Is Nothing Then             '假如找不到
  14.                 With Workbooks.Open("a.xlsm").Sheets("outstanding payments")  '   在a.xlsx 的A欄最後一列加上b.xlsx 這列的B欄的值,及   在a.xlsx 的F欄最後一列加上b.xlsx 這列的K欄的值
  15.                     xi = .UsedRange.Cells(.UsedRange.Count).Row
  16.                     .UsedRange.Cells(xi, "A") = FRng.Offset(, -9).Value
  17.                     .UsedRange.Cells(xi, "F") = FRng.Value
  18.                 End With
  19.             End If
  20.         End If
  21.     End If
  22. End Sub
複製代碼
ps: 回覆時 按下[代碼] 將程式碼內容貼上,提交,即可便於查看者,複製程式碼.

TOP

回復 4# GBKEE


    請問除了Today的語法有問題外,還有沒有其他地方有語法問題?

TOP

回復 5# 198188
執行上: 有錯誤嗎? 沒有得到你的期望嗎?
沒錯誤,有得到你的期望,那還有什麼??

TOP

回復 6# GBKEE


    還沒試!因為我在外面用手機上網無法測試!雖然明白概念但因為自己語法能力弱,難以表達,所以先問清楚,回去試可以輕鬆些

TOP

回復 4# GBKEE

桌面.rar (473.14 KB)

只是打開了另外一個Excel,其他完全沒有反應。   
是不是有那些地方出錯了?

TOP

回復 8# 198188
請檢查 fs = "C:\Documents and Settings\USER\桌面\b.xlsx"
USER 是誰, 它僅是提醒你那指的是操作使用者,當然你就得換上正名了!

TOP

本帖最後由 198188 於 2012-12-9 09:22 編輯

回復 9# c_c_lai

C:\Documents and Settings\USER\桌面
    我是用user的名稱來命名這台電腦,所以這句沒錯。
我要開的另一個excel (b.xlsx)是打開了,但是執行沒有什麼做出來

TOP

        靜思自在 : 【為善競爭】人生要為善競爭,分秒必爭。
返回列表 上一主題