台灣最大程式設計社群網站
線上人數
1757
 
會員總數:246046
討論主題:189631
歡迎您免費加入會員
討論區列表 >> VB6 >> VB CASE條件問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB CASE條件問題
價值 : 100 QP  點閱數:390 回應數:12
樓主

Josh Cheng
門外漢
0 2
70 6
發送站內信

各位大大,大家好!
小弟寫一個程式

1到100
想要在前端輸入有幾個不跑
遇到case 條件在inputbox輸入"2,3,5"
因知道inputbox輸入的是字串所以是找 『"2,3,5"』這條件
所以我用了Cint(inputbox),但是這樣會變成235
於是又有參考了eval的方法,但這函數沒有處理逗號的方式


所以...煩請大大解題


搜尋相關Tags的文章: [ case ] , [ 條件式 ] , [ if ] ,
本篇文章發表於2020-03-16 10:23
1樓
回應

HB
檢舉此回應
可以試試Split函數,參考看看https://www.twblogs.net/a/5b7f4a8b2b717767c6aed759
本篇文章回覆於2020-03-16 12:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Josh Cheng
檢舉此回應
謝謝hb大的回覆
但是主要是卡要讓逗號這個運算子讓程式辨識到
e.g.
For i = 1 To 100
Select Case i
Case inputbox //前端輸入2,3,5 or 1,2,3,4,5,6...,..,...,...
Case Else:
[ statements ]
End Select
Next
本篇文章回覆於2020-03-16 13:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應
用 instr 去尋找逗號,來處理
請參考
https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/instr-function
本篇文章回覆於2020-03-16 20:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

HB
檢舉此回應
To Josh Cheng:

1F提供的資訊是要將前端輸入2,3,5的文字,拆成3個2、3、5等3個數字,再進行Select Case的處理,因為Split函數可以將含有『,』的字串,拆解成Array,再利用Array循環圈讀出每一數字再進行處理。

若問題不是如此,可能需要描述更清楚些?或Po出語法?
本篇文章回覆於2020-03-17 07:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Josh Cheng
檢舉此回應
回香帥大
提供新的想法感覺不錯,晚點試試
謝謝!
本篇文章回覆於2020-03-17 13:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Josh Cheng
檢舉此回應
回HB大,謝謝你的熱情回覆
你的方法我試過,但我沒試成功,爬了蠻多文,在想是不是case 後面的逗號跟陣列裡面的逗號意義不同的關係

但最後還是要用for加上你提供的Split寫出來一樣的邏輯
For i = 1 To count

If UBound(boxarry)>=0 Then
j=0
For UBound(boxarry)

If i = Cint(boxarry(j)) Then

Exit For
End If
j=j+1
Next
End If
Next

雖然CASE 的方式還是沒有解決,不過算是達到同樣的目的了,再次感謝

本篇文章回覆於2020-03-17 13:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

HB
檢舉此回應
提供簡易的範例供參考,看看是否符須需求

本篇文章回覆於2020-03-17 17:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Josh Cheng
檢舉此回應
回覆HB大
謝謝你提供簡潔有力的CODE
但主要的問題是我要在前端輸入條件,這也代表不只會有三個CASE而已,所以才會想用一欄多條件的CASE也就是case 1,2,3,.......這種寫法
所以才一直在執著有沒有可以直接讓code進行邏輯運算子的方法!
假設1到100
今天"2,3,5,6,9"不執行
明天"2,3,5,6,9,30,70"不執行


本篇文章回覆於2020-03-18 01:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

HB
檢舉此回應
To Josh Cheng:

1. strS = "2, 3, 5"只是舉例,幾個可以自行改變,但Select Case需同時設定,才能執行。

2. 從8F得知,只是將1 to 100間過濾所輸入之數字而已,提供下述語法供參考:

本篇文章回覆於2020-03-18 07:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Josh Cheng
檢舉此回應
回覆HB大:
謝謝,後來也是用IF來完成,但是如果CASE能夠執行的話,是想用case比較方便
再次感謝了!
本篇文章回覆於2020-03-20 09:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

樹哥
檢舉此回應
回覆HB大:

用InStr比對會有風險 ....

Private Sub test()
Dim strS As String
strS = "2, 3, 5, 50, 78"
For i = 1 To 100
If InStr(strS, i) > 0 Then
List1.AddItem i
End If
Next
End Sub
本篇文章回覆於2020-03-28 08:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

HB
檢舉此回應
還是需要回到1F的觀念,修正語法如下:


本篇文章回覆於2020-03-28 13:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.