複利計算の早見表を作る

Sub 複利()
Dim i As Long

For i = 1 To 100
Cells(1, i + 1).Value = i * 0.005
Cells(i + 1, 1).Value = i
Next
Range("A1").Value = "100"
Range("B1:CW1,A2:A101").Interior.Color = vbGreen
Range("A1").Interior.Color = vbRed
Range("A1:CW101").Borders.LineStyle = xlContinuous
Range("B1:CW1").NumberFormatLocal = "0.0%"
Range("B2:CW101").NumberFormatLocal = "0.0_ "
Range("B2:CW101").Value = "=$A$1*(1+B$1)^$A2"

End Sub

20130815

金利の計算方法は素人なので間違っていたらごめんなさい。元金100万円、年利3.5%だと一年で150万円ちょっとという計算になります。

100マス表

100マス表

Sub masu100()
Dim i As Long
 
For i = 1 To 100
    Cells(1, i + 1).Value = i
    Cells(i + 1, 1).Value = i
Next
Range("A1").Value = "100マス"
Range("A1:CW1,A2:A101").Interior.Color = vbGreen
Range("A1:CW101").Borders.LineStyle = xlContinuous
Range("B2:CW101").Value = "=$A2*B$1"
 
End Sub

マクロを実行するとシートに以下のような100x100の表が作成される。
100マス

ポイント:
多重ループを使用せず実現している。表には値ではなくラベル(色つきの部分)の値を参照する計算式を埋め込んである。

Visual Basic関連のヘルプを見る

Excel 2010 では

ファイル -> ヘルプ -> MicroSoft Offcieのヘルプ でExcelのヘルプ が開く。

さらに検索 - 開発者用リファレンス Visual Basic関連のヘルプが参照できる
excel_6
+ 主にVisual Basic ランゲージリファレンスを見ながらコーディングすることになるが、内容が貧弱で自分がやりたいことを見つけるならGoogle先生に聞いたほうが早い

作成したVBAを人につかってもらう方法

Excel2010では

Visual Basic Editorを起動する

ファイル->ファイルのエクスポート Ctrl+E

ファイルはModule1.basという名前で出力される。
excel_7
ファイルの内容はVisual Basic Editorのスクリプトそのままで、テキストエディタで開くことができる

+たぶん編集もできると思われる

+少し手間はかかるがgitで管理することもできるんじゃないだろうか

人からもらったVBAを実行させる方法

Excel2010 で

新しいワークブックを開きます。
Visual Basic editorを開く ATL+F11
excel_1

ファイル->ファイルのインポート Ctrl+M
excel_2
Module1.bas

ファイルを読み込む *.frm, *.bas, *cls (たぶん*.bas形式でしょう)
excel_2
+ 「実行」「マクロ」からマクロを選択して実行ボタンを押せばマクロは実行される
excel_3
? 読みしただけでソースコードが表示されるものとおもったが「実行」「マクロ」からマクロを選択して「編集」を押さないとエディタに表示されない
excel_4
! ファイルを保存するときはマクロ付きで保存すること。
excel_5

Excel 2010 での [開発] タブをタブを有効にしてVBAを使い始める

Excel2010でVBAを使うには[開発] タブを有効にしなければなりません。
以下の順に操作します
[ファイル] タブの [オプション] を選択して [Excel のオプション] ダイアログ ボックスを表示します。
ダイアログ ボックスの左側にある [リボンのユーザー設定] をクリックします。
ダイアログ ボックスの左側にある [コマンドの選択] で、[基本的なコマンド] を選択します。
ダイアログ ボックスの右側にある [リボンのユーザー設定] で、[メイン タブ] を選択し、次に [開発] チェック ボックスをオンにします。
[OK] をクリックします。
Excel で [開発] タブが表示されたら、そのタブ上の [Visual Basic]、[マクロ]、[マクロのセキュリティ] の各ボタンの位置を確認してください。

excel_8

ショートカット:Excel 2010でをAtl+F11でVisual Basic editorが起動する

URLのリストから簡単なスクレイピングをする

URLのリストからWebページにアクセスし内容をページに張り付けていくスクリプトです。

Sub Main()
' チームのロースターを取得する
    i = 0
    Do While i < 16
            Call GetWeb(teams(i), afcurl(i))
        i = i + 1
    Loop
End Sub

Sub GetWeb(ByVal team As String, ByVal teamurl As String)
    Worksheets(team).Activate
    Range("$A$1") = team
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;" & teamurl, Destination:=Range("$A$2"))
        .Name = "roster"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = True
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

コメント:
勢いで作りましたが、これでは汎用性がないので今のところ自分の作業用です。よくスクレイピングを依頼されることがあるりますが、VBAで作ればexcelごと渡してやってもらえます。

固定的な名前のシートをまとめて追加する

32のNFLチームの名前のついたシートを追加する。名前は配列に定義しておき。左から右へ並ぶように追加される。

Sub Main()
Dim i As Integer
Dim teams As Variant

teams = Array( _
"BUF", "MIA", "NE ", "NYJ", _
"BAL", "CIN", "CLE", "PIT", _
"HOU", "IND", "JAX", "TEN", _
"DEN", "KC ", "OAK", "SD ", _
"DAL", "NY ", "PHI", "WAS", _
"CHI", "DET", "GB ", "MIN", _
"ATL", "CAR", "NO ", "TB ", _
"ARI", "SF ", "SEA", "STL")

' チーム数分のシートを作成する
i = 0
Do While i &lt; 32
Call AddSheet(teams(i))
i = i + 1
Loop
End Sub