ショートカット
[Ctrl]キー+[Home]キーセル A1 に移動する。
列(/行)の固定
数値データと認識すると、セル内でデータを右詰めで表示します。F1 列, 行
F$1 行固定
$F1 列固定
セルの大きさ
マウスポインタの形がに変わったときにダブルクリックすると、境界線の左側の列幅が、その列内の一番長いデータに合わせて調整されます。保護
非表示を他人に見せたくない「シート構成とウィンドウの保護」画面で、[シート構成]をチェック
VBAの書き方
ファイル>オプション>リボンのユーザ設定>開発にテェック.VBA
開発>VisualBasicでコードを書く画面になる.
sheet1をダブルクリックしたあとに書く.
実行で実行できる.
図形を挿入したあと, 右クリック/マクロでマクロボタンが作れる.
プロシージャ
Private Static Sub プロシージャ名 (変数 As データ型)End Sub
Privateを書くと, 他のプロシージャから利用できなくなる.
Staticを書くと, 変数の値をプロシージャ実行後も保持することができる.
Integer 2バイト -32768~32767
Long 4バイト -2147483648~2147483647
Single 4バイト
Double 8バイト
String 文字列
Byte 1バイト 0~255
Bool 2バイト True False
Date 日付
Currency 通貨
Variant 日付/時間
セル
Range("A1")は[A1]のように省略してかける.相対参照
Selection.Offset(-1,0).Value="上"
if文
If 条件 Then|
ElseIf 条件 Then
|
Else
|
End If
エクセルの条件は他言語で==のところを=だけで表す
while
Do While 条件|
Loop
case
select case ncase 1: call syori1
case 2: call syori2
case else: call syori3
end select
For i=1 To 10 Step 1
|
Next i
cell
普通計算する時は[A1].Valueではなく, Cell(i,j)で2次元配列のように扱う.フォント
Sub sample6_15()Range("A1")="Eigo!"
With Range("A1").Font
'フォント名
.Name = "Times New Roman"
'フォントスタイル
.FontStyle = "標準"
'サイズ
.Size = 12
'フォント色
.Color = vbRed
'上付き
.Superscript = False
'下付き
.Subscript = False
'太字
.Bold=False
'斜体
.Italic=False
End With
End Sub
サブプロシージャ
サブプロシージャを呼ぶときはCallを使う.サブプロシージャは参照渡しでpythonと同じ.
配列
配列Dim Hairetu(4) As String
Dim Hairetu2(2 To 4) As Integer
コピー
Sub hoge()Range("A1:D5").Select
Selection.Copy
Range("F1").Select
ActiveSheet.Paste
End Sub
繰り返しの終了 アクティブが空白のときに終了する
Do' 繰り返しの終了 アクティブが空白のときに終了する
If ActiveCell.Value = "" Then
Exit Do
もしくは, Do While Not IsEmpty(ActiveCell)
|
Loop
ユーザインターフェース
メッセージボックス
vbOkOnlyvbOkcancel
vbAbortRecentryIgnore
vbYesNoCancel
vbRecentryCancel
Sub hoge()
Dim Msg As Integer
Msg = MsgBox("60点以上ですか?", vbYesNo)
If Msg = vbYes Then
MsgBox "合格です"
Else
MsgBox "不合格です"
End If
End Sub
ユーザフォームの手順
VBEの画面で, 挿入>ユーザフォーム左下のプロパディウィンドウのcaptionをクリックして, 題名を入力できる
ツールボックスでコントロールを配置できる.
配置した後に, プロパディウィンドウのcaptionで記入できる. fontで大きさや字体を変更できる.
配置したボタンをダブルクリックすると, プロシージャ記述画面になる.
テキストボックス
range("A2").value=textbox1.textrange("B2").value=textbox2.text
コマンドボタン
private sub commandbutton1_clic()syri1
end sub
pribate sub commandbutton2_clic()
unload me 'キャンセル
end sub
オプションボタン
if optionbutton.value= true thenrange("C2").value="男性"
end if
if optinbutton.value=true then
range("C2").value="女性"
end if
コンボボックス
コンボボックスを配置した後, ダブルクリックしてプロシージャ画面を開く.ウィンドウ右上のメニューボックスの下三角ボタンをクリックして「Initialize」を選択する.
private sub userform_initializeというプロシージャが表示される.
pribate sub userform_initialize()
combobox1.additem"法学部"
combobox2.additem"理学部"
combobox3.additem"工学部"
チェックボックス
オプションボタンと変わらない.if checkbox1.value=true then
range("A1").value="入門"
end if
if checkbox2.value=true then
range("B1").value="上級"
end if
if checkbox3.value=true then
range("C1").value=true then
end if
スピンボタン
押すと1増える.cell(1,1+spinbutton.value)
えとと星座
'えとと星座の表示ボタンのコード
Private Sub CommandButton1_Click()
Dim N As Integer, T As Integer
Dim H As Integer, Y As Integer
'Array関数を使って配列Etoに12のえとを入れる
Eto = Array("申", "酉", "戌", "亥", "子", "丑", "寅", _
"卯", "辰", "巳", "午", "未")
'Array関数を使って配列Seizaに12の星座名を入れる
Seiza = Array("山羊", "水瓶", "魚", "牡羊", "牡牛", "双子", _
"蟹", "獅子", "乙女", "天秤", "蠍", "射手", "山羊")
'Array関数を使って配列Dに各月の星座の最終日を入れる
D = Array(19, 18, 20, 19, 20, 21, 22, 22, 22, 23, 22, 21, 19)
'年N、月T、日Hをテキストボックスに入力する
N = Val(TextBox1.Text)
T = Val(TextBox2.Text)
H = Val(TextBox3.Text)
'配列SeizaのインデックスとあわせるためTから1を引く
T = T - 1
'えとを求め、テキストボックスに入れ、表示する
Y = N Mod 12
TextBox4.Text = Eto(Y)
'星座を求め、テキストボックスに入れ、表示する
If H <= D(T) Then
TextBox5.Text = Seiza(T) '最終日前の星座を求める
Else
TextBox5.Text = Seiza(T + 1) '最終日後の星座を求める
End If
End Sub
'終了ボタンのコード
Private Sub CommandButton2_Click()
Unload Me
End Sub
'ユーザーフォームの表示
Private Sub えとと星座_Click()
UserForm1.Show
End Sub
Private Sub TextBox2_Change()
End Sub
テキストボックス自体に代入できる.
ファイル操作
Sub hoge()Workbooks.Open Filename:="/Users/murakami/Documents/hoge.xlsm"
With Worksheets("Sheet1")
.Range("A1").Value = ActiveWorkbook.Name
.Range("A2").Value = ActiveWorkbook.Path
'パスを含めたファイル名の取得 .Range("A3").Value = ActiveWorkbook.FullName
End With
End Sub
ワークシート追加
worksheets.addactivesheet.name="hoge"
新しいファイル作成
workbooks.addactiveworkbook.saveas fileneme:="hoge"
削除やコピーの際, ディスプレイアラートを表示させない.
application.displayalerts = falseコピー
application.displayalerts =faleseworkbooks.open filename:="hoge/hoge.xlsm"
worksheets("sheet1").select
range("B1048576").end(xlUp).active
range("A:"& selection.address).select
selection.copy
workbooks.("hoge2.xlsm").active
worksheets("sheet1").active
range("A1").select
activesheet.paste
workbooks("hoge.xlsm").close
最終位置
ctrl+矢印で連続したデータの最終位置を選択することができるEnd(xlDown)
End(xlToRight)
End(xlUp)
End(xlToLeft)
論理演算子
andor
not
inputbox
my_name = inputbox"名前を入力してください"行の参照
rows '全ての行rows(3) '3行め
rows("3:6") '3~6行め
range("3:3") '3行め
range("3:6") '3~6行め
range("4:4,7:7") '4行めと7行め
列の参照
columns '全ての列columuns(3) 'c列
columns("C") 'c列
columns("C:F") 'C~F列
range("C:C") 'C列
range("B:C,E:F") 'B~C列, E~F列
現在のオブジェクトの参照
activecell.value=123selection.value="マクロ"
range("A3").currentregion.select 'あるセルを含む連続したセル範囲
activesheet.usedrange.select 'アクティブシートの使用されているセル範囲を選択
range("B3).entirerow.select 'セルB3を含む3行め全体を選択
range("B3").entirecolumn.select 'セルB3を含む3列め全体を選択
終端セルの参照
range("A5").end(xltoright).activexlup '上
xldown '下
xltoleft '左
xltoright '右
表の最終行をアクティブにする
cells(rows.count,1).end(xlup).active 'A行の最終行をアクティブにする.rows.countは最終行を示す. 最終行はエクセルのバージョンによって違う
cells(rows.count,1).end(xlup).offset(1,0).value="次" '表の最終行の次の列にデータを追加
セルのコピー
range("A1:C5").copy range("D1")列幅の自動調整
columns("A:C").autofitセルの挿入
range("A2:C2").insert xldown 'セル範囲A2:C2のした方向にセルを挿入rows(5).insert '5行めに行を挿入
セル, 行, 列の削除
range("A2:C2").delete xlup 'セル範囲A2:C2を削除して上に詰める.左 xltoleft
rows(4).delete '4行めを削除して上に詰める
文字列の分割
A1にA,田中,3000/333と記入してある.range("A1").texttocolmns range("B1"), comma:=true
B1,C1,D1にそれぞれA, 田中, 3000/333が代入される.
comma:= true
semicolon:=true
space:=true
tab:=true
セルをクリア
range("C2:C4").clearcontentsセルの値を表示
msgbox range("C5").textmsbox range("C5").value
数式の入力
range("D2").formula = "=sum(b2:c2)"文字列の一部を取り出す
range("B2").value = left(range("A2"),4) 'セルBにA2の文字を左から4つ分取り出す.range("D2").value = right(range("A2"),3) 'D2にA2の文字を右から3文字分取り出す.
range("E2").value = mid(range("A2"),5,3) 'E2にA2の5文字めから3文字分取り出す.
不要な空白削除
range("B2").value=trim(range("B1").value) '両端の空白削除range("B3").value = ltrim(range("B1").value) '左の空白削除
range("B4").value = rtirm(range("B1").value) '右の空白削除
range("B5").value = replace(range("B1").value," ","") '文中の空白削除
文字列を置き換える
range("B1").value = replace(range("A1").value, "文字1", "文字2")文字列でも構わない
range("B1").value = replace(range("A1").value, " ", vbCrLf) '空白を改行に置き換える.
セルを検索する
cells.find("田中").select '田中というセルを検索する.ワークシートを指定
worksheets(3).select '左から3番目のシートを選択worksheets("シート名").active 'シート名をアクティブにする.
シートの追加
workdheets.add '左にシートを追加するworksheets.add before:= worksheets("sheet1"),count:=2 '左に2まい追加
シートのコピー
worksheets("sheet1").copy after:=worksheets("sheet3") 'sheet3の右に1のコピーを追加する.シートの移動
worksheets("sheet1").move before:=worksheets("sheet3")シートに名前をつける.
dim i as longfor i=1 to worksheets.count
worksheet(i).name=i & "月"
next i
ブックを開く
If Dir("C:¥TEST¥test.xlsx")="" thenmsgbox "そのブックはありません."
else
workbook.open filename:="C:¥TEST¥test.xlsx"
end if
ブックの保存先を調べる.
range("A1").value =workbook("test.xlsx").path 'パス取得range("A2").value = activeworkbook.fullname 'パスと名前取得
カレントディレクトリを調べる
range("A1").value = curdirブックの保存
activeworkbook.saveas filename:="C:¥TEST¥test.xlsx",_fielformat := xlOpenXLWorkbookMacroEnabled
xlOpenXMLWorkbook 'excelブック
xlOpenXLWorkbookMacroEnabled 'excelマクロ有効ブック
ブックを閉じる
ActiveWorkbook.close TrueActive.Workbook.close savechanges:=true, Filename:="C:¥TEST¥test"
全てのワークブックを閉じる.
Dim i as workbookfor each i in workbooks
i.save
next
workbooks.close
クイックアクセスツールバーへの登録
ショートカットも登録できる
