2011年7月2日 星期六

輸入或輸出計算結果

初學Excel VBA的人可能會想,以前我用VB可以用msgbox()或用label.text來輸出計算結果,換成Excel VBA後,不是有很多excel儲存格可以用嗎,沒錯

利用range物件的value屬性即可輸入或輸出值

 

Sub test1()

    Range("c2").Value = Range("a2").Value + Range("b2").Value
   
End Sub

 

 

事實上excel也可放置active控制項來做輸入輸出

 

Sub test1()

    Range("c2").Value = Range("a2").Value + Range("b2").Value
  
   '因為此VBA置於模組內,而Label與textbox放置在工作表1內,因此無法直接取用
    'Label1.Caption = Range("c2").Value
    'TextBox1.Text = Range("c2").Value
   
    工作表1.TextBox1.Text = Range("c2").Value
    工作表1.Label1.Caption = Range("c2").Value
   
   
End Sub

2011年7月1日 星期五

選取欄或列

'選取欄

Sub aaa()
   'i只能輸入英文字母

   i = InputBox("請輸入您選的英文字母欄")
   '將Z設定為整欄的範圍

   Z = i & ":" & i

   '將整欄選取
   Columns(Z).Select

   '使用msgbox通知使用者選取的欄

   MsgBox ("您選的是" & i & "欄")
End Sub

 

'選取列

Sub bbb()
   'i只能輸入數字

   i = InputBox("請輸入您選的數字列")
   '將Z設定為整列的範圍

   Z = i & ":" & i

   '將整列選取
   Rows(Z).Select

   '使用msgbox通知使用者選取的列

   MsgBox ("您選的是" & i & "列")
End Sub

excel VBA筆記

 

 

檢查某列是否有空白列,刪除空白列

 

Sub aaa()
    '到A欄最後一列
    Range("A65530").Select
    '跳到該欄最後一列有資料的地方
    Selection.End(xlUp).Select
    'x為最後一列有資料的列數
    x = ActiveCell.Row
    '從A1列開始
    Range("A1").Select
    '利用迴圈來判斷是否要刪除該列
    For y = 1 To x
        '如果該儲存格是沒資料,empty
        If ActiveCell.Value = Empty Then
             'x1為沒有資料那列
             x1 = ActiveCell.Row
             '將x1:x1設定為z列
             z = x1 & ":" & x1
             '選取z列
             Rows(z).Select
             '刪除z列後,剩餘資料往上移動一列
             Selection.Delete Shift:=xlUp
        Else
           
            ActiveCell.Offset(1, 0).Select
        End If

    Next
    '回到A1儲存格
    Range("A1").Select
End Sub