ExcelVBASelectCase结构

人生经常要面临“多选一”的情况,在编写程序代码时也是如此。在上篇文章中,我们讲解了使用If-Then结构来进行判断,也举了很多个小例子。我们看到,随着条件的增多,代码的结构也变得复杂或难以理解。幸运的是,VBA为我们提供了Select Case结构,让我们根据多个条件判断选择时,能够写出容易理解的代码。

上篇文章的结尾举了一个例子:按照一定的规则,根据员工的工龄来确定员工的年休假天数:

工龄(年)年休假天数10年及以下510~201020~251525年以上20

现在,我们使用Select Case结构来编写代码,实现相同的功能。首先看看示例代码:

示例代码1

Sub NianXiuTianWithSelectCase()

‘声明变量,用来表示年休天数和工龄

Dim lngDays As Long

Dim lngYears As Long

lngYears = Range(“A1”).Value

‘根据工龄确定相应的年休天数

Select Case lngYears

Case 0 To 10

lngDays = 5

Case 10 To 20

lngDays = 10

Case 20 To 25

lngDays = 15

Case Is > 25

lngDays = 20

End Select

MsgBox “工龄:” &lngYears & vbCrLf & “年休天数:” &lngDays

End Sub

同样,您可以在工作表单元格A1中输入代表工龄的数字,运行代码后,会显示相应的年休天数,就像在上篇文章中所示的图一样。

与上篇文章中的代码相比,既简单又易理解。

Select Case结构的语法如下:

Select Case 条件(表达式)

[Case 表达式值1

[语句块] ]

[Case 表达式值2

[语句块] ]

……

[Case Else

[语句块] ]

End Select

说明:



  • excel vba 鎵弿鍏ㄥ伐浣滆〃鎵鏈夋湁鏁堟暟鎹,灏辨槸閫愪釜鏁版嵁鏌ヨ銆
    绛旓細濡備笅杩欎釜灏辫锛歋ub Macro3()Dim m As Range For Each m In Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell))'姣忎釜鍗曞厓鏍煎鐞嗙殑浠g爜 If m.Text <> "" Then m.Select '...'...End If Next m End Sub 鏈夌枒闂紝璇稨i鎴戞垨缁欐垜鍙戠櫨搴︽秷鎭 GoodLuck!
  • 鎯崇敤ExcelVBA瀹炵幇:
    绛旓細澶嶅埗sheet1锛屼互鏃堕棿鍛藉悕鏂扮殑宸ヤ綔绨 temp = Now temp = Replace(temp, ":", "")temp = Replace(temp, "/", "")temp = Replace(temp, " ", "")temp = ActiveWorkbook.Path & "\" & temp Sheets("sheet1").Copy ActiveWorkbook.SaveAs temp ...
  • ExcelVBA鐨勭紪绋嬮棶棰
    绛旓細姣斿浣犺妫娴婣鍒10000琛屽紑濮嬬殑鍗曞厓鏍兼槸涓嶆槸閮芥湁鈥淭EXT鈥濊繖鍥涗釜瀛楃锛屼唬鐮佸彲浠ヨ繖鏍峰啓 鍥剧墖 Sub 妫娴嬪瓧绗()Dim a Dim b Dim c a = 10000 b = 0 Do a = a + 1 If a = 11000 Then Exit Do ElseIf Cells(a, 1) = "TEXT" Then b = b + 1 c = c & " " & a End If Loop ...
  • excel涓,浠庣涓鍒楀埌i-1鍒鐢╲ba鎬庝箞鍐?
    绛旓細閫変腑A1:N2锛歳ange("A1:N2").select 濡傛灉瑕佸惊鐜疉1:N2鍏朵腑绗竴琛岀殑姣忎釜鍗曞厓鏍硷細dim c as range for each c in range("A1:N2").rows(1)msgbox c.value next
  • 濡備綍灏Excel琛ㄤ腑缂栬緫鈥旀煡鎵惧悗鐨勫椤瑰唴瀹瑰鍒跺埌鏂板缓鐨勮〃鏍间笂
    绛旓細Dim MPATH As String Dim I, J As Integer Dim K1, K2 As Integer 'K1璁板綍鎶ヨ〃鐨勮鍙凤紝K2璁板綍鎶ヨ〃鐨勫垪鍙 MPATH = ActiveWorkbook.Path MBOOK = ActiveWorkbook.Name Set d = CreateObject("Scripting.Dictionary")Sheets("閫佸ザ璁板綍").Select I = 2 Do While Len(Cells(I, 2)) > 0 c = ...
  • 姹傚姪:excel 鐢╲ba 鏃,鎬庝箞鎵嶈兘閫変腑闅愯棌琛ㄦ牸涓殑鏁版嵁
    绛旓細鍙互灏濊瘯灏嗗鍒剁殑鏂囦欢鍏堢矘璐村埌闈為殣钘忕殑鍗曞厓鏍,鍐嶅鍔犱竴娈靛鍒朵唬鐮佸簲璇ュ氨鍙互浜 Private Sub CommandButton1_Click()Range("C30:C39").Copy Range("C1000:c1009")Range("C1000:c1009").Copy End Sub
  • ExcelVBA鏂版墜,浠g爜杩愯鍒板畾浣嶅叕寮忔椂鎻愮ず鑷姩鍖栭敊璇,鑳藉府蹇欑湅涓嬫槸浠涔...
    绛旓細Select 鏄 Action锛屼笉鍙兘鏈 Locked 灞炴с傚彧鏈 Selection 鎵嶆湁銆係pecialCells 鏄 Range 鐨勫睘鎬э紝涓嶆槸 Sheets 鐨勫睘鎬с傜敤閿 鐩爣锛圤bject锛変簡銆
  • EXCEL 澶氭潯浠舵煡鎵(VBA)
    绛旓細鎴戣寰椾綘杩欎釜闂锛屽湪A鍒楀拰B鍒楁煡鎵剧殑鎰忔濇槸蹇呴』瑕丄鍒楃瓑浜200806015锛孊鍒楃瓑浜庘滅敳鐧界彮鈥濓紝鐒跺悗C鍒椻24#鈥濓紝鏈鍚庢墠杩斿洖D鍒楀拰C鍒楀搴旇鐨勫笺傛墍浠ュ簲璇ョ洿鎺ユ煡鎵綜鍒楋紝鐒跺悗杩涜鍒ゆ柇灏卞彲浠ヤ簡銆VBA鐨勮瑷鏄繖鏍风殑锛歴ub chazhao()dim i as integer for i = 1 to 100 if cells(i,3)="24#" and ...
  • Excel 鎬庝箞鍑虹幇鑷姩鐨勯夊彇瀵硅薄?-Excel鑷姩寮瑰嚭閫夋嫨椤归棶
    绛旓細Excel VBA鐢ㄦ埛鏈杩戝湪涓涓鍧涗笂璇㈤棶锛屽綋宸ヤ綔琛ㄥ悕绉板瓨鍌ㄤ负鍙橀噺鏃讹紝濡備綍鍦╒BA涓夋嫨宸ヤ綔琛ㄣ傞鍏堜粬涓嶉渶瑕侀夋嫨宸ヤ綔琛ㄧ殑鍑犵巼绾︿负95锛呫備负浜嗚鏄庯紝鎴戞墦寮浜嗗畯褰曞埗鍣紝閫夋嫨浜嗗崟鍏冩牸D9锛岀劧鍚庡湪鍗曞厓鏍间腑杈撳叆“ x”銆傝繖鏄疎xcel璁板綍瀹忕殑鏂瑰紡锛歋ub Macro1()Range("D9").Select ActiveCell.FormulaR1C...
  • Excel浣跨敤瀹忔彃鍏ュ崟鍏冩牸鐨勪唬鐮
    绛旓細2) b(i) = Cells(i, 3) Next '閫変腑绗簩琛屾暣琛 Rows("2:2").EntireRow.Select '寮濮嬬┖琛岀殑鎻掑叆鍜屽崟鍏冩牸鏁版嵁鐨勫~鍏 For i = 1 To m For j = 1 To a(i) '鎻掑叆鏂扮殑涓琛 Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove '灏咰鍒楃殑...
  • 扩展阅读:beegees stayin alive ... beside the point翻译 ... eat my dick ... behind用英语怎么说 ... mysql between ... behind是什么意思 ... above ... behind和six的i发音 ... yourself音标 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网