2012年12月28日金曜日

追加課題(12/28)

追加課題
見出し1見出し2見出し3見出し4見出し5
内容11内容12内容13内容14内容15
内容21内容22内容23内容24内容25
内容31内容32内容33内容34内容35
内容41内容42内容43内容44内容45
内容51内容52内容53内容54内容55

既存のエクセル内の表に対して
 A.一番上の行を見出し行と見なし,黒背景白文字ボールドセンタリングを行う
 B.2行目以下について,偶数行と奇数行で背景色を交互に塗り分け
を実現
ここで,実装するべき機能は
 1.選択されたセルを開始位置として,そこから表が続く限り処理を繰り返す
   (表が終われば処理終了)
 2.1つめのif文で1行目か否かを判別し,1行目ならばAの処理を実行
 3.2つめのif文で2行目移行と判別できたら,その行が奇数行か偶数行か判別
  3-1.奇数行だった場合,少し薄めの色で背景を塗る
 3-2.偶数行だった場合,奇数行よりも少し濃いめの色で背景を塗る
です.


1.横方向に移動し,セルの内容を表示するプログラム
Sub ironuri1()
    Do While Not (ActiveCell.Value = "")
        MsgBox ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
    Loop
End Sub
2.縦方向に移動し,セルの内容を表示するプログラム
Sub ironuri2()
    Do While Not (ActiveCell.Value = "")
        MsgBox ActiveCell.Value
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
3.横方向に移動し,セルの内容を表示するプログラム
  +行末までたどり着いたら自動的に改行
Sub ironuri3()
    Do While Not (ActiveCell.Value = "")
        MsgBox ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
    Loop
    ActiveCell.Offset(1, 0).Select
End Sub
4.横方向に移動し,セルの内容を表示するプログラム
  +行末までたどり着いたら自動的に改行
  +表の左端まで移動
Sub ironuri4()
    Do While Not (ActiveCell.Value = "")
        MsgBox ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
    Loop
    ActiveCell.Offset(1, -5).Select
End Sub
5.横方向に移動し,セルの内容を表示するプログラム
  +行末までたどり着いたら自動的に改行
  +「任意の大きさの」表の左端まで移動
Sub ironuri5()
    Dim i As Integer
    i = 1
    Do While Not (ActiveCell.Value = "")
        MsgBox ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        i = i + 1
    Loop
    ActiveCell.Offset(1, (-i + 1)).Select
End Sub
6.横方向に移動し,セルの内容を表示するプログラム
  +行末までたどり着いたら自動的に改行
  +「任意の大きさの」表の左端まで移動
  +移動後の行に対しても同様の処理を行う
  =任意の表の各セル全範囲を移動し,セルの内容を表示するプログラム
Sub ironuri6()
    Do While Not (ActiveCell.Value = "")
        Dim i As Integer
        i = 1
        Do While Not (ActiveCell.Value = "")
            MsgBox ActiveCell.Value
            ActiveCell.Offset(0, 1).Select
            i = i + 1
        Loop
        ActiveCell.Offset(0, (-i + 1)).Select
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
7.任意の表の各セル全範囲を移動し,セルの内容を表示するプログラム
  +行数把握
Sub ironuri7()
    Dim j As Integer
    j = 1
    Do While Not (ActiveCell.Value = "")
        Dim i As Integer
        i = 1
        Do While Not (ActiveCell.Value = "")
            MsgBox ActiveCell.Value & ", " & j & "行目"
            ActiveCell.Offset(0, 1).Select
            i = i + 1
        Loop
        ActiveCell.Offset(0, (-i + 1)).Select
        ActiveCell.Offset(1, 0).Select
        j = j + 1
    Loop
End Sub
8.任意の表の各セル全範囲を移動し,セルの内容を表示するプログラム
  +行数把握
  +1行目とその他の行で処理分岐
Sub ironuri8()
    Dim j As Integer
    j = 1
    Do While Not (ActiveCell.Value = "")
        Dim i As Integer
        i = 1
        Do While Not (ActiveCell.Value = "")
            If j = 1 Then
                MsgBox ActiveCell.Value & ", " & j & "行目(見出し行です)"
            Else
                MsgBox ActiveCell.Value & ", " & j & "行目(見出し行ではありません)"
            End If
            ActiveCell.Offset(0, 1).Select
            i = i + 1
        Loop
        ActiveCell.Offset(0, (-i + 1)).Select
        ActiveCell.Offset(1, 0).Select
        j = j + 1
    Loop
End Sub
9.任意の表の各セル全範囲を移動し,セルの内容を表示するプログラム
  +行数把握
  +1行目とその他の行で処理分岐
  +2行目以降の奇数行・偶数行で処理分岐
Sub ironuri9()
    Dim j As Integer
    j = 1
    Do While Not (ActiveCell.Value = "")
        Dim i As Integer
        i = 1
        Do While Not (ActiveCell.Value = "")
            If j = 1 Then
                MsgBox ActiveCell.Value & ", " & j & "行目(見出し行です)"
            Else
                If (j Mod 2) = 1 Then
                    MsgBox ActiveCell.Value & ", " & j & "行目(見出し行ではありません)(奇数行)"
                Else
                    MsgBox ActiveCell.Value & ", " & j & "行目(見出し行ではありません)(偶数行)"
                End If
            End If
            ActiveCell.Offset(0, 1).Select
            i = i + 1
        Loop
        ActiveCell.Offset(0, (-i + 1)).Select
        ActiveCell.Offset(1, 0).Select
        j = j + 1
    Loop
End Sub
10.任意の表の各セル全範囲を移動し,セルの内容を表示するプログラム
   +行数把握
   +1行目とその他の行で処理分岐
   +2行目以降の奇数行・偶数行で処理分岐
   +各行にあわせた処理を記述
Sub ironuri10()
    Dim j As Integer
    j = 1
    Do While Not (ActiveCell.Value = "")
        Dim i As Integer
        i = 1
        Do While Not (ActiveCell.Value = "")
            If j = 1 Then
                MsgBox ActiveCell.Value & ", " & j & "行目(見出し行です)"
                ActiveCell.Font.Bold = True
                ActiveCell.Font.ColorIndex = 2
                ActiveCell.Interior.ColorIndex = 1
            Else
                If (j Mod 2) = 1 Then
                    MsgBox ActiveCell.Value & ", " & j & "行目(見出し行ではありません)(奇数行)"
                    ActiveCell.Interior.ColorIndex = 15
                    ActiveCell.BorderAround ColorIndex:=1
                Else
                    MsgBox ActiveCell.Value & ", " & j & "行目(見出し行ではありません)(偶数行)"
                    ActiveCell.Interior.ColorIndex = 48
                    ActiveCell.BorderAround ColorIndex:=1
                End If
            End If
            ActiveCell.Offset(0, 1).Select
            i = i + 1
        Loop
        ActiveCell.Offset(0, (-i + 1)).Select
        ActiveCell.Offset(1, 0).Select
        j = j + 1
    Loop
End Sub

2012年12月25日火曜日

Select-Caseステートメント SAMPLE(Excel VBA)

shiken3()
Sub shiken3()
    Dim tensuu As Integer
    tensuu = Range("C26").Value
    If tensuu >= 80 Then
        MsgBox "合格です"
    Else
        If tensuu >= 60 Then
            MsgBox "追試です"
        Else
            MsgBox "不合格です"
        End If
    End If
End Sub

waribiki()
Sub waribiki()
    Dim kingaku As Currency
    kingaku = Range("C33").Value
    If Range("D33").Value = "一般" Then
        If kingaku >= 50000 Then
            MsgBox "一般:15%割引です"
        Else
            If kingaku >= 30000 Then
                MsgBox "一般:10%割引です"
            Else
                If kingaku >= 10000 Then
                    MsgBox "一般:5%割引です"
                Else
                    MsgBox "一般:割引なしです"
               End If
            End If
        End If
    Else
        If Range("D33").Value = "会員" Then
            If kingaku >= 50000 Then
                MsgBox "会員:30% 割引です"
            Else
                If kingaku >= 30000 Then
                    MsgBox "会員:20%割引です"
                Else
                    If kingaku >= 10000 Then
                        MsgBox "会員:10%割引です"
                    Else
                        MsgBox "会員:割引なしです"
                    End If
                End If
            End If
        End If
    End If
End Sub

iro()
Sub iro()
    Select Case Range("C34").Value
    Case "RED"
        strIro = "RED"
    Case "BLUE"
        strIro = "BLUE"
    Case "PINK"
        strIro = "PINK"
    Case "GREEN"
        strIro = "GREEN"
    Case Else
        strIro = "RED.BLUE.PINK.GREENのいずれかを入力してください"
    End Select
        MsgBox strIro
End Sub