返回列表 上一主題 發帖

請教由巨集錄制的公式如何轉換為VBA公式,並且儲存格可以是變數

回復 8# luffyzoro
  1. Option Explicit
  2. Sub Ex()
  3.     Dim hubopf As String, AR
  4.     hubopf = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
  5.     If hubopf = "False" Then MsgBox "請選取檔案": Exit Sub
  6.     AR = Split(hubopf, "\")
  7.     hubopf = AR(UBound(AR))   'hubopf = "B.xls"隨著開啟檔名不同也可能是"C.xls"
  8.     Workbooks.Open hubopf     'Workbooks( hubopf )
  9. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2011-11-24 16:00 編輯

回復 10# luffyzoro
改成ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-1]=[" & hubopf & "]AC8E!R" & hubcn & "C2,[" & hubopf & "]AC8E!R" & hubcn & "C72>0,[" & hubopf & "]
AC8E!R" & hubcn & "C72-SUM(R" & mycarw & "C11:RC[5])>0),[" & hubopf& "]AC8E!R" & hubcn & "C9)"

ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-1]=[hubopf]AC8E!R" & hubcn & "C2,[hubopf]AC8E!R" & hubcn & "C72>0,[hubopf]AC8E!R" & hubcn & "C72-SUM(R" & mycarw & "C11:RC[5])>0),[hubopf]AC8E!R" & hubcn & "C9)"
你知道 hubcn 是變數要如此的加入變數  & hubcn &
同理 hubopf 是變數 也要如此做的

TOP

本帖最後由 GBKEE 於 2011-11-25 16:30 編輯

回復 13# luffyzoro
8樓: 假設我的巨集是寫在A.xls , 用A.xls開啟B.xls , 照版大的方式我的hubopf會得到"D:\C資料夾\F資料夾\B.xls"

hubopf ="B.xls"
[" & hubopf & "]如目前磁碟機的路徑不是 D:\C資料夾\F資料夾  Excel會找不到檔案的  
請你在適當的地方加入   ChDir  "D:\C資料夾\F資料夾"    移動目前磁碟機的路徑

TOP

回復 15# luffyzoro
9樓的錯誤   這裡會跳出對話框要求我選擇開啟檔案,  ChDir "H:\My documents\專案\工作量專案"    後9樓的錯誤消失了

15樓錯誤訊息  執行階段錯誤'1004':應用程式或物件定義上的錯誤
這程式碼 我代入變數 hubopf   , hubcn,  沒有錯誤,  請檢查每一  Workbooks (hubopf) 中是否 有工作表名稱"AC8E"
ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-1]=[" & hubopf & "]AC8E!R" & hubcn & "C2,[" & hubopf & "]AC8E!R" & hubcn & "C72>0,[" & hubopf & "]AC8E!R" & hubcn & "C72-SUM(R" & mycarw & "C11:RC[5])>0),[" & hubopf & "]AC8E!R" & hubcn & "C9)"

TOP

回復 17# luffyzoro
請檢查每一  Workbooks (hubopf) 中是否 有工作表名稱"AC8E"
=[" & hubopf & "]AC8E!R" & hubcn & "C2
這公式 hubopf  會是 "b.xls" ."c.xls" "d.xls"  不一定的檔案 ,  AC8E 需是這些檔案中一定有的工作表名稱

TOP

回復 19# luffyzoro
導致公式並沒在我要的儲存格內?  你這意思是ActiveCell的位置不對!

我註解你看看
Cells(ActiveSheet.Rows.Count, 6).End(xlUp).Select  'F欄裡最後一個資料的Cells
Selection.Offset(1, 0).Select                                         
F欄裡最後一個資料的Cells的下一列的Cells   這就是 ActiveCell  對不對!

TOP

回復 19# luffyzoro
9# 是不是我哪邊寫錯了,導致公式並沒在我要的儲存格內?
你要的是有公式, 不要只是值 對嗎?
Selection.Value = Selection.Value   '這裡 公式被值取代 了
ActiveCell.Offset(1).Select

TOP

回復 23# luffyzoro
而且逐行執行是到公式那一列就錯誤了   

請問Workbooks( hubopf )中有 AC8E 這工作表嗎?

ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-1]=[" & hubopf & "]AC8E!R" & hubcn & "C2,[" & hubopf & "]AC8E!R" & hubcn & "C72>0,[" & hubopf & "]AC8E!R" & hubcn & "C72-SUM(R" & mycarw & "C11:RC[5])>0),[" & hubopf & "]AC8E!R" & hubcn & "C9)"

TOP

回復 19# luffyzoro
版大願意的話,我可以將檔案寄給版大幫忙看一下
請在你個人資料 留下 Mail

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題