返回列表 上一主題 發帖

請教inputbox多重輸入的問題。

請教inputbox多重輸入的問題。

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

回復 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
複製代碼
學海無涯_不恥下問

TOP

感謝蕭大,我剛也試出了方法
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

TOP

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

TOP

回復 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
學習才能提升自己

TOP

本帖最後由 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 允許輸入任何數值、字元或字串

TOP

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

TOP

回復 7# tku0216


    i = Application.InputBox("請輸入數值", "輸入數值", 1, , , , , 1)
If i = False Then MsgBox "已取消輸入": Exit Sub Else MsgBox "輸入數值為" & i
學海無涯_不恥下問

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題