Board logo

標題: 請教inputbox多重輸入的問題。 [打印本頁]

作者: tku0216    時間: 2012-7-20 14:41     標題: 請教inputbox多重輸入的問題。

各位好,請教一個問題:我需要在excel裡面,當使用者點選按鈕之後,跳出一個視窗,詢問哪兩題要對換,使用者輸入兩個題號之後,程式會將那兩題的某些特定欄位資料對換。
譬如附件所示,按下一個按鈕,出現一個視窗,出現“輸入對換題號”,使用者輸入“3”和“5”,就會把“一二三四五”(B4:F4)與“鼠牛虎兔龍”(B6:F6)給對換,題號則維持不變。[attach]11771[/attach]
作者: Hsieh    時間: 2012-7-20 16:01

回復 1# tku0216
  1. Private Sub CommandButton1_Click()
  2. Dim i%, j%, a As Range, b As Range, ar(), ar1()
  3. i = InputBox("輸入題號1")
  4. j = InputBox("輸入題號2")
  5. Set a = Columns("A").Find(i, lookat:=xlWhole)
  6. Set b = Columns("A").Find(j, lookat:=xlWhole)
  7. If a Is Nothing Or b Is Nothing Then MsgBox "無此題號": Exit Sub
  8. ar = a.Offset(, 1).Resize(, 5).Value
  9. ar1 = b.Offset(, 1).Resize(, 5).Value
  10. a.Offset(, 1).Resize(, 5) = ar1
  11. b.Offset(, 1).Resize(, 5) = ar
  12. End Sub
複製代碼

作者: tku0216    時間: 2012-7-20 16:33

感謝蕭大,我剛也試出了方法
Private Sub CommandButton1_Click()
    Dim q1, q2 As Integer
    q1 = InputBox("輸入題號一") + 2 '因為我的第一題是從第三列開始
    q2 = InputBox("輸入題號二") + 2
    r1 = Range(Cells(q1, 3), Cells(q1, 15)) '將某題第3欄~第15欄的資料對換
    r2 = Range(Cells(q2, 3), Cells(q2, 15))
    msgaa = MsgBox("確認第" & q1 - 2 & "與第" & q2 - 2 & "題對換?~~", 4)
    If msgaa = 6 Then  '若確認對換,按下ok
    Range(Cells(q2, 3), Cells(q2, 15)) = r1
    Range(Cells(q1, 3), Cells(q1, 15)) = r2
    End If
   
End Sub
作者: tku0216    時間: 2012-7-26 15:58

蕭大您好,
我發現您的程式碼,應在器7與8行之間加一個else,否則無法執行,還有似乎沒有加入end if的話,程式也無法執行,可以請問應該加在哪裡嗎?
作者: hugh0620    時間: 2012-7-26 17:00

回復 4# tku0216

  以下幾種if的使用方式,供你參考~
  (H大大的寫法~ 並沒有問題唷~ )

    if   條件  then
         符合條件,執行結果
    end if

    if   條件  then
         符合條件,執行結果
    else
          不符合條件,執行結果
    end if

     if   條件1  then
         符合條件,執行結果
    elseif   條件2  then
          符合條件2,執行結果
     else
            不符合條件1與不符合條件2,執行結果
    end if

     if 條件  then exit sub
作者: c_c_lai    時間: 2012-7-27 15:10

本帖最後由 c_c_lai 於 2012-7-27 15:24 編輯

回復 3# tku0216
第7行、與第 8行是兩個不同體的敘述。除非是你將 If 敘述寫成:
If a Is Nothing Or b Is Nothing Then
    MsgBox "無此題號"
    Exit Sub
End If
另外我為了自我測試, 稍加修改了 i%, j% 的宣告方式:
    ' Dim i%, j%, a As Range, b As Range, ar(), ar1()
    Dim i, j, a As Range, b As Range, ar(), ar1()
   
    i = InputBox("輸入題號1")    ' i% 如果輸入值為 a,則會出現型態不符的錯誤訊息
    j = InputBox("輸入題號2")    ' j 允許輸入任何數值、字元或字串
作者: tku0216    時間: 2012-7-27 16:03

還有想請教,inputbox的部分,如果想讓使用者輸入非數字時,即顯示錯誤訊息而要求重新輸入,我看網路上的做法是用application.inputbox方法,但若要加入使用者可以點選cancel時,程式隨即跳出,請問應該如何處裡?
作者: Hsieh    時間: 2012-7-27 18:34

回復 7# tku0216


    i = Application.InputBox("請輸入數值", "輸入數值", 1, , , , , 1)
If i = False Then MsgBox "已取消輸入": Exit Sub Else MsgBox "輸入數值為" & i




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