ソフト備忘録 – 雑多にまとめたもの

  • 表計算ソフトとSQLとの違い
    式をセルに埋め込んでおく事によって、データが変わっても、勝手に再計算してくれる。
    これは、データ構造があまり複雑でない場合には、非常に有効に機能する。→これは表計算作った人も言ってた

 

Excel VBA

  • ワークシート名を変数にする場合、(””)の””はいらない。エラーになる。これで2時間くらい詰まった。
    Dim SheetName As String
    × Worksheets(“SheetName”).Activate
    ○ Worksheets(SheetName).Activate
  • テキストボックスに入力された数値の取得方法
    ユーザーフォームのテキストボックスに入力された数値を取得する方法は「.Text」と「.Value」の2通りがある。前者は文字列での取得で、後者はVariant型での取得。後者は数値での取得だと思っていたので数値変数にそのまま代入したが怒られた。テキストボックスに入力された数値を取得する場合はまず文字列で取得して数値型にキャストする必要がある。
    Dim threshold As Integer
    × threshold = UserForm2.TextBox2.Value
    ○ threshold = Val(UserForm2.TextBox2.Text)
  • RangeとCellsの使い分け
    Range(“A1”)とCells(1, 1)は同じ意味である。
    どっちを使うか議論になるが、特に理由のない限り、自分はCellsで統一することにする。
    まず、Rangeは変数制御ができない。Range(“A” & i)のように列方向の変数制御は可能だが、行方向には使えないし動作も遅いらしく、わざわざRangeを使う理由もない。
    範囲指定もRangeの中にCellsを入れる方式で書く(多少コードが長くなるが統一したい)。
    より踏み込んだ使い分けの解説は以下が詳しい。
    VBA入門者の”どっち?” Cells or Range-Rangeでしかできないこと
    VBA入門者の”どっち?” Cells or Range-Cellsでしかできないこと
  • 実行中マクロの停止:Ctrl+BREAK