返回列表 上一主題 發帖

[發問] 請問前輩們 如何讓VBA 依據欄位裡的名稱去搜索到同名稱的工作表

本帖最後由 lpk187 於 2015-10-2 23:30 編輯

回復 1# 順勢而為

可以的話,最好上傳檔上來,比較可以得到較正確的答案
不然的話剛不久向准大學的語法,套進去你的程式也行
       SHN =Range("A1") '讀取A1儲存格的值,(A1欄位同名稱的工作表)
      On Error Resume Next'表示當一個執行階段錯誤產生時,程式控制立刻到發生錯誤陳述式接下去的陳述式
     Set xS = Sheets(SHN) '設定 xS 為尋找的工作表 如果找不到會產生錯誤,所以要有上一句和下一句
     On Error GoTo 0 '停止現在程序�堨籉韝w啟動的錯誤處理程式
然後後面
With xS      'xS=Sheets("A公司")
      ...  
      ...
End With
以上僅供參考

TOP

回復 3# 順勢而為

考慮你不能下載檔案,所以只PO上程式碼,請自行換換置
原來的程式,大部份刪除掉了,嗯!太長了!陣列如此使用,會累死人的,所以我把它改掉了
  1. Sub 導入()

  2. With Sheets("銷貨單")
  3.     If .[B12] = "" Then MsgBox "請輸入資料後再按按鈕 ": Exit Sub
  4.     shN = .[O14]
  5.     Ro = .[B27].End(xlUp).Row
  6.     arr = .Range("C12:I" & Ro)
  7.     日期 = .[h7]
  8. End With
  9. On Error Resume Next '表示當一個執行階段錯誤產生時,程式控制立刻到發生錯誤陳述式接下去的陳述式
  10. Set xS = Sheets(shN) '設定 xS 為尋找的工作表 如果找不到會產生錯誤,所以要有上一句和下一句
  11. On Error GoTo 0 '停止現在程序�堨籉韝w啟動的錯誤處理程式
  12. With xS
  13.     xSro = .Cells(Rows.Count, 1).End(xlUp).Row + 1
  14.     .Cells(xSro, "B").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
  15.     .Range("A" & xSro & ":A" & xSro + UBound(arr, 1) - 1) = 日期
  16. End With
  17. Sheets("銷貨單").Select
  18. Range("B12:B26,D12:D26,H7:H8,H5").ClearContents
  19. Range("C4") = "S" & Format(Right(Range("C4"), 4) + 1, "0000")

  20. End Sub
複製代碼

TOP

回復 6# 准提部林

對吼!忘記加了,感謝准大提醒!謝謝

TOP

回復 8# 順勢而為

你把If xS Is Nothing Then MsgBox "工作表不存在": Exit Sub把這列放到
On Error GoTo 0 上面看看

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題