標題:
[發問]
VBA 表格內某格數值等於其他EXCEL檔
[打印本頁]
作者:
toxin
時間:
2012-5-3 16:00
標題:
VBA 表格內某格數值等於其他EXCEL檔
Private Sub CommandButton1_Click()
Dim a As Integer, i As Integer
Dim b As Integer
Dim c As Variant
Dim d As Variant
Dim E As Variant
IA = 7000
IB = 3
IC = 10
Do
If Sheets("製造單").Range("E" & IB) <> "" Then
IB = IB + 1
End If
Loop While Sheets("製造單").Range("E" & IB) <> ""
AGO:
IC = IC + 1
Do
d = Sheets("製造單").Range("D" & IB)
Set c = Sheets("客戶").Range("B11:B" & IC).Find(What:=d, LookIn:=xlFormulas, _
LookAt:=1, SearchOrder:=2, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=True)
If IC = IA Then
Sheets("製造單").Range("E" & IB) = "未命名"
GoTo STAR
End If
If c Is Nothing Then
GoTo AGO
Else
' IA = IC - 1
Sheets("製造單").Range("E" & IB) = Sheets("客戶").Range("H" & IC)
End If
STAR:
IB = IB + 1
IC = 11
Loop While Sheets("製造單").Range("D" & IB) <> ""
End Sub
複製代碼
請問依下如果我的客戶工作表在其他EXCEL檔裡
要如何叫阿??
作者:
GBKEE
時間:
2012-5-3 17:12
回復
1#
toxin
試試看
Option Explicit
Private Sub CommandButton1_Click()
Dim a As Integer, i As Integer
Dim b As Integer
Dim c As Variant
Dim d As Variant
Dim E As Variant
Dim WB As Workbook, IA As Integer, IB As Integer, IC As Integer
IA = 7000
IB = 3
IC = 10
Set WB = Workbooks.Open("d:\test.xls") '開啟活頁簿: 客戶工作表所在的活頁簿
Do
If WB.Sheets("製造單").Range("E" & IB) <> "" Then
IB = IB + 1
End If
Loop While WB.Sheets("製造單").Range("E" & IB) <> ""
AGO:
IC = IC + 1
Do
d = WB.Sheets("製造單").Range("D" & IB)
Set c = WB.Sheets("客戶").Range("B11:B" & IC).Find(What:=d, LookIn:=xlFormulas, _
LookAt:=1, SearchOrder:=2, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=True)
If IC = IA Then
WB.Sheets("製造單").Range("E" & IB) = "未命名"
GoTo STAR
End If
If c Is Nothing Then
GoTo AGO
Else
' IA = IC - 1
WB.Sheets("製造單").Range("E" & IB) = Sheets("客戶").Range("H" & IC)
End If
STAR:
IB = IB + 1
IC = 11
Loop While Sheets("製造單").Range("D" & IB) <> ""
End Sub
複製代碼
作者:
toxin
時間:
2012-5-4 08:11
回復
2#
GBKEE
不好意思
可能我表達不是很好
製造單跟客戶所在的檔案是不一樣的
如果單獨用開啟的方式開啟客戶所在的檔案
程式會沒辦法跑下去
不曉得有沒有不用開啟檔案的方式直接調用"客戶"工作表
作者:
Hsieh
時間:
2012-5-4 08:50
回復
3#
toxin
應該是你兩個檔案分別使用2個Excel應用程式開啟所致
我想你這個程序應該是在含有Sheets("製造單")的活頁簿中某一工作表的按鈕程序
試試以下程式碼
Private Sub CommandButton1_Click()
Dim a As Integer, i As Integer
Dim b As Integer
Dim c As Variant
Dim d As Variant
Dim E As Variant
Dim WB As Workbook, IA As Integer, IB As Integer, IC As Integer
IA = 7000
IB = 3
IC = 10
Set WB = Workbooks.Open("d:\test.xls") '開啟活頁簿: 客戶工作表所在的活頁簿
Do
If WB.Sheets("製造單").Range("E" & IB) <> "" Then
IB = IB + 1
End If
Loop While Sheets("製造單").Range("E" & IB) <> ""
AGO:
IC = IC + 1
Do
d = Sheets("製造單").Range("D" & IB)
Set c = WB.Sheets("客戶").Range("B11:B" & IC).Find(What:=d, LookIn:=xlFormulas, _
LookAt:=1, SearchOrder:=2, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=True)
If IC = IA Then
Sheets("製造單").Range("E" & IB) = "未命名"
GoTo STAR
End If
If c Is Nothing Then
GoTo AGO
Else
' IA = IC - 1
Sheets("製造單").Range("E" & IB) = WB.Sheets("客戶").Range("H" & IC)
End If
STAR:
IB = IB + 1
IC = 11
Loop While Sheets("製造單").Range("D" & IB) <> ""
WB.Close
End Sub
複製代碼
作者:
toxin
時間:
2012-5-7 08:15
回復
4#
Hsieh
感謝大大回覆
程式所在工作表的是製造單工作表
但是能夠不開啟客戶工作表而直接使用嗎?
因為會有下列問題
11列中開啟了客戶工作表的檔案
13製造單工作表應該不需要加(WB.)
但是11開啟客戶表後
到13列所在的工作表不同所以會出現"陣列索引超出範圍"
作者:
Hsieh
時間:
2012-5-7 08:54
回復
5#
toxin
所謂不開啟只是視覺上的關係,如果要取得某檔案內容,都必須開啟該檔案
就算是資料庫查詢,實質上還是在背景作業中開啟該檔案作為資料庫連線
你的問題最好將2個檔案同時附上,才知道問題出在哪裡
作者:
toxin
時間:
2012-5-8 08:17
回復
6#
Hsieh
麻煩大大了
檔案如附件
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)