以下全部自分用につくりました。
頭ではわかってるのになんか出てこない。
これよくあるのでまとめました。
設定編
Excel高速化のためにやるやつ
お決まりの高速化に使うやつ。
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = Excel.XlCalculation.xlCalculationManual
End With
もろもろオフにして
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = Excel.XlCalculation.xlCalculationAutomatic
End With
オンに戻す。
個人的には最後にこれはつけます。
なぜかというと、全部オフ→オンに行く前にエラー→だるい
となるので最後がおすすめです。(というか配列使えばなくてもいい)
確認メッセージを消す&シートの追加と削除
シートやブックを消すときに出る確認ポップ。
あれのせいで作業が止まってしまうことありますよね。
Application.DisplayAlertsで制御できます。
Application.DisplayAlerts = False
Worksheets.Add.Name = "test"
ActiveSheet.Delete
Application.DisplayAlerts = True
ユーザー定義型変数の宣言
何気便利なユーザー定義型。
Type ex
namae As String
nenrei As Long
End Type
Sub test()
Dim a() As ex
c(1).namae = "azeti"
c(1).nenrei = 30
End Sub
連想配列
リンゴは赤いみたいな感じの連想配列。
便利です。
Dim dic as Object
Set dic = CreateObject("Scripting.Dictionary")
Set dic = Nothing
配列の大きさをかえる
どれくらいの大きさが必要かわからないときに便利。
Dim a
Dim i as Long
ReDim Preserve a(i)
エラー時の処理
On Error Resume Next
On Error GoTo 0
インプットボックス
Dim buf
buf = InputBox("入力して")
MsgBox buf
buf = InputBox(Prompt:="入力してみて", HelpFile:="", Context:=2)
MsgBox buf
| 値 | 型 |
|---|---|
| 0 | 数式 |
| 1 | 数値 |
| 2 | 文字 |
| 4 | True/False |
| 8 | Rangeオブジェクト |
| 16 | エラー値 |
| 64 | 数値配列 |
フォルダパスを取得
Dim folderPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
folderPath = .SelectedItems(1)
End If
End With
ワードを開く
Dim wdApp As Object
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
ユーザー定義型は定義されていませんとエラーが出た場合は、ツール→参照設定から「Microsoft Word ○○.〇 Object Library」にチェックを入れましょう。
〇はバージョン名です。
Microsoft XX.X Object Libraryと勘違いしがちですが、Wordと入ってるやつにチェックしてください。
クラスモジュールの参照渡し
callをつけて渡す。
Dim cls as Class1
Set cls = new Class1
Dim 変数
変数 = "test"
Call cls.test(変数)
セル操作
Find
Sub test()
Dim Rng As Range
Set Rng = Cells.Find(What:="test")
If Not Rng Is Nothing Then
msgbox Rng
End If
End Sub
Object.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection,
MatchCase, MatchByte, SearchFormat)
| メソッド | 対象 |
|---|---|
| Object | Rangeオブジェクト |
| What | 何を検索する?”対象” |
| After | 検索位置、Range、省略OK |
| LookIn | 検索の対象 数式(xlFormulas)、値(xlValues)、コメント(xlComments) 省略OK |
| LookAt | 完全に同一なセルだけ(xlWhole)、一部一致OK(xlPart) 省略OK |
| SearchOrder | 検索方向。列方向に検索する(xlByColumns)、行方向に検索する(xlByRows)省略OK |
| SearchDirection | 前方に検索(xlNext:既定値)、後方に検索(xlPrevious)省略OK |
| MatchCase | 大文字と小文字を区別する(True)、区別しない(False) 省略OK |
| MatchByte | 半角と全角を区別する(True)、区別しない(False)省略OK |
| SearchFormat | 書式を検索する (True)、検索しない(False) 省略OK |
削除
Range("A1").ClearContents
| メソッド | 対象 |
| Clear | 全て(削除) |
| ClearComments | コメント |
| ClearContents | 値と数式(値けし) |
| ClearFormats | 書式 (色や罫線、条件付き書式など) |
| ClearNotes | コメント |
| ClearOutline | アウトライン |
| ClearHyperlinks | ハイパーリンク |
書式変更
Range.NumberFormatLocal = "@" '文字列
Range.NumberFormatLocal = "yyyy/mm/dd" '日付、月、日
色変更
Range("A1").Interior.Color = vbRed '赤
| vbBlack | 黒 |
| vbRed | 赤 |
| vbGreen | 緑 |
| vbYellow | 黄 |
| vbBlue | 青 |
| vbWhite | 白 |
罫線、網掛け
Sheets("Sheet1").Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
最終行、最終列を取得
Dim Maxcol
Dim Maxrow
'最終列
Maxcol = Cells(1, Columns.Count).End(xlToLeft).Column
'最終行
Maxrow = Cells(Rows.Count, 1).End(xlUp).Row
コピペ
Sheets("Sheet1").Range("A1").Copy Destination:=Sheets("Sheet2").Range("A1")
計算編
乱数
Randomize
Range("A1") = Rnd
Randomizeが初期化。
Rndで乱数です。
※0<Rnd<1です。
Range("A1") = Int(6 * Rnd + 1)
Intを使って整数値の範囲内で乱数を起こすことも可能です。
演算子一覧
さすがに忘れることはないけど一応。
比較系
| 記号 | 意味 |
|---|---|
| < | 小さい |
| <= | 以下 |
| > | 大きい |
| >= | 以上 |
| = | 等しい |
| <> | 等しくない |
計算系
| 記号 | 意味 |
|---|---|
| + | 加算 |
| − | 減算 |
| * | 乗算 |
| / | 定数の除算 |
| \ | 整数の除算 |
| Mod | 除算の余り |
論理系
| 記号 | 意味 |
|---|---|
| And | 論理積 |
| Or | 論理和 |
| Not | 否定 |
○○を含む
関数でやるとき、”*含む*”みたいに*で挟むと含むという意味になりますよね。(ちなみに””は空白)
イメージ的には*は何でもいいという感じです。
なので”*含む”とやると、左側がなんでもいいとなります。
セルで指定するときは、”*”&A1&”*”となります。
これをVBAでやるときに便利なのがLikeです。
If Range("A1") Like "azechi" Then
End If
おわり
随時更新していきます。
[temp id=2]

コメント