Enterキーを押したときに移動するセルの方向(上下左右)を変更するトグルマクロ
通常、Enterキーを押したときに移動するセルの方向は「下」です。これを「右/上/左」に変更するには「Excelのオプション」を開いて「詳細設定」から変更することが可能ですが、やや面倒くさいです。ここでは、実行するたびに移動するセルの方向を変更するマクロを作ります。
下→右→上→左→下……と切り替える場合
Sub SetMARD() ' ★★ Enterを押したら移動する方向を変更 ★★ Select Case Application.MoveAfterReturnDirection Case xlDown Application.MoveAfterReturnDirection = xlToRight MsgBox "下→右に切り替えました。", vbOKOnly + vbInformation Case xlToRight Application.MoveAfterReturnDirection = xlUp MsgBox "右→上に切り替えました。", vbOKOnly + vbInformation Case xlUp Application.MoveAfterReturnDirection = xlToLeft MsgBox "上→左に切り替えました。", vbOKOnly + vbInformation Case xlToLeft Application.MoveAfterReturnDirection = xlDown MsgBox "左→下に切り替えました。", vbOKOnly + vbInformation End Select End Sub
- 「Enterキーを押したときに移動するセルの方向」は Application.MoveAfterReturnDirection で取得および設定が可能
- 上=xlUp
- 下=xlDown
- 左=xlToLeft
- 右=xlToRight
このコードでは、現状の MoveAfterReturnDirection を取得し、その値にしたがって処理を分けたいので、Select Caseを使っています。実行後、どのように方向が変わったのかダイアログを出しています。
下→右→下……と切り替える場合
ほとんど同じです。万が一現状が上や左になっていた場合に備え、その場合は下になるようにコードを変更しました。
Sub SetMARD2() ' ★★ Enterを押したら移動する方向を変更 ★★ Select Case Application.MoveAfterReturnDirection Case xlDown Application.MoveAfterReturnDirection = xlToRight MsgBox "下→右に切り替えました。", vbOKOnly + vbInformation Case xlToRight Application.MoveAfterReturnDirection = xlDown MsgBox "右→下に切り替えました。", vbOKOnly + vbInformation Case Else Application.MoveAfterReturnDirection = xlDown MsgBox "上/左→下に切り替えました。", vbOKOnly + vbInformation End Select End Sub
以上。
InputBox関数を数値を入力するまで繰り返す処理
InputBox関数で数値だけを入力させたい場合の処理です。
Do StrIB = InputBox("開始数字?") Loop Until IsNumeric(StrIB) = True
- Do~Loopを後判定で実行しています
- 後判定は最低1回は処理を実行します(この場合はInputBox関数)
- Untilは条件が成立するまで。Whileにすると条件が成立している間ずっと、になります
- IsNumeric関数は"数値に見えるもの"は全てTrueを返します
エクセルのコマンドボタン/自作VBAマクロの解説
基本的なこと
リボン/クイックアクセスツールバーのボタン
- 「Excelのオプション」を一発で開くボタン
- 「罫線」を手軽に引く/消すボタン
- いろいろな「貼り付け」ボタン
- 「印刷」に関連したボタン
エクセルVBA
基本
- VBAマクロ作成を気軽に始めてみよう! ~Excel編~
- VBAマクロをリボンやクィックアクセスツールバーのボタンに割り当てる
- (VBScript) XLSTARTフォルダを開く (無い場合は作成して開く)
- (PowerShell) XLSTARTフォルダを開く、フォルダが無い場合は作成して開く
ループ処理
分岐処理
セル
シート
ブック
コマンド
セルのコメント
- 選択範囲にコメントを一括で追加する
- コメントのみ貼り付けるコマンドをを作成する
- セルのコメントを一括で表示・非表示にする
- 選択範囲のコメント位置をリセットする
- コメント枠の自動サイズ調整を有効にする
- セルのコメントを編集する(1) InputBox関数編-1
- セルのコメントを編集する(2) InputBox関数編-2 複数行対応
- セルのコメントを編集する(3) ユーザーフォーム編-1
シェイプ
セルのコメントを編集する(3) ユーザーフォーム編-1
前回までは InputBox関数を使ってセルのコメント編集を行いました。複数行に対応はしましたが、その方法は区切り文字を使うというちょっとまどろっこしいものでした。もう少し編集画面をなんとか出来ないかと思ったのがこの記事を作るきっかけです。
入力ダイアログにユーザーフォームを使う
ユーザーフォームの作り込み
早速作っていきます。Visual Basic Editorのプロジェクトウィンドウ、個人用マクロブック(PERSONAL.XLSB)で右クリックから挿入>ユーザーフォームを選びます。
UserForm1が作られました。
ツールボックスを表示させます。
テキストボックスを配置します。
ボタンを配置します。
オブジェクト名を変更する
プロパティウィンドウでオブジェクト名を分かりやすい名前に変更します。オブジェクト名はコード入力でも使います。ここでは以下のようにしました。
- ユーザーフォーム:UF_EditComment
- テキストボックス:TB_EditComment
- コマンドボタン:Btn_EditCommentOK
オブジェクトのプロパティを設定する
オブジェクトのプロパティはある程度はプロパティウィンドウでも設定できますし、コード記述で設定することも可能です。ここでは以下のようプロパティウィンドウで設定しました。
ユーザーフォーム
プロパティ | 内容 |
---|---|
(オブジェクト名) | UF_EditComment |
Caption | コメント編集 |
- Caption : 表示される名称
テキストボックス
プロパティ | 内容 |
---|---|
(オブジェクト名) | TB_EditComment |
MultiLine | True |
WordWrap | False |
EnterKeyBehavior | True |
ScrollBars | fmScrollBarsBoth |
IMEMode | fmIMEModeHiragana |
TabIndex | 0 |
- MultiLine : テキストボックスを複数行対応させるか (True/False)
- WordWrap : テキストボックスの右端で自動改行させるか (True/False)
- EnterKeyBehavior : Enterキーを押したときにテキストボックス内で改行するか (True/False)
- ScrollBars : fmScrollBarsBoth=縦横のスクロールバーを有効にする
- IMEMode : fmIMEModeHiragana=テキストボックスで自動的にIMEをひらがなモードにする
- TabIndex : TABキーを押したときにフォーカスが移動する順番 (0, 1, 2, ……)
コマンドボタン
プロパティ | 内容 |
---|---|
(オブジェクト名) | Btn_EditCommentOK |
Caption | OK |
TabIndex | 1 |
標準モジュールのコード
まず標準モジュールにコードを書きます。(2017.10.31追記あり)
Sub EditComment() ' ** ユーザーフォーム版コメント編集 ** If TypeName(ActiveCell.Comment) = "Comment" Then ' ** コメントがある場合 Dim BoolCommentVisible As Boolean ' ** 既存コメントの表示状態を記憶 BoolCommentVisible = ActiveCell.Comment.Visible ' ** 既存コメントが非表示なら表示させる If BoolCommentVisible = False Then ActiveCell.Comment.Visible = True End If ' ** ユーザーフォームをモーダルで表示 ** UF_EditComment.Show (vbModal) ' ** 既存コメントの状態を回復 If BoolCommentVisible = False Then ActiveCell.Comment.Visible = False End If Else MsgBox "コメントがありません。", vbOKOnly + vbExclamation End If End Sub
ここでは対象セルのコメントの有無を判定して、あればユーザーフォーム:UF_EditCommentをモーダルで表示するよう指示しています。
(2017.10.31追記)また、コメントが表示状態でないとエラーになるため、コメントが非表示状態の場合はユーザーフォームを表示させる前にコメントを表示状態にしています。フォームが閉じられるとコメントを非表示状態に戻します。(追記ここまで)
- Modal (モーダル) : フォーカスをユーザーフォームのみに当て、エクセルのメイン画面に当てない
- Modeless (モードレス) : フォーカスをユーザーフォームとエクセルのメイン画面の両方に当てる
例としては、セルの書式設定ウィンドウがモーダル、検索/置換ウィンドウがモードレスです。
起動テスト
マクロ:EditCommentの起動テストをしてみます。
セルにコメントがある場合、このようにユーザーフォームが表示されます。
テキストボックスに文字を入力して挙動を確認して下さい。
- テキストボックス内で改行できるか?
- EnterでフォーカスがOKに飛んでしまわないか?
- テキストボックスの右端で自動改行されてしまわないか?
- 横スクロールバーが出てくるか?
- 縦スクロールバーが出てくるか?
また、TABキーの挙動も確認して下さい。
- TABを押すたびにテキストボックスとOKボタンにフォーカスが移動するか?
なお、この状態でOKボタンを押しても何の反応もありません。これはユーザーフォームのコードを入力していないからです。右上の×ボタンでフォームを閉じることだけが出来ます。フォームを閉じて次に進みます。
ユーザーフォーム(UF_EditComment)のコード
ユーザーフォームのコードウィンドウを表示させます。
ユーザーフォームの初期化
ユーザーフォームの初期化は決まり文句です。ユーザーフォームを開いたときに処理しておきたい内容を記します。
Private Sub UserForm_Initialize() End Sub
オブジェクトのプロパティをプロパティウィンドウで設定しなかった場合はユーザーフォームの初期化の中でプロパティを記述する必要があります。ここではプロパティウィンドウで設定済みなのでコードはありません。
今回は必要な処理は下記になります。
- 現在のセルを記憶させる
- 既存のコメントをテキストボックスに表示する
Private StrActiveCell As String ' ** ユーザーフォームの初期化 ' ** ユーザーフォームの初期化 ** Private Sub UserForm_Initialize() ' ** 現在のセルを記憶 ** StrActiveCell = ActiveCell.Address ' ** 既存のコメントをテキストボックスに表示 ** TB_EditComment.Text = ActiveCell.Comment.Text End Sub
OKボタンを押したときの処理
次に、OKボタンを押したときの処理を書きます。
Private StrComment As String Private Sub Btn_EditCommentOK_Click() ' ** OKボタンを押したときの挙動 ' ** テキストボックスの内容を変数に代入 StrComment = TB_EditComment.Text ' ** 編集内容が空白ならキャンセルとみなしてフォームを閉じる If StrComment = "" Then Unload UF_EditComment Exit Sub End If ' **セルのコメント内容を上書きする With Range(StrActiveCell) With .Comment .Shape.Select True .Text Text:=StrComment End With .Activate End With ' **フォームを閉じる Unload UF_EditComment End Sub
完成したマクロの動作を確認する
完成しました。
(PowerShell) XLSTARTフォルダを開く、フォルダが無い場合は作成して開く
PowerShellも覚えたいなと思い、少しずつ調べています。PS5対応のリファレンス本とかあればいいんですが……。
「XLSTARTフォルダを開く」をPowerShellで作ってみました
さて、以前VBScriptで作った、
dz11.hatenadiary.jp
をPowerShellで作ってみました。
#XLSTARTフォルダの有無を確認して、あれば開く、なければ作って開く。 $UserProfile = $env:UserProfile If(Test-Path $UserProfile\AppData\Roaming\Microsoft\Excel\XLSTART){ #フォルダが存在する場合 Invoke-Item $UserProfile\AppData\Roaming\Microsoft\Excel\XLSTART }else{ #フォルダが存在しない場合 New-Item $UserProfile\AppData\Roaming\Microsoft\Excel\XLSTART -ItemType Directory Invoke-Item $UserProfile\AppData\Roaming\Microsoft\Excel\XLSTART }
上記のコードをWindows PowerShell ISEにコピー&ペーストして任意のファイル名でps1ファイルを作成して下さい。
スクリプトの実行セキュリティポリシーの変更が必要
PowerShellではセキュリティの関係から初期状態ではスクリプトが動作しません。したがって、実行ポリシーの変更が必要です。
Set-ExecutionPolicy RemoteSigned
詳細はこちらを参照して下さい。
www.atmarkit.co.jp
スクリプトファイルを開く
デスクトップ等にあるスクリプトファイルはダブルクリックしても起動できません。PowerShellスクリプトを開くには、
このようにします。
VBScript版に比べるとフォルダが開く速さが格段に違いますね。
以上。
セルのコメントを編集する(2) InputBox関数編-2 複数行対応
InputBox関数によるセルのコメント編集マクロ、前回は1行コメントの編集に対応したものを作成しました。今回はこれを元に複数行に対応させてみようと思います。
- 前回までのコード
- 単純に vbCrLf や Chr(13) & Chr(10) とはいかない
- 文字列を分割するSplit関数
- 既存のコメントが複数行だった場合の処理
- 完成コード
- 次回:ユーザーフォームを使ったセルのコメント編集
前回までのコード
Sub KomeHen() If TypeName(ActiveCell.Comment) = "Comment" Then ' ** セルにコメントがあれば処理する ** Dim StrHen As String StrHen = InputBox(Prompt:="※改行は出来ません。", _ Title:="コメント編集(一行版)", _ Default:=ActiveCell.Comment.Text) ' ** キャンセル処理 If StrPtr(StrHen) = 0 Then Exit Sub End If ' ** コメント内容を変更する処理 ** With ActiveCell With .Comment .Shape.Select True .Text Text:=StrHen End With .Activate End With Exit Sub Else ' ** セルにコメントがなかったら終了する ** MsgBox "コメントがありません。", vbOKOnly + vbExclamation Exit Sub End If End Sub
単純に vbCrLf や Chr(13) & Chr(10) とはいかない
改行と言えば vbCrLf や Chr(13) & Chr(10) などが思いつきますが、InputBoxにこれらを単純に入力しても改行にはなりません。
全然出来てませんね。入力したとおりのコメントになってしまいました。
文字列を分割するSplit関数
文字列を分割するのにはSplit関数があります。区切り文字を設定することで文字列を複数文字列に分割することが可能です。分割された文字列は1次元配列に入ります。
' ** Split Dim RTmp As Variant RTmp = Split(StrHen, ",")
返り値が1次元配列なのでVariant型とします。区切り文字を","として StrHen を分割し、1次元配列 RTmp に代入します。
StrHen = RTmp(0) For i = 1 To UBound(RTmp) StrHen = StrHen & vbCrLf & RTmp(i) Next i
StrHen を書き換えます。まず1行目を代入し、2行目以降は改行(vbCrLf)と文字列を追加していきます。このとき、最大分割数(=配列の最大数)が必要になりますので、UBound関数で最大値を求めます。
既存のコメントが複数行だった場合の処理
既存のコメントが複数行だった場合、InputBoxに代入される文字列は見た目は1行になったように見えます。
この状態で別の場所に改行を入れてみます。「1行目」「2行目」「3行目」の後ろに","を入れて改行します。
指定した箇所で改行されましたが、元々の改行が残っていました。
ワークシート関数 Clean を使う
InputBoxに既存のコメントを表示する際に、不要な改行を削除するため、ワークシート関数「CLEAN」を使用します。
Dim DefaultComment As String DefaultComment = WorksheetFunction.Clean(ActiveCell.Comment.Text) StrHen = InputBox(Prompt:="※改行したい位置に,を入力して下さい。", _ Title:="コメント編集(改良版)", _ Default:=DefaultComment)
「1行目」「2行目」「3行目」の後ろに","を入れて改行します。
意図したとおりに改行されました。
完成コード
Sub KomeHen2() If TypeName(ActiveCell.Comment) = "Comment" Then ' ** セルにコメントがあれば処理する ** Dim StrHen As String Dim DefaultComment As String DefaultComment = WorksheetFunction.Clean(ActiveCell.Comment.Text) StrHen = InputBox(Prompt:="※改行したい位置に,を入力して下さい。", _ Title:="コメント編集(改良版)", _ Default:=DefaultComment) ' ** 空白ならキャンセルとする If StrPtr(StrHen) = 0 Then Exit Sub End If ' ** Split Dim RTmp As Variant RTmp = Split(StrHen, ",") StrHen = RTmp(0) For i = 1 To UBound(RTmp) StrHen = StrHen & vbCrLf & RTmp(i) Next i ' ** コメント内容を変更する処理 ** With ActiveCell With .Comment .Shape.Select True .Text Text:=StrHen End With .Activate End With Exit Sub Else ' ** セルにコメントがなかったら終了する ** MsgBox "コメントがありません。", vbOKOnly + vbExclamation Exit Sub End If End Sub
セルのコメントを編集する(1) InputBox関数編-1
個人的に仕事で大量のコメントを追加しては日々編集しているんですが、こう大量にあるとエクセル標準のコメント編集機能ではちょっとまどろっこしいところがあります。何か入力ダイアログみたいなもので編集できると便利だなと思ったので今回はこれをやってみたいと思います。
入力ダイアログにInputBox関数を使う
まず最初に考えたのは文字列を入力できるInputBox関数です。まずは簡単にコードを組んでみます。
Sub KomeHen0() Dim StrHen As String ' ** 文字列を入力 ** StrHen = InputBox(Prompt:="文字を入力", Title:="コメント編集") ' ** コメント内容を変更する処理 ** With ActiveCell With .Comment .Shape.Select True .Text Text:=StrHen End With .Activate End With End Sub
コードの説明
With~End Withをネスト(入れ子構造)してますが、内容は簡単です。
ActiveCellに対し「.Comment.Shape.Select True」は、セルのコメントを選択状態にします。その上で「.Comment.Text Text:=StrHen」でコメントのテキストをStrHenにする」を実行します。最後に「ActiveCell.Activate」で選択状態をコメントからセルに戻します。
基本のコードが出来ました。
エラー処理を追加
現状のコードですと、コメントが設定されていないセルで実行するとエラーになりますので、エラー処理を加えます。
If TypeName(ActiveCell.Comment) = "Comment" Then ' ** セルにコメントがあれば処理する ** Else ' ** セルにコメントがなかったら終了する ** MsgBox "コメントがありません。", vbOKOnly + vbExclamation Exit Sub End If
コメントの有無で処理を変えます。
キャンセル処理
現状のコードでキャンセルを押すとエラーが発生します。
InputBox関数のキャンセル処理は定型的な書き方があります。私はこちらを参考にしました。
これを踏まえて
' ** キャンセル処理 If StrPtr(StrHen) = 0 Then Exit Sub End If
既に入力されているコメントをInputBoxに代入する
コメントをまるっきり書き換える場合は今のままで良いのですが、既に入力されているコメントを編集する場合、また同じような文字列を入力するのは面倒です。そこで既に入力されているコメントをInputBoxに代入しておきます。
StrHen = InputBox(Prompt:="文字を入力", _ Title:="コメント編集", _ Default:=ActiveCell.Comment.Text)
次回:複数行に対応させる
今回のコードですと一行のコメントにしか対応していません。次回は複数行に対応させてみようと思います。
今回の完成コード
Sub KomeHen() If TypeName(ActiveCell.Comment) = "Comment" Then ' ** セルにコメントがあれば処理する ** Dim StrHen As String StrHen = InputBox(Prompt:="※改行は出来ません。", _ Title:="コメント編集(一行版)", _ Default:=ActiveCell.Comment.Text) ' ** キャンセル処理 If StrPtr(StrHen) = 0 Then Exit Sub End If ' ** コメント内容を変更する処理 ** With ActiveCell With .Comment .Shape.Select True .Text Text:=StrHen End With .Activate End With Else ' ** セルにコメントがなかったら終了する ** MsgBox "コメントがありません。", vbOKOnly + vbExclamation Exit Sub End If End Sub
以上。
(リボン/クイックアクセス) 「セルの罫線」を手軽に引く/消すボタンを追加する
リボンやクイックアクセスツールバーに罫線を引いたり消したりするボタンを追加してエクセルを便利にしてみましょう。
はじめに
皆さんはエクセルで罫線を引くときにどのようにしていますか?
まさか、昔のエクセルみたいに範囲選択して右クリックの書式設定から罫線設定してたりしませんか?
それともホームタブのフォントグループ内にある罫線ボタンのプルダウンリストから設定しているでしょうか?
実はこのプルダウンリストにある項目、すべて単独のボタンとして設定することが可能です。ここでは、新しく罫線タブを作って各ボタンを追加する手順を説明します。
準備
まず入れ物を作ります。リボンのユーザー設定を開き、新しいタブを作成して名前を「罫線」に変更してください。
コマンドをリボンに追加する
この作業がちょっと面倒くさいのですが、これを設定してしまえば後が楽になりますので我慢してやってみましょう。
「コマンドの選択」は「すべてのコマンド」を選びます。目的の罫線コマンドを探し、「追加」ボタンでリボンに追加していきます。
追加するコマンド
1. 右罫線 ( BorderRight )
※上下左右の4つの罫線にはもう一つコマンドがあります。右罫線の場合「右罫線 (BorderRightNoToggle)」という風に「NoToggle」がついたものです。こちらは今回は使いませんので注意してください。
2. 横罫線(内側)( BorderInsideHorizontal )
3. 下罫線 ( BorderBottom )
4. 下太罫線 ( BorderThickBottom )
5. 下二重罫線 ( BorderDoubleBottom )
6. 外枠 ( BorderOutside )
7. 外枠太罫線 ( BorderThickOutside )
8. 格子 ( BordersAll )
9. 罫線 ( BordersGallery )
10. 罫線(内側)( BorderInside )
11. 罫線グリッドの作成 ( BordersDrawGrid )
12. 罫線の作成 ( BorderDrawLine )
13. 罫線の削除 ( BorderErase )
14. 左罫線 ( BorderLeft )
15. 斜め罫線(右下がり)( BorderDiagonalDown )
16. 斜め罫線(右上がり)( BorderDiagonalUp )
17. 縦罫線(内側)( BorderInsideVertical )
18. 上罫線 ( BorderTop )
19. 枠なし ( BorderNone )
ボタンを並び替える
ボタンを選択して右の上下ボタンで並び替えが出来ます。ここでは右図のように並べ替えました。
完成したリボンの罫線タブは以下の通りです。
なお、リボンのボタンはウィンドウ幅によって自動的に拡大縮小します。
便利な使い方
上下左右の罫線がトグルボタン(状態監視付)になっているので、押すたびに「罫線を引く」「罫線を削除」が出来る
B2:D4の範囲を選択した状態
「上罫線」「下罫線」「左罫線」「右罫線」を押すと、ボタンの背景が緑色に変化(押された状態を示す)します。
そのときの状態
次に「左罫線」「右罫線」を再度押して消します。(ボタンの緑背景が消えた)
そのときの状態
横罫線(内側)・縦罫線(内側)・斜め罫線(右下がり/右上がり)もトグルボタン(状態監視無し)になっている
B2:D4の範囲で上下左右の罫線が引かれている状態
「横罫線(内側)」「縦罫線(内側)」を押すと、縦横の罫線が引かれました。このときボタンの背景は変わっていません。内側罫線にはその機能がないからです。
次に「縦罫線(内側)」を押して消してみます。縦罫線だけ消えたのが確認できます。
「罫線の作成」「罫線グリッドの作成」「罫線の削除」ボタン
「罫線の作成」ボタンを押してから、任意範囲をドラッグ(囲う)と、その範囲を囲う外枠罫線が引くことが出来ます。
「罫線グリッドの作成」の場合は、内側の罫線も童子に引くことが出来ます。
「罫線の削除」では任意の範囲の罫線を全て消すことが出来ます。
クイックアクセスツールバーにボタンを追加する
気に入ったリボンのボタンはクイックアクセスツールバーに追加することが出来ます。
「格子」ボタンにカーソルを合わせて右クリックすると、一番上に「クイックアクセスツールバーに追加」の項目があります。
クイックアクセスツールバーに「格子」が追加されました。
同様に気に入ったボタンをクイックアクセスツールバーに追加しました。
以上。
(News) iOS用のGoogleのキーボードアプリGboardにGoogle日本語入力が搭載されました
Google Japan Blogによると、
本日より、iOS 向けキーボードアプリ Gboard が日本語に対応し、日本語をお使いの皆さんにも広くお使いいただけるようになりました。
Gboard は、直接、キーボードアプリから検索したり、検索結果を共有したり、さらに絵文字を入力したりすることができます。iOS ユーザーの皆さんから、多数のリクエストをいただいていた Google 日本語入力も、Gboard に搭載する形で、やっとお届けできるようになりました。お待たせしました!
とのことです。
早速試してみた
私も早速インストールしてみましたが、今のところ出来ることは
- キーボードレイアウトの変更(12キー/QWERTY/GODAN)
- テーマの変更(デフォルト2種/風景10種/自作背景可能)
- Google音声入力の使用
- サジェスト対応
- 絵文字対応
となっており、逆に今のところ出来ないことは
- ユーザー辞書のインポート・エクスポート
- iOSユーザー辞書を利用する
- iOS連絡先を利用する
など、ユーザー辞書絡みについては全く作られていない様子です。
今後のバージョンアップに期待ですね。
シートのインデックスと名前と数、表示と非表示の制御
目次
シートのインデックス番号と名前
現在のシートのインデックス番号と名前を表示する
ActiveSheet.Index 'シートのインデックス ActiveSheet.Name 'シートの名前
Msgboxに表示させます。
Sub GetSheetName() MsgBox "現在のシート" & vbCrLf & _ "Index = " & ActiveSheet.Index & vbCrLf & _ "Name = " & ActiveSheet.Name End Sub
結果表示
シートを移動させたらインデックス番号はどうなる?
Sheet2を左端に移動してみます。
Indexが1になりました。Indexはあくまでもシートの左からの順番だということが分かります。
ブックに含まれるすべてのシートのインデックスと名前を表示する
Sub GSN_All() Dim myShts As Object Dim SN As String SN = "Index:Name" & vbCrLf For Each myShts In ActiveWorkbook.Sheets SN = SN & myShts.Index & ":" & myShts.Name & vbCrLf Next myShts MsgBox SN End Sub
ブックに含まれるシートの数は?
Sub GetSheetCount() MsgBox Worksheets.Count End Sub
シートの非表示と再表示
シートの表示と非表示の制御はシートのVisibleプロパティで行います。
Sheets("Sheet1").Visible = True または False または xlVeryHidden
選択したシートを非表示にする
メニュー操作の場合
注意点:全てのシートを非表示にしようとすると次のエラーダイアログが出ます。
VBAの場合
Sub SheetInvisible() ActiveWindow.SelectedSheets.Visible = False End Sub
メニュー操作と同様、全てのシートを非表示にしようとするとエラーが出ます。エラー処理の追加が必要です。
非表示のシートを再表示する
メニュー操作の場合
VBAの場合
Sub AllSheetsVisible() Dim myShts As Object For Each myShts In ActiveWorkbook.Sheets myShts.Visible = True Next myShts End Sub
全てのシートをFor Each ~ Nextで一つずつ回してVisibleプロパティをTrueにしていきます。
セルの内容を調べるExcelVBAコード
一口にセルの内容と言ってもいくつか考えられます。「値」だったり「テキスト」だったり「数式」だったり、また書式によっても内容はいろいろ変わりますよね。ここではいくつかの例を挙げてそれぞれの「セルの内容」を確認します。
コード
Sub ShowCellData() Dim StrCellAddress, StrFmt, StrVal, StrVal2, StrTxt, StrFml With ActiveCell StrCellAddress = "セル : " & .Address StrFmt = "書式 : " & .DisplayFormat.NumberFormatLocal StrTxt = "Text : " & .Text StrVal = "Value : " & .Value StrVal2 = "Value2 : " & .Value2 StrFml = "Fomula: " & .Formula End With MsgBox StrCellAddress & vbCrLf & StrFmt & vbCrLf & _ StrTxt & vbCrLf & StrVal & vbCrLf & _ StrVal2 & vbCrLf & StrFml End Sub
Rangeオブジェクトのプロパティ | 内容 |
---|---|
.Text | テキスト |
.Value | 値 |
.Value2 | 値2 |
.Formula | 数式 |
数値(1)
C4セルに「123」と数値を入力しました。数式バーも「123」になっています。書式は標準でこれは数値です。この場合はどのプロパティでも「123」になります。
D4セルに「=C4*2」と数式を入力しました。計算されてセルは「246」と表示されています。数式バーは「=C4*2」です。書式は標準でこれは数値です。数式以外のプロパティは「246」になります。
数値(2):分数
C8セルに「0.5」と数値を入力しました。数式バーも「0.5」になっています。書式は標準でこれは数値です。この場合はどのプロパティでも「0.5」になります。
D8セルに「=C8」と数式を入力し、書式を「# ?/?」(分数)に設定しました。書式に従ってセルには「1/2」と表示されています。数式バーは「=C8」です。このとき値としては「0.5」、テキストは「1/2」となります。
文字列
C5セルに「ABC」と文字列を入力しました。数式バーも「ABC」になっています。書式は標準でこれは文字列です。この場合はどのプロパティでも「ABC」になります。
D5セルに「=LEFTB(C5,2)」と数式を入力しました。数式に従いセルは「AB」と表示されています。数式バーは「=LEFTB(C5,2)」です。書式は標準でこれは文字列です。数式以外のプロパティは「AB」となります。
通貨/会計
C6セルに「1234567」と数値を入力しました。数式バーも「1234567」になっています。書式は標準でこれは数値です。この場合はどのプロパティでも「1234567」になります。
D6セルに「=C6」と数式を入力し、書式を「通貨(¥)」に設定しました。書式に従ってセルには「¥1,234,567」と表示されています。数式バーは「=C6」です。このとき値としては「1234567」、テキストは「¥1,234,567」となります。
日付/時刻
C7セルに「2017/9/1」と日付を入力しました。書式は自動的に「yyyy/m/d」になりました。数式バーは「2017/9/1」です。値(Value)は「2017/09/01」になっています。また、値2(Value2)はシリアル値の「42979」になっています。数式もシリアル値になっています。
C7セルを一度クリアして「H29/9/1」と日付を入力しました。書式は自動的に「[$-411]ge.m.d」になりました。数式バーは「2017/9/1」です。値(Value)は「2017/09/01」になっています。また、値2(Value2)はシリアル値の「42979」になっています。数式もシリアル値になっています。
D7セルに「=C7」と数式を入力し、書式を和暦の日付に設定しました。数式バーは「=C7」です。値(Value)は「2017/09/01」になっています。また、値2(Value2)はシリアル値の「42979」になっています。
まとめ
まとめると以下のようになります。
日付/時刻以外の場合
プロパティ | 内容 |
---|---|
Textプロパティ | セルに表示されているもの |
Valueプロパティ | 入力値または数式の結果で書式が標準のもの |
Value2プロパティ | Valueと同値 |
Formulaプロパティ | 数式が入力されていれば数式 それ以外は入力値で書式が標準のもの |
(リボン/クイックアクセス) 「Excelのオプション」を一発で開くボタン
「Excelのオプション」は「ファイル」タブから開きます。何ということはありませんが、たったの一手間でも省略したい方のために、リボンやクイックアクセスツールバーに配置できるボタンが用意されています。
「オプション」を開くボタン
「リボンのユーザー設定」や「クイックアクセスツールバーのユーザー設定」を開いて下図のコマンドを追加してください。
ちなみに筆者は、クイックアクセスツールバーの一番最初にボタンを追加しています。(左端はExcelの固定アイコン)
実は「リボンのユーザー設定」や「クイックアクセスツールバーのユーザー設定」もこのオプション画面に入っていますよ。
以上です。
VBAマクロをリボンやクィックアクセスツールバーのボタンに割り当てる
作成したVBAマクロを手軽に実行出来るように、リボンやクイックアクセスツールバーのボタンに配置してみましょう。
目次
手順その1 リボンのユーザー設定を開く
リボンの任意の場所で右クリックしてメニューを開き、「リボンのユーザー設定」をクリックします。
「リボンのユーザー設定」画面が開きました。
画面右側、「新しいタブ」をクリックします。
「新しいタブ(ユーザー設定)」と「新しいグループ(ユーザー設定)」が作成されました。
「新しいタブ(ユーザー設定)」を選択して、「名前の変更」をクリックします。
任意の名前に変更します。ここでは仮に「マイツール」としておきます。
次に「新しいグループ(ユーザー設定)」を選択して「名前の変更」をクリックします。
任意の名前に変更します。ここでは仮に「マクロ」としておきます。(アイコンは反映されないのでどれでも良いです)
次に画面の左上の「コマンド選択」から「マクロ」を選択します。
任意のマクロを選択して「追加」をクリックします。ここでは仮に「PERSONAL.XLSB!HelloWorld」を選択します。
「マイツール」タブの「マクロ」グループに「PERSONAL.XLSB!HelloWorld」が追加されました。「名前の変更」をクリックします。
任意のアイコンを選択し、表示名を変更します。ここでは下図のようにアイコンは「フェイスマーク」、表示名は「HelloWorld」とします。
変更されました。画面の「OK」をクリックします。
リボンの「マイツール」タブを選択すると「マクロ」グループの中に「HelloWorld」のボタンが表示されます。
「HelloWorld」ボタンをクリックするとマクロが実行されます。
自作マクロをリボンに追加する手順は以上になります。参考までに、クイックアクセスツールバーに追加する手順もほぼ同様です。
また、今回はExcelを使って説明しましたが、Wordでもほぼ同様です。試してみてください。
(基本) リボンとクイックアクセスツールバーについての説明
リボン
タブとグループ
別のタブをクリックするとリボンの内容が変わります。
リボンの表示オプション
リボンを折りたたむ
リボンが折りたたまれた状態。タブのみが表示されています。
クイックアクセスツールバー
クイックアクセスツールバーをリボンに下に表示する
リボンの下に表示されました。
リボンをたたんでもクイックアクセスツールバーは表示されています。
以上。
Android/iOS日本語入力アプリのユーザー辞書の品詞の比較対照表
スマホの機種変更などで日本語入力アプリをやむを得ず変更する場合などでユーザー辞書を移行したい場合は希にあるかと思います。ユーザー辞書に品詞が必要なアプリがいくつかありますが、アプリによって使える品詞というのはバラバラです。そこで比較対照表をここに掲載します。
品詞が必要ない日本語入力アプリ(Android/iOS)
- Wnnシリーズ
- Simeji
- POBoxシリーズ
- iOS標準キーボード
品詞が必要な日本語入力アプリ(Android/iOS)
- Google日本語入力
- Mozcベースの日本語入力アプリ
- アルテ on Mozc
- flick (旧・みんなの顔文字キーボード)
- クラゲ日本語入力
- Gingerキーボード
- ATOKシリーズ
- FSKAREN
ただし、Google日本語入力とMozcの品詞は共通です。
品詞の比較対照表
グループ | ATOK (Android/iOS) |
GoogleIME/Mozc (Android/iOS※) |
FSKAREN (Android) |
---|---|---|---|
名詞 | 名詞 | 名詞 | 名詞 |
固有人名 | 姓 | 姓 | |
名 | 男性名 | ||
女性名 | |||
人名 | 人名 | ||
芸能人名 | |||
固有地名 | 地名 | 地名 | |
駅名 | |||
スポット | |||
固有組織 | 組織 | ブランド | |
固有一般 | 固有名詞 | 固有名詞 | |
名詞サ変 | 名詞サ変 | - | |
名詞ザ変 | - | - | |
名詞形動 | 名詞形動 | - | |
数詞 | 数字※2 | - | |
形容詞 | 形容詞 | 形容詞 | - |
形容動詞 | 形容動詞 | - | - |
動詞 | カ行五段 | 動詞カ行五段 | - |
ガ行五段 | 動詞ガ行五段 | ||
サ行五段 | 動詞サ行五段 | ||
タ行五段 | 動詞タ行五段 | ||
ナ行五段 | 動詞ナ行五段 | ||
バ行五段 | 動詞バ行五段 | ||
マ行五段 | 動詞マ行五段 | ||
ラ行五段 | 動詞ラ行五段 | ||
ワ行五段 | 動詞ワ行五段 | ||
ハ行四段 | 動詞ハ行五段※2 | ||
一段動詞 | 動詞一段 | ||
カ変動詞 | 動詞カ変 | ||
サ変動詞 | 動詞サ変 | ||
ザ変動詞 | 動詞ザ変 | ||
- | 動詞ラ変 | ||
副詞 | 副詞 | 副詞 | - |
連体詞 | 連体詞 | 連体詞 | - |
接続詞 | 接続詞 | 接続詞 | - |
感動詞 | 感動詞 | 感動詞 | - |
助詞 | - | 終助詞 | - |
独立語 | 独立語 | 独立語 | 独立語 |
接頭辞 | 接頭語 | 接頭辞※2 | - |
接尾辞 | 接尾語 | 接尾一般 | - |
接尾人名 | |||
接尾地名 | |||
助数詞 | |||
その他 | 単漢字 | - | - |
- | 顔文字 | 顔文字 | |
- | 短縮よみ | - | |
- | アルファベット | - | |
- | 記号 | - | |
- | 句読点 | - | |
- | 抑制単語 | - | |
- | 候補のみ※2 | - |
※flick for iOS版はMozcベースです