Board logo

標題: 寫入原位 [打印本頁]

作者: myleoyes    時間: 2013-4-17 21:03     標題: 有關Application.InputBox的問題

各位前輩你們好!
      前輩!範例
          練習!$N$5=8
          練習!$O$5=2
          練習!$P$5=7
      Sub 練習()
          ZZ = Application.InputBox("請不吝賜教!", "     請教前輩們!!", Type:=0)
          If ZZ = False Then Exit Sub  
          [$M$1] = ZZ
      End Sub   
          得到[$M$1]=[LeoV-67.xlsm]練習!$N$5+[LeoV-67.xlsm]練習!$O$5+[LeoV-67.xlsm]練習!$P$5
          需求[$M$1]=8+2+7這樣的型態
          不知程式為何?
          請不吝再賜教謝謝再三!!
作者: GBKEE    時間: 2013-4-18 15:17

回復 1# myleoyes
試試看
  1. Option Explicit
  2. Sub 練習()
  3.     Dim ZZ As Range, E As Range, M
  4.     On Error Resume Next
  5.     Set ZZ = Application.InputBox("請不吝賜教!", "     請教前輩們!!", Type:=8)
  6.     'Type     選擇性的 Variant。指定傳回的資料類型。如果省略此引數,對話方塊將傳回文字。這可為下列值的其中之一或其中幾個的和。
  7.     '值 意義
  8.     '0 公式
  9.     '1 數字
  10.     '2 文字 (字串)
  11.     '4 邏輯值 (True 或 False)
  12.     '8 儲存格參照,作為 Range 物件
  13.     '16 錯誤值,比如 #N/A
  14.     '64 數值陣列
  15.     If ZZ = False Then Exit Sub
  16.    
  17.     For Each E In ZZ.Cells
  18.         M = IIf(M = "", "", M & "+") & IIf(E = "", "0", E)
  19.     Next
  20.     [$M$1] = M
  21. End Sub
複製代碼

作者: myleoyes    時間: 2013-4-18 22:09

回復 2# GBKEE
良師!謝謝!!Type:=8 只能單取無法複選之前有試過
           請麻煩再修改一下辛苦囉!謝謝再三!!
作者: GBKEE    時間: 2013-4-19 13:30

回復 3# myleoyes
InputBox 顯示後: 按下Ctrl鍵 可複選
作者: myleoyes    時間: 2013-4-19 21:45

回復 4# GBKEE
良師!謝謝!!你可能誤解小弟所謂的複選      
           如附動畫檔所示!!
           請麻煩再修改一下辛苦囉!謝謝再三!!
作者: GBKEE    時間: 2013-4-22 15:47

本帖最後由 GBKEE 於 2013-4-22 15:49 編輯

回復 5# myleoyes
按下Ctrl鍵 可複選: 就如工作表上選取多重範圍的儲存格
你試過嗎?
作者: myleoyes    時間: 2013-4-22 21:30

回復 6# GBKEE
良師!謝謝!試過N次動畫檔就是按下Ctrl鍵複選的結果
        問題是Type:=8 只能接受單取無法複選才頭大
      其他的Type也試過[$M$1]沒有數字出現謝謝再三!!
作者: GBKEE    時間: 2013-4-23 14:23

回復 7# myleoyes
按下Ctrl  滑鼠選取不相連的儲存格,程式會用,連接的
例  Sheet2!$L$3,Sheet2!$L$5,Sheet2!$N$5
錄製巨集會有結果的

你希望得到的是公式 -> 需求[$M$1]=8+2+7這樣的型態
修改2#下方的程式碼可達到
  1. For Each E In ZZ.Cells
  2. M = IIf(M = "", "=", M & "+") & IIf(E = "", "0", E)
  3. Next
複製代碼



[attach]14753[/attach]
作者: myleoyes    時間: 2013-4-23 22:08

回復 8# GBKEE
良師!小弟知錯..對不起我錯了!
     原本程式
     Sub 練習()
          If Sheet2.[I1] = 1 Then 練習1
          If Sheet2.[I1] = 2 Then 練習2
     End Sub
     Sub 練習1()'數字相加
         Dim ZZ
         ZZ = Application.InputBox("請不吝賜教!", "     請教前輩們!!", Type:=8 + 1)
         If ZZ <= 0 Then Sheet2.[I1] = 2: Exit Sub
         [$M$1] = ZZ
     End Sub
     Sub 練習2()'數字相減
         Dim ZZ
         ZZ = Application.InputBox("請不吝賜教!", "     請教前輩們!!", Type:=8)
         If ZZ <= 0 Then Sheet2.[I1] = 1: Exit Sub
         [$M$1] = ZZ
     End Sub
     而良師的程式為練習3
     但使終沒有被用到所以才會讓我覺得納悶
     附上檔案又習慣性的用+符號來解釋問題所在!!
     實在抱歉!!辛苦囉!謝謝再三!!
作者: myleoyes    時間: 2013-4-25 22:12     標題: 寫入原位

各位前輩你們好!!
         前輩!請同時開啟資料檔與甲檔再按鈕
         問題如附檔說明
         請知道的前輩,不吝賜教謝謝再三!!
[attach]14788[/attach]
作者: GBKEE    時間: 2013-4-26 14:41

回復 10# myleoyes
  1. Sub 練習1() '加
  2.     位移AZ
  3. ag:
  4.     Dim ZZ As Range, E As Range, M
  5.     On Error Resume Next
  6.     Set ZZ = Application.InputBox("請不吝賜教!", "     請教前輩們!!", "$ 請點選AZ欄 $", Type:=8)
  7.            If ZZ <= 0 Then Sheet2.[I1] = 2: Exit Sub
  8.         For Each E In ZZ.Cells
  9.               M = IIf(M = "", "=", M & "+") & IIf(E = "", "0", E)
  10.        Next
  11.        ThisWorkbook.Sheets("資料").[$M$1] = M
  12. End Sub
複製代碼
甲檔如果換成乙檔就無法使用 -> 要如何決定使用 甲檔或乙檔
  1. Sub 位移AZ()
  2.     With Windows("甲檔.xls")
  3.         .Activate
  4.         .ScrollColumn = 52
  5.         .ScrollRow = ActiveSheet.Range("AO" & Rows.Count).End(xlUp).Row
  6.     End With
  7. End Sub
複製代碼

作者: myleoyes    時間: 2013-4-26 22:07

回復 11# GBKEE
良師!謝謝!!
     要如何決定使用 甲檔或乙檔
     甲檔或乙檔是用手動方式開啟
     如開甲檔按鈕時位移AZ程式適用
     開乙檔按鈕時位移AZ程式也可以使用
     也就是說位移AZ程式適用任何被選取數據的檔案
     所以位移AZ程式不能用 With Windows("甲檔.xls")
     小弟想是否用如 OpenWork.Sheets("練習")
     這樣的想法良師是否明白?請再指導辛苦囉!謝謝再三!!




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