Quantcast
Channel: いつも隣にITのお仕事
Viewing all 2074 articles
Browse latest View live

Python初心者がVS Codeを使うときに最初にしておくとよい設定

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio Code(VSCode)でPythonの環境を作る手順をお伝えしています。

前回の記事はこちらです。

【初心者向けPython】VS Codeを最初に立ち上げたWelcome画面と画面構成について
非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio CodeでPythonの環境を作る手順をお伝えしています。今回は、VS CodeのWelcome画面と画面構成についてです。

エディタとして使用するVS Codeの画面構成についてお伝えしました。

引き続き、VS Codeの使い方を解説していきます。

今回は、初心者がVS Codeを使うときに最初にしておくとよい設定についてお伝えします。

では、行ってみましょう!

前回のおさらい

前回はPython用のエディタとして使用するVS Codeの画面構成についてお伝えしました。

主に以下の4つのパートで構成されていますね。

  • アクティビティバー
  • ステータスバー
  • メニュー
  • エディタエリア

では、さっそくPythonを書いていこう!!

としたいところなのですが、少し待って。

最初にしておくと良い設定がちょっとだけあるので、先にそれをしておきましょう。

Settings(設定)の開き方

VS Codeではとてもいろいろな設定項目が用意されていて、細かくカスタマイズを行うことができます。

ただ、初心者からすると、難しくてややこしいことは避けて通りたい…

ということで、このシリーズでは必要最低限の設定だけを紹介しますよ。

さて、設定は「Settings」から行うことができます。

その開き方はアクティビティバーの一番下、「Manage」のアイコンをクリックして開いたメニューから、「Settings」を選択します。

VS CodeでManageからSettingsを開く

もしくは、ショートカットキーの Ctrl + , でも開くことができます。

すると、以下のように「Setting」のタブが開き、ずらりと様々な設定が並んでおります。

たくさんありますが、よく使うのは、その名の通り「Commonly Used」の項目です。

VS CodeのSettingsの一般的な設定「Commonly Used」

今回も、この中にいくつかの設定を見ていくことにしましょう。

自動保存の設定をする

まずは「自動保存」の設定です。

デフォルトではオフになっているのですが、自動保存の設定をしておけば万が一のときに安心です。

「Settings」の「Commonly Used」の一番上に「Auto Save」があります。

プルダウンで、自動保存をどのようにするかを選ぶことができますが、ここでは「afterDelay」を選択します。

VS Codeの自動保存の設定「Auto Save」

これで、ファイルに変更があってから一定の時間後に自動保存されるようになります。

デフォルトと異なる設定をした場合、以下のようにその箇所に青い線が入るようになっています。

かっこよくてわかりやすいですね。

VS Codeの設定の変更と「Auto Save Delay」

「Auto Save Delay」の設定では、ファイル変更から何ミリ秒後に自動保存をするかを設定します。

デフォルトでは、「1000」となっているので、変更から1秒後に保存されることになっていますね。

フォント・タブの設定

初心者にとって必須の設定は自動保存だけでもいいのですが、もうひとつ見ておきましょう。

フォント・タブ関連の設定です。

「Commonly Used」を少しスクロールしていくと、以下の設定項目が見つかるはずです。

  • Font Size: フォントサイズ
  • Font Family: フォント種類
  • Tab Size: タブサイズ
  • Render Whitespace: スペースを表示するかどうか

VS Codeのフォント・タブ関連の設定

フォントはFont Sizeで好みのサイズ、Font Familyで種類に設定すると良いでしょう。

Tabキーを押した際の半角スペースの数はTab Sizeで変更できますが、特に理由がなければデフォルトのままでOKです。

Pythonではタブによるインデントはとても重要な役割を果たします。

Render Whitespaceは「all」にしておくと、半角スペースの位置で「・」のようなマークを入れてくれて目で見てほんのりわかるようになります。

ちょっと薄いですが、わかりますか…?

VS Codeの設定の「Render Whitespace」で半角スペースを表示

残念ながらコーディングの天敵といってもいい全角スペースは表示されません。表示するためには、拡張機能を入れる方法がありますので、希望の方は調べてみてください。

まとめ

以上、Python初心者がVS Codeを使うときに最初にしておくとよい設定についてお伝えしました。

本当に必須なのはAuto Saveくらいですね。

ほとんど設定をいじらずにPythonのプログラミングを始めることができます。

では、次回いよいよコードの作成をしていきましょう。

どうぞお楽しみに!

連載目次:ノンプロPython~Anaconda&VS Code環境作り

非エンジニア&Windowsユーザー向けのPython環境づくり。最近、人気急上昇中の統合開発環境Visual Studio Code(VSCode)を使ってPythonの環境を作る手順についてシリーズでお伝えします。
  1. 【Python】非エンジニアWindowユーザー向けのAnacondaインストールの手順
  2. Pythonを開発するエディタVisual Studio Codeについてとそのインストール手順
  3. 【初心者向けPython】VS Codeを最初に立ち上げたWelcome画面と画面構成について
  4. Python初心者がVS Codeを使うときに最初にしておくとよい設定

VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法

$
0
0
run

photo credit: docoverachiever Heaven is a Place on Earth via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio Code(VSCode)でPythonの環境を作る手順をお伝えしています。

前回の記事はこちら!

Python初心者がVS Codeを使うときに最初にしておくとよい設定
非エンジニアWindowsユーザー向けに、AnacondaとVisual Studio CodeでPythonの環境を作る手順をお伝えしています。今回は、VS Codeを使うときに最初にしておくとよい設定についてです。

Python初心者がVS Codeを使う際の最低限の設定についてお伝えしました。

さて、いよいよ今回はPythonのコードを実行していきますよ。

VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法です。

では、行ってみましょう!

Pythonを書くためのファイルを作成する

Pythonのコードを書くためには、そのコードを書くファイルを用意する必要があります。

まずはその手順を追っていきましょう。

フォルダを開く

その前に、そのファイルを置くフォルダを開く必要があります。

まず、アクティビティバーのExplorerのアイコンを開きます。

You have not yet opened a folder.

「まだフォルダ開いてないよ~」とのことですので、「Open Folder」をクリックしてフォルダを開きましょう。

VS Codeでフォルダを開く

「Open Folder」ダイアログが開きますので、今回は新規のフォルダを作りましょう。

「ドキュメント」の配下に「新しいフォルダー」をクリックして「MyPythonProject」を作成し、「フォルダーの選択」です。

Open Folderダイアログ

これでフォルダが作成されます。

ファイルを作成する

続いて、その作成したフォルダ内に新規ファイルを作成していきましょう。

VS Codeのサイドバーに「MYPYTHONPROJECT」が登場するのでカーソルを当てると、右側にいくつかのアイコンが並んでます。

その中で、一番左にある「New File」をクリックしましょう。

VS Codeで新規ファイルを作成する

入力窓が表示されますので、今回は「hello.py」とします。

VS Codeで新規ファイル名を入力する

拡張子まで入力するとPythonのアイコンが表示されるのに気づきましたよね。

Pythonのコードは、拡張子「py」のファイルに記述するのが一般的です。

開いたファイルについてのステータスバーの表示

それで、コードエリアに「hello.py」のタブが開かれて、コードの入力ができるようになります。

VS Codeのコードエリアとステータスバーの表示

そして、画面下部のステータスバーに、開いたファイルについての情報が表示されます。

  1. 行数
  2. 列数
  3. タブの設定
  4. 文字コード
  5. 改行コード
  6. ファイルの種別

一通り確認しておくとよいですね。

ファイルの種別なんかはちゃんとPythonと判別されていますね。

コードを入力する

では、いよいよPythonのコードを入力していきましょう。

では、以下のようにコードを入力してみましょう。

print('Hello Python!')

VS Codeで入力したPythonのコード

たぶん、いろいろとVS Codeがサポートしてくれますが、それについては次回お伝えします。

コードを保存する

次にコードの保存について見ていきましょう。

コードを入力すると、「hello.py」タブに「●」マークが表示されます。

これは、このファイルが未保存であるということを表しています。

また、Explorerアイコンにも未保存のファイル数を表す数字がバッジで表示されます。

VS Codeで未保存のファイル

「File」メニューの「Save」、またはショートカットキー Ctrl + S で保存をすると、ファイルが保存され、これらの表示が消えます。

ていうか、前回の記事で「自動保存の設定」をしたので、1秒待てば自動で保存されますけどね。

コードを実行する

Pythonのコードを実行するには、エディタエリアを右クリック→「Run Python File in Terminal」を選択です。

VS CodeでPythonファイルを実行する
実行すると、以下のように画面下部にターミナルが表示され、その中に

Hello Python!

という表示を見つけることができるはずです。

VS CodeのターミナルにPythonの実行結果が表示された

ターミナルというのは、ユーザーがコマンドを入力したり、プログラムの結果を表示したりするとができる画面です。

VS Codeには、ターミナルも搭載されているので、別のコンソール画面を使用する必要がないんですね。

まとめ

以上、VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法をお伝えしました。

これでVS Codeを使ってPythonプログラムを作成して実行するまでの一連を確認することができました。

VS CodeにはPythonのプログラミングをサポートする便利な機能がたくさんありますので、次回以降で解説していきますね。

どうぞお楽しみに!

連載目次:ノンプロPython~Anaconda&VS Code環境作り

非エンジニア&Windowsユーザー向けのPython環境づくり。最近、人気急上昇中の統合開発環境Visual Studio Code(VSCode)を使ってPythonの環境を作る手順についてシリーズでお伝えします。
  1. 【Python】非エンジニアWindowユーザー向けのAnacondaインストールの手順
  2. Pythonを開発するエディタVisual Studio Codeについてとそのインストール手順
  3. 【初心者向けPython】VS Codeを最初に立ち上げたWelcome画面と画面構成について
  4. Python初心者がVS Codeを使うときに最初にしておくとよい設定
  5. VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法

Python初心者を強力にサポートするVS Codeのインテリセンスの機能について

$
0
0
hint

photo credit: Stefan Marks Where are the Hosts? via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio Code(VSCode)でPythonの環境を作る手順をお伝えしています。

前回の記事はこちら!

VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法
非エンジニアのWindowsユーザー向け、AnacondaとVisual Studio CodeでPythonの環境を作る手順をお伝えしています。今回は、VS Codeでコードを入力、保存、実行をしていきます。

Pythonのコードをはじめて入力し、保存し、実行する方法をお伝えしました。

さて、コードを打ち込むときですが、VS Codeは何かいろいろと表示されたり、自動で入力してくれたりしましたよね。

このようなコードを入力するのを助ける機能を「インテリセンス」といいます。

これがね~、初心者を本当に助けてくれるんです。

ということで今回は、Python初心者を強力にサポートするVS Codeのインテリセンスの機能についてお伝えします。

では、行ってみましょう!

インテリセンスとは

インテリセンス…聞き慣れない言葉ですよね。

英語で書くと「IntelliSense」。Google翻訳先生に尋ねてみると…

Intelli SenseのGoogle翻訳による和訳

んー、だめですねw

仕方なく、VS Codeの公式ドキュメントの「IntelliSense」のページを見てみると、以下のようにありました。

IntelliSense is a general term for a variety of code editing features including: code completion, parameter info, quick info, and member lists. IntelliSense features are sometimes called by other names such as “code completion”, “content assist”, and “code hinting.”

IntelliSense in Visual Studio Code
Learn about Visual Studio Code IntelliSense (intelligent code completion).

Google翻訳におまかせ翻訳はこちら。

IntelliSenseは、コード補完、パラメーター情報、クイック情報、メンバーリストなど、さまざまなコード編集機能の一般的な用語です。 IntelliSense機能は、「コード補完」、「コンテンツアシスト」、「コードヒント」などの他の名前で呼ばれることもあります。

「メモ帳」のようなテキストエディタとは異なり、VS Codeをはじめとしたプログラミング用のエディタはこのような、ユーザーのコード入力をサポートする機能がふんだんに搭載されています。

これらの機能を活用できるのと、そうではないのでは、プログラムの開発効率や学習効率に大きな差が生まれます。

使わない手はありませんよね!?

VS Codeで提供されるインテリセンスの機能

では、実際にVS Codeで提供されているインテリセンスのいくつかについてお伝えしていきましょう。

なお、各インテリセンスの機能はショートカットキー Ctrl + Space で呼び出すことができるのを覚えておくと良いでしょう。

メンバーリスト

まず、メンバーリストから紹介していきましょう。

ユーザーの入力した文字列に応じて、その文字列からはじまる入力可能なキーワードをリストで表示してくれる機能です。

例えば、コードエリアで「pr」と入力すると、以下のように「pr」からはじまる入力可能なメンバーリストが自動で表示されます。

VS Codeのメンバーリスト

メンバーリスト上で上下キーで入力したいキーワードを選択して Tab で入力することができます。 

「pr」に続いて「i」まで入力すると、「pri」ではじまるキーワードに絞り込まれます。

つまり、長いスペルのキーワードを全部覚える必要がないんですね。

また、Pythonでは大文字・小文字の区別がありますが、メンバーリストから入力すれば正しい大文字・小文字で入力が可能です。

スピーディに、かつ正確にコードを入力するための強い味方です。

ペアの文字を自動挿入

各種カッコ記号「(」「[」「{」や引用符「”」「’」については、ペアとなる閉じるほうもの文字が自動挿入されます。

VS Codeのコード補完

便利!

クイックヒント

次にクイックヒントという機能です。

コードを入力した後に、キーワードにマウスカーソルをホバーしてみましょう。

例えば、関数であれば、その関数のパラメータ情報や説明が表示されます。

VS Codeの関数のクイックヒント

この情報は、メンバーリストの選択時に Ctrl + Space を押しても表示されますね。

値であれば、その値とデータ型が表示されます。

VS Codeの値のクイックヒント

いろんなワードにカーソルをホバーして、どんなものが表示されるか見てみましょうね!

まとめ

以上、Python初心者を強力にサポートするVS Codeのインテリセンスの機能についてお伝えしました。

いずれも、ものすごく強力な機能なので、遠慮せずに使いこなしちゃいましょう。

次回はVS Codeの便利なショートカットキーをお伝えしていきます。

どうぞお楽しみに!

連載目次:ノンプロPython~Anaconda&VS Code環境作り

非エンジニア&Windowsユーザー向けのPython環境づくり。最近、人気急上昇中の統合開発環境Visual Studio Code(VSCode)を使ってPythonの環境を作る手順についてシリーズでお伝えします。
  1. 【Python】非エンジニアWindowユーザー向けのAnacondaインストールの手順
  2. Pythonを開発するエディタVisual Studio Codeについてとそのインストール手順
  3. 【初心者向けPython】VS Codeを最初に立ち上げたWelcome画面と画面構成について
  4. Python初心者がVS Codeを使うときに最初にしておくとよい設定
  5. VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法
  6. Python初心者を強力にサポートするVS Codeのインテリセンスの機能について

【エクセルVBA】RefreshメソッドとRefreshTableメソッドでピボットテーブルを自動更新させてみよう

$
0
0

eyecatch_pvtrefresh

皆様こんにちは、ノグチです。

エクセルのピボットテーブル、便利ですよね。

ちょっとした集計表ならピボットテーブルで十分!というケースも多いかと思います。

でも、時々ピボットテーブルの更新をするのを忘れて、「あれ?数値がおかしい…」なんて思ってしまうこと、ありませんか?

あるいは、「シートの値を更新したら、自動的にピボットテーブルも更新してくれないかなあ」と思ったりしませんか?

そんな時は、VBAを使うと便利ですよ!

ということで今回は、VBAでピボットテーブルを自動更新させる方法をご紹介していきます。

VBAでピボットテーブルを更新する2通りの方法

まず、VBAでピボットテーブルを更新する方法は、以下の2つがあります。

  • PivotCacheオブジェクトのRefreshメソッドで更新する
  • PivotTableオブジェクトのRefreshTableメソッドで更新する

上記2つのメソッドとも、手動でピボットテーブルの「更新」をクリックした時と同様、ピボットテーブルを更新してくれるメソッドです。

では、2つの違いや記述方法を見ていきましょう。

PivotCacheオブジェクトのRefreshメソッド

Refreshメソッドの記述方法

まずはPivotCacheオブジェクトのRefreshメソッド

このメソッドは、ピボットテーブルのデータソースをもう一度読み込んで、ピボットテーブルの値を更新してくれます。

記述方法はこちら。

PivotCacheオブジェクト.Refresh

Refreshメソッドの使用例

記述例はこんな感じです。

Sub Pivot_Refresh

With ActiveSheet
    .PivotTables("ピボットテーブル1").PivotCache.Refresh
End With

End Sub

シート上にある「ピボットテーブル1」というピボットテーブルを更新する、というコードです。
実に単純ですね。

PivotTableオブジェクトのRefreshTableメソッド

RefreshTableメソッドの記述方法

お次はPivotTableオブジェクトのRefreshTableメソッド

こちらもピボットテーブルを更新してくれるメソッドです。

上でご紹介したRefreshメソッドとの大きな違いは、返り値があるということ。

ピボットテーブルの更新ができればTrue、そうでなければFalseの返り値をBoolean型で返してくれます。

記述方法はこちら。

PivotTableオブジェクト.RefreshTable

RefreshTableメソッドの使用例

このメソッドは返り値を返してくれるので、ピボットテーブルを更新できたことを前提とした処理をさせたい場合は、このメソッドを使って、「返り値がTrueだったら」という記述ができますね。

例えばこんな風に。

Sub Refresh_by_RefreshTable
Dim blnRefresh as Boolean

blnrefresh = .PivotTables("ピボットテーブル1").RefreshTable
  
If blnRefresh = True Then
    MsgBox "更新しました!"
End If
End Sub

Worksheets.Changeイベントでピボットテーブルを自動更新させる

ピボットテーブルをVBAで更新する方法をご紹介したところで、今回の主題である、ピボットテーブルを自動更新する方法を考えていきましょう。

ピボットテーブルを更新したいタイミングは、データソース範囲内の値が変更されたときですよね。

ということは、ワークシート上の値が変更されたということなので、Worksheets.Changeイベントを使えば、自動更新ができますね。

ということで、こちらのピボットテーブルを、Worksheets.Changeイベントと、PivotCacheオブジェクトのRefreshメソッドを組み合わせて、ピボットテーブルを自動更新させてみましょう。

ピボット,リフレッシュ

A~C列のデータを、F~G列の「売上」というピボットテーブルにまとめています。

ピボットテーブルを自動更新させるコード

上記のワークシートが更新された時に、「売上」ピボットテーブルを自動更新させるコードがこちら。

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

With ActiveSheet
    .PivotTables("売上").PivotCache.Refresh
End With

Application.EnableEvents = True
End Sub

Worksheet.Changeイベント内で、PivotCacheオブジェクトのRefreshメソッドを使ってピボットテーブルを更新させています。

EnableEventsプロパティの設定を忘れずに

上のコードには、ApplicationオブジェクトのEnableEventsプロパティが入っていますね。

これは、エクセルが、VBAで実行するピボットテーブルの更新をシートの更新とみなしてしまうようで、Worksheet.Changeイベント内がRefresh処理のコードだけでは、こんなエラーになってしまうのです。

enableevents,エラー

その為、EnableEventsプロパティを使って一旦イベント実行をOFFにし、Worksheet.Changeイベントでやりたいことが終わったら再度イベントが実行されるようにONにしています。

EnableEventsプロパティについはこちらの記事で紹介していますので、併せてご覧ください。

【エクセルVBA】Changeイベントと組み合わせてもっと便利に!検索にヒットした値をドロップダウンリストに表示する方法
エクセルのChangeイベントと、Validationオブジェクトを用いたドロップダウンリストを作成する方法を組み合わせて、セルに入力した値をマスタシートから検索し、検索にヒットした値を入力したセルのドロップダウンリストに表示させる方法をご紹介しています。この方法を使えば、入力作業が楽になるかもしれません。

ピボットテーブルの自動更新

では、上のコードを保存して、ピボットテーブルを自動更新させてみましょう。

更新されたことがわかりやすいように、表の1行目にある2019年8月1日の「すいか」レコードの売上を100,000に変更してみると…

この通り、ピボットテーブルが自動的に更新されましたね。

ピボットテーブル,更新

関係ないセルの変更でもピボットテーブルが更新されてしまう

さて、ここまでピボットテーブルの自動更新についてご紹介してきましたが、ここでご紹介したコードだと、ピボットテーブルのデータソース範囲外のセルを更新しても、ピボットテーブルの更新が実行されてしまいます。

データソース範囲以外が変更されたことでピボットテーブルの更新が実行されても、ピボットテーブルの値自体には影響はありません。

しかし、実行する必要のない処理はできるだけ省きたいもの。

データソースが更新された時のみ、ピボットテーブルを更新させる方法は無いものか…

大丈夫、ちゃんと方法がありますよ。

その方法は、次回の記事でご紹介していきます。

最後に

今回は、PivotTableオブジェクトのRefreshTableメソッドと、PivotCacheオブジェクトのRefreshメソッドという2つのメソッドのご紹介と、Worksheet.Changeイベントと組み合わせて、ピボットテーブルを自動更新させる方法をご紹介しました。

次回の記事では、ピボットテーブルのデータソース範囲が変更された場合のみ、ピボットテーブルを更新する方法をご紹介していきます。

それでは、最後までお読みいただきありがとうございました!

Python初心者のための覚えておきたいVS Codeの編集機能とショートカットキーまとめ

$
0
0
shortcut

photo credit: mag3737 Shortcut via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio Code(VSCode)でPythonの環境を作る手順をお伝えしています。

前回の記事はこちら!

Python初心者を強力にサポートするVS Codeのインテリセンスの機能について
非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio CodeでPythonの環境を作る手順をお伝えしています。今回は、VS Codeのインテリセンスの機能についてです。

とっても便利なVS Codeのインテリセンスの機能について紹介しました。

今回はVS Codeの便利な編集機能とショートカットキーを紹介していきます。

ということで、 Python初心者のための覚えておきたいVS Codeの編集機能とショートカットキーまとめです。

では、行ってみましょう!

コピー・カット&ペーストの方法

基本のコピー・カット&ペースト

まずは、基本のコピー・カット&ペーストの方法です。

ワードをダブルクリックすると、ワード単位で選択をすることができます。

それで、 Ctrl + C をすればコピー、 Ctrl + X でカットになります。

VS Codeでワードをダブルクリックして選択してコピー

例えば、コピーをしたとして、別の行にカーソルを移動して Ctrl + V でペーストができますね。

VS Codeでペースト

行単位のコピー・カット&ペースト

こんなの当たり前じゃん、という感じだと思うのですが、驚かないでくださいよ。

次は、ワードを範囲選択してしない状態で Ctrl + C のコピーをしてみましょう。

VS Codeで範囲を選択せずにコピー

別の行にカーソルを移動して、 Ctrl + V でペーストすると…

行単位でのコピー&ペーストができます!

VS Codeで行単位でペースト

同様に行単位のカットもできます。

つまり、行単位で消したいときは選択せずの Ctrl + X が便利です。

検索と置換

ファイル内検索

ファイル内の検索を行うときには、 Ctrl + F です。

検索用の入力欄が表示されますので、その中にキーワードを入力すると、ヒットした文字列がハイライトされます。

VS Codeでファイル内検索

入力欄の右側にある「↑」「↓」アイコンで、前後の候補を移動できます。

ちょっと覚えづらいですが、次の候補へは F3 、前の候補へは Shift + F3 を使用することもできます。

ファイル内置換

ファイル内の置換を行うには、 Ctrl + H です。

検索用の入力欄とともに、置換用の入力欄も表示されます。

VS Codeでファイル内置換

それぞれ入力した後、置換入力欄の右側にある「Replace All」アイコンをクリックすると、まとめて置換をすることができます。

VS Codeでファイル内のすべてを置換

全ファイルを検索・置換

現在のファイルだけでなく、全ファイルから検索・置換を行いたいときもあります。

そんなときは、アクティビティバーの「Search」アイコンをクリックして展開!

すると、検索欄が表示されますので、入力して Enter で全体の検索を行うことができます。

VS Codeで全体の検索

全体検索は Ctrl + Shift + F でも開くことができます。

全体の置換であれば、 Ctrl + Shift + H です。

VS Codeで全体の置換

マルチカーソル

VS Codeにはカーソルを増殖させるマルチカーソルという機能があります。

Alt キーを押しながら、次々とクリックすると、クリックした位置にカーソルを増やすことができます。

VS Codeのマルチカーソル

これらマルチカーソルは同時に編集を行うことができます。

例えば、同時に入力を行ったのがこちら。

VS Codeのマルチカーソルで編集

同じ単語をマルチカーソル

このマルチカーソルですが、上記のように同じ単語の箇所にカーソルを増やすのは簡単です。

Ctrl + D で同じ単語を順番にマルチカーソル、 Ctrl + Shift + L で、同じ単語にまとめてマルチカーソルとします。

VS Codeで同じ単語をマルチカーソル

うまく使えたらかっちょいいですね。

まとめ

以上、Python初心者のための覚えておきたいVS Codeの編集機能とショートカットキーまとめをお伝えしました。

いずれもマスターしたら便利そうですよね…!

では、最後にショートカットキーまとめです。

ショートカットキー 説明
Ctrl + C コピー
Ctrl + X カット
Ctrl + V ペースト
Ctrl + F ファイル内検索
F3 次の候補へ
Shift + F3 前の候補へ
Ctrl + Shift + F 全体検索
Ctrl + Shift + H 全体置換
Alt + クリック マルチカーソル
Ctrl + D 同じ単語を順番にマルチカーソル
Ctrl + Shift + L 同じ単語をまとめてマルチカーソル

ぜひ、ご活用ください!

次回もVS Codeの便利な機能を紹介していきますよ。

どうぞお楽しみに!

連載目次:ノンプロPython~Anaconda&VS Code環境作り

非エンジニア&Windowsユーザー向けのPython環境づくり。最近、人気急上昇中の統合開発環境Visual Studio Code(VSCode)を使ってPythonの環境を作る手順についてシリーズでお伝えします。
  1. 【Python】非エンジニアWindowユーザー向けのAnacondaインストールの手順
  2. Pythonを開発するエディタVisual Studio Codeについてとそのインストール手順
  3. 【初心者向けPython】VS Codeを最初に立ち上げたWelcome画面と画面構成について
  4. Python初心者がVS Codeを使うときに最初にしておくとよい設定
  5. VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法
  6. Python初心者を強力にサポートするVS Codeのインテリセンスの機能について
  7. Python初心者のための覚えておきたいVS Codeの編集機能とショートカットキーまとめ

Python初心者に知ってもらいたいVS Codeのコマンドパレットとその使い方

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio Code(VSCode)でPythonの環境を作る手順をお伝えしています。

前回の記事はこちら。

Python初心者のための覚えておきたいVS Codeの編集機能とショートカットキーまとめ
非エンジニアのWindowsユーザー向け、AnacondaとVisual Studio CodeでPythonの環境を作る手順をお伝えしています。今回は、初心者向けVS Codeの編集機能とショートカットキーまとめです。

Python初心者向け、VS Codeの編集関連の機能とショートカットキーについてお伝えしました。

さて、VS Codeですが、もうひとつだけお伝えしておきたい機能があります。

それはコマンドパレットです。

この機能がVS Codeの使い勝手をぐっと跳ね上げてくれるはず…!

ということで、Python初心者に知ってもらいたいVS Codeのコマンドパレットとその使い方です。

では、行ってみましょう!

コマンドパレットとは

まず、コマンドパレットとは何かについてお伝えしましょう。

公式ドキュメントの言葉をお借りすると…

The most important key combination to know is Ctrl+Shift+P, which brings up the Command Palette. From here, you have access to all of the functionality of VS Code, including keyboard shortcuts for the most common operations.

Visual Studio Code User Interface
A quick overview of the Visual Studio Code user interface. Learn about the editor, window management, and special UI to handle source control, extension managem...

なるほど。ふむふむ。

ちょっとGoogle翻訳先生の力も借りますか。

知っておくべき最も重要なキーの組み合わせはCtrl + Shift + Pで、コマンドパレットが表示されます。ここから、最も一般的な操作のキーボードショートカットを含む、VS Codeのすべての機能にアクセスできます。

  • 最も重要なキーの組み合わせCtrl + Shift + P
  • コマンドパレットはVS Codeのすべての機能にアクセスできる

パワーのあるキーワードが並びますね…!!

では、押してみましょう。 Ctrl + Shift + P

VS Codeのコマンドパレット

上部に入力欄と、下にずらーっと命令のようなもののリストが並んでいますね。

VS Codeで実行できる各機能について、その「名前」をこの入力欄に直接打ち込んでそれを実行できるのです。

それがコマンドパレットというわけです。

入力欄に「名前」に含まれるキーワードを入力することで、リストは絞り込まれていきます。

ですから、たくさんある機能について、メニューからのたどり方やショートカットキーがわからなくても、キーワードをたよりにキーボード操作だけでたどりつくことができるというわけです。

ちなみに、アクティビティバーのMangeアイコンを開いて「Command Palette」からもアクセスすることができます。

VS CodeのManageからコマンドパレットを呼び出す

コマンドパレットの使い方

新規ファイルの作成

では、具体的な使い方を見ていきましょう。

例として、新規ファイルの作成をしてみましょう。

Ctrl + Shift + P でコマンドパレットを呼び出して、「new」とか「file」とか関連しそうなワードを入れます。

VS Codeのコマンドパレットで新規ファイルを作成

すると、リストがガンガン絞り込まれて、2つだけになりました。

「File: New File」を選択して Enter します。

すると、以下のようにExplorerのサイドバーでのファイル名入力に移行します。

VS Codeで新規ファイルのファイル名を入力

簡単ですね。

Pythonファイルのターミナル実行

では、次にコマンドパレットでPythonファイルの実行をしてみましょう。

Ctrl + Shift + P でコマンドパレットを呼び出して、「run」とか「python」とか入れればいいですよね。

ですが、コマンドパレットを開くと、キーワードを入力する以前に「Python: Run Python File in Terminal」が発見できちゃいます。

VS Codeのコマンドパレットで最近使用したコマンドを表示

右側の青字で「recently used」とあります。

そうなんです、このコマンド、さっき試した時に選んで実行したんです。

つまり「最近使用したコマンド」はコマンドパレットのリストの上部に優先表示されるので、絞り込まずともすぐにアクセスが可能です。

ターミナルで実行について、もうわざわざ右クリックから選んだりしなくて良いわけですね…!

テーマを変更する

VS Codeでは背景色や文字色などをつかさどる「テーマ」を変更できます。

では、コマンドパレットでテーマの変更をしてみましょう。

Ctrl + Shift + P でコマンドパレットを呼び出して、「theme」と入力します。

候補から「Preferences: Color Theme」を選択しましょう。

VS Codeのコマンドパレットでテーマを変更する

すると、リストがテーマ一覧に変更されますので、上下キーで好きなテーマを選びます。

カーソルを当てると実際の画面が選択中のテーマのものに変更されますので、好きなものを選びましょう。

VS Codeのコマンドパレットでテーマを選択

コマンドパレット、操作に無駄がなくていい感じですよね。

まとめ

以上、Python初心者に知ってもらいたいVS Codeのコマンドパレットとその使い方についてお伝えしました。

アクティビティバー、メニューからの操作、ショートカットキーに加えて、コマンドパレットからもさまざまな操作が行えることを覚えておきましょう。

他にも便利な使い方ありそうですね…

また、VS Codeの便利な機能があればお伝えしますね。

どうぞお楽しみに!

連載目次:ノンプロPython~Anaconda&VS Code環境作り

非エンジニア&Windowsユーザー向けのPython環境づくり。最近、人気急上昇中の統合開発環境Visual Studio Code(VSCode)を使ってPythonの環境を作る手順についてシリーズでお伝えします。
  1. 【Python】非エンジニアWindowユーザー向けのAnacondaインストールの手順
  2. Pythonを開発するエディタVisual Studio Codeについてとそのインストール手順
  3. 【初心者向けPython】VS Codeを最初に立ち上げたWelcome画面と画面構成について
  4. Python初心者がVS Codeを使うときに最初にしておくとよい設定
  5. VS CodeではじめてのPythonのコードを入力する・保存する・実行する方法
  6. Python初心者を強力にサポートするVS Codeのインテリセンスの機能について
  7. Python初心者のための覚えておきたいVS Codeの編集機能とショートカットキーまとめ
  8. Python初心者に知ってもらいたいVS Codeのコマンドパレットとその使い方

【GAS×freeeAPI】APIリクエストのレスポンスから必要データのみを取り出す

$
0
0

こんにちは!ITライターのもり(@moripro3)です!

クラウド会計ソフトfreeeのAPIを使って経理業務を自動化するネタをシリーズでお届けしています。

このシリーズでは、freeeとチャットワークを連携して「当日入金予定の取引一覧を自動でチャットワークに送信するツール」を作成します。

成果物のイメージがこちら!入金予定のある日に、自動でチャットワークに通知が届きます。

freeeAPIを使ってGASとチャットワークを連携

前回の記事では、freeeAPIにGETリクエストを送信して、「当日入金予定の取引一覧」のレスポンスが返ってくることまでを確認しました。

【GAS×freeeAPI】GETリクエストで当日入金予定の取引一覧を取得する
「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第3回目。スクリプト実行時の「当日日付」を取得する関数を作成し、リクエストURLの日付パラメータを置き換え、GETリクエストでレスポンスを取得します。

次のステップでは、レスポンスの文字列をスプレッドシートに出力する処理を作るのですが、いきなりシートに書き出すのはやや大変です。

そこで今回の記事では、freeeAPIのレスポンスから「必要なデータのみを取り出す方法」をお伝えします。

シリーズを通してfreeeAPIを使いこなし、経理業務の自動化を進めていきましょう!

(この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるようサポートしていきます!)

前回のおさらいとgetDealsの部品化

前回の記事では、当日入金予定の取引一覧を取得する関数「getDeals」を作成しました。

ツールを完成させるためには、他にもいろいろな処理が必要です。すべての処理をひとつの関数に書くと長くなるので、処理ごとに「部品化」します。

  • freeeAPIのレスポンスをスプレッドシートに書き出す処理
  • スプレッドシートのデータを元に、チャットワーク通知用の本文を作成する処理
  • チャットワークに送信する処理

関数getDealsも部品化します。前回はfreeeAPIのレスポンスをログ出力しましたが、return文で呼び出し元に戻すよう変更します。

また、エントリポイント(プログラムを構成するコードのなかで、最初に実行する位置)となるmain関数を作成します。今後、シリーズを通して作成する各処理(関数)は、すべてmain関数から呼び出すこととします。

function main() {
  
  var response = getDeals();
  Logger.log(response);
  
  //後続の処理を記述
  
}

/**
 * freeeAPIにGETリクエストを送信して取引一覧を取得する
 *
 * @return {object} freeeAPIからのレスポンス
 */
function getDeals() {
  
  var accessToken = getService().getAccessToken();
  
  var company_id = 'xxxxxxx'; //事業所ID
  
  var date = new Date(); //現在日時
  date = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd'); //表示形式を変換
  
  //リクエストURL
  var requestUrl = 'https://api.freee.co.jp/api/1/deals?' + 
    'company_id=' + company_id + 
    '&status=unsettled' +
    '&type=income' + 
    '&start_due_date=' + date +
    '&end_due_date=' + date + 
    '&limit=100';
  
  //リクエスト送信時に付与するオプションパラメータ
  var params = {
    "method" : "get",
    "headers" : {"Authorization":"Bearer " + accessToken}
  };
  
  var response = UrlFetchApp.fetch(requestUrl,params);
  //Logger.log(response);
  
  return response;
  
}

main関数を実行すると、freeeAPIから取引一覧を取得できます。(2019/8/15に実行)

freee支払期日が20190815の取引一覧

それでは、このレスポンスから「必要なデータのみを取り出す方法」を学んでいきましょう!

GETリクエストのレスポンスを「オブジェクト」に変換する

freeeAPIにGETリクエストを送信し、戻ってきたデータ(レスポンス)は、JSON形式の文字列です。文字列のままではGASで扱いにくいので、「文字列」を「オブジェクト」に変換します。

JSON形式の文字列をJavaScriptのオブジェクトに変換する、JSONオブジェクトのparseメソッドを使用します。

JSON.parse(文字列)

「文字列」を、GASで扱いやすい「オブジェクト」に変換できます。

APIからのレスポンスをオブジェクトに変換する

getDealsの戻り値(文字列)を変数responseに格納し、parseメソッドでオブジェクトに変換します。

オブジェクトを格納する変数名はobjにしておきましょう。

var response = getDeals(); //freeeAPIからのレスポンス(文字列)
var obj = JSON.parse(response); //オブジェクトに変換
Logger.log(obj);

変数objの中身です。

GASで文字列をオブジェクトに変換

見た目は文字列とあまり変わりませんが、GASで扱うためにはこの形式が相応しいのです。

オブジェクトからデータを抽出する

GASで扱いやすいように変換した「オブジェクト」から、目的のデータを抽出する方法を紹介します。

オブジェクトの値にアクセスするドット記法

オブジェクトとは、以下のようなプロパティと値の組み合わせです。

{プロパティ1 : 値1, プロパティ2 : 値2, プロパティ3 : 値3, ・・・ }

ドット記法とは、オブジェクトから値を取り出す記述方法です。ドット(.)でプロパティ名を指定します。

オブジェクト名.プロパティ名

サンプルデータ(personオブジェクト)を用いて、ドット記法の使い方をみてみましょう。

var person = 
      {
        "name" : "Bob",
        "age" : 25,
        "brothers" : [
          {
            "name" : "Tom",
            "age" : 23
          },
          {
            "name" : "Jack",
            "age" : 20
          },
          {
            "name" : "Noah",
            "age" : 18
          }
        ]
      }

personオブジェクトの「nameプロパティ」の値を取得してみます。personオブジェクトに対して、ドット(.)でnameプロパティを指定します。

Logger.log(person.name); //Bob

つづいて、「brothersプロパティ」から値を取り出してみます。

brothersプロパティは角括弧[ ]で括られて配列になっているのがポイントです。兄弟の人数分のオブジェクトが並んでいます。

1番目の兄弟の年齢を取得します。配列の要素番号は0から始まるので、1番目 = 0です。
brothersプロパティの要素番号[0]を指定し、さらに、ageプロパティをつなげます。ドット(.)は複数つなげることが可能です。

Logger.log(person.brothers[0].age); //23

3番目の兄弟の名前を取得します。brothersプロパティの要素番号[2]を指定し、nameプロパティをつなげます。

Logger.log(person.brothers[2].name); //Noah

このように、プロパティ名をドット(.)でつなげてオブジェクトの値にアクセスする方法が「ドット記法」です。

レスポンスの件数をチェック

このツールは、該当の取引が存在する場合のみチャットワークに通知するので、取引が存在しない場合は、以降の処理は不要です。

そこで、ドット記法を使用して、まずは「レスポンスの件数」を取得します。

freeeAPIリファレンスで、各プロパティの意味が確認できるので見てみましょう。

「取引(収入/支出)一覧の取得」をクリックして展開します。

freeeAPIリファレンスの項目を展開する

ResponsesのCode200の項目が、正常終了の場合のレスポンスを表しています。Modelをクリックすると、各プロパティの説明が記載されています。

「metaプロパティ」配下の「total_countプロパティ」が「検索条件に合致する取引の総数」であることが確認できます。

freeeAPIリファレンスのレスポンス項目の説明

freeeAPIからのレスポンスをオブジェクトにした変数objはこのような形式になっています。(dealsプロパティの中身は省略)

ここから「total_countプロパティ」の値「3」を取り出してみましょう。

{
  "deals":[...],
  "meta":{
    "total_count":3
  }
}

変数objの「metaプロパティ」の「total_countプロパティ」をドット(.)で指定して連結すると、目的の値「3」を取得できます。

var total_count = obj.meta.total_count;
Logger.log(total_count); //3

対象データが存在する場合、つまり、total_countが0より大きい場合のみ、後続の処理に進むようにしたいので、if文で判定します。

var total_count = obj.meta.total_count;

if (total_count > 0) {

  //スプレッドシートに書き出す処理

}

ここまでがメイン関数の処理です。

取引データを取り出す

この項では、実際にスプレッドシートに書き出すデータ(チャットワークに通知する取引データ)を取り出します。

まず、変数objの構成です。dealsプロパティの中身は配列であり、条件に合致する取引の数だけ、オブジェクトが並んでいます。(1取引=1オブジェクト)

取引が3件の場合、dealsプロパティに3つのオブジェクトが並びます。

{
      "deals":[
        {
          //取引1件目=要素番号[0]
        },
        {
          //取引2件目=要素番号[1]
        },
        {
          //取引3件目=要素番号[2]
        }
      ],
      "meta":{
        "total_count":3
      }
    }

変数objから、取引1件目のオブジェクトを取得してみます。ポイントは2つです。

  • dealsプロパティの中身は配列である
  • 配列の要素数は0から始まる

よって、1件目の取引を取得する場合は、配列の要素番号[0]を指定します。

Logger.log(obj.deals[0]);

出力結果です(オブジェクトでは、プロパティの並び順は不定です)

{ref_number=, amount=86400, partner_id=18092592, company_id=xxxxxxx, issue_date=2019-07-01, due_amount=86400, due_date=2019-08-15, details=[{tax_code=101, tag_ids=[], amount=86400, section_id=null, item_id=165676671, account_item_id=296536450, vat=6400, description=, id=1125122564, tax_id=146197682, entry_side=credit}], id=432070388, partner_code=null, type=income, status=unsettled}

それでは、変数objから、取引1件目の2項目を取り出す処理を書いてみます。

  1. 金額
  2. 勘定科目ID

(※コメントアウトで ★ を付与している行です。)

{
      "deals":[
        {
          "id":432070388,
          "company_id":xxxxxxx,
          "issue_date":"2019-07-01",
          "due_date":"2019-08-15",
          "amount":86400, //★金額
          "due_amount":86400,
          "type":"income",
          "partner_id":18092592,
          "partner_code":null,
          "ref_number":"",
          "status":"unsettled",
          "details":[
            {
              "id":1125122564,
              "account_item_id":296536450, //★勘定科目ID
              "tax_id":146197682,
              "tax_code":101,
              "item_id":165676671,
              "section_id":null,
              "tag_ids":[],
              "amount":86400,
              "vat":6400,
              "description":"",
              "entry_side":"credit"
            }
          ]
        },
        {
          //(省略)取引2件目
        },
        {
          //(省略)取引3件目
        }
      ],
      "meta":{
        "total_count":3
      }
    }

まず、取引1件目の金額を取り出します。「dealsプロパティ(配列)」→「amountプロパティ」の順にアクセスします。

Logger.log(obj.deals[0].amount); //86400

続いて、取引1件目の勘定科目IDを取り出します。「dealsプロパティ(配列)」→「detailsプロパティ(配列)」→「account_item_idプロパティ」の順にアクセスします。

Logger.log(obj.deals[0].details[0].account_item_id); //2.9653645E8

※ログ出力をすると小数点表示になってしまいますが、スプレッドシートに出力すれば問題ないです。

「detailsプロパティ」も配列形式であり、1件の取引に複数明細が存在する場合、明細の数だけオブジェクトが並びます。1取引1明細のみの場合も配列形式なので、要素番号の指定が必要です。

detailsプロパティの値については、複数明細をすべて取得する処理を作るとややこしくなってしまうので、このツールでは、要素番号[0]で「最初の1明細」のみを取得することにします。

まとめ・次回予告

「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第4回目では、これらを紹介しました。

  • freeeAPIからのレスポンス(文字列)をオブジェクトに変換する方法
    • JSONオブジェクトのparseメソッドを使用する。文字列よりもオブジェクトの方がGASで扱いやすくなる
  • ドット記法でオブジェクトから値を取り出す方法
    • プロパティ名をドット(.)で指定する。複数プロパティをつなげることが可能
    • プロパティが配列形式の場合、要素番号も指定する

次回は、オブジェクトから取り出した値をスプレッドシートに書き出す処理を作成します。

どうぞお楽しみに!

連載目次:【GAS×freeeAPI】当日入金予定の取引一覧を自動でチャットワークに送信する

「クラウド会計ソフトfreee」のAPIをGASで操作して経理業務を自動化するシリーズ。「当日入金予定の取引一覧を自動でチャットワークに送信するツール」の作成を目標とします。

  1. ノンプログラミングでOK!「会計freee連携アドオン」でスプレッドシートにデータを取得する
  2. 【GAS×freeeAPI】指定条件の取引一覧を取得する「リクエストURL」の作り方と仕組み
  3. 【GAS×freeeAPI】GETリクエストで当日入金予定の取引一覧を取得する
  4. 【GAS×freeeAPI】APIリクエストのレスポンスから必要データのみを取り出す

Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた

$
0
0

Project Jupyter

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。

Anacondaのインストールについては以下の記事で紹介しています。

【Python】非エンジニアWindowユーザー向けのAnacondaインストールの手順
非エンジニアのWindowsユーザーがPythonを学び実務で使うことを目標にいくつかの記事を書いてきました。そろそろワンランク上の環境を…ということで、Anacondaの紹介とインストールについて解説します。

弊ブログではエディタとして、PyCharmやVS Codeを紹介していたりします。

【ノンプログラマー向けPython】統合開発環境「PyCharm」のインストールと初期設定
非エンジニア&Windowsユーザーのための開発環境作りについてお伝えしています。今回は、Python専用高機能IDEのPyCharmについて、またそのインストールと初期設定についてお伝えしていきますよ。
Pythonを開発するエディタVisual Studio Codeについてとそのインストール手順
非エンジニアのWindowsユーザー向けに、AnacondaとVisual Studio CodeでPythonの環境を作る手順をお伝えしています。今回はエディタVS Codeのインストールについてです。

ですが、もうひとつ別のアプローチとしてJupyter Notebookを紹介したいと思います。

上記のエディタとはまた別の得意分野、作業体験ができるもので…

ぜひ、お好みのものをチョイスしていただければと!

ということで、今回はPython初心者&Windowsユーザー向けJupyter Notebookとそのはじめかたについてお伝えします。

では、行ってみましょう!

Jupyter Notebookとは

Jupyter Notebookとは、ひとことで言うとプログラムを実行・記録することができる対話型ブラウザ実行環境です。

読み方は「ジュピターノートブック」です。

「Project Jupyter」という非営利団体が管理している、オープンソースプロジェクトで開発されています。

Project Jupyter

Project Jupyter
The Jupyter Notebook is a web-based interactive computing platform. The notebook combines live code, equations, narrative text, visualizations, interactive dash...

かつては、Python専用の「IPython Notebook」という名称でしたが、そこから分離されて多数のプログラミング言語をサポートするようになりました。

それで、その主なプログラミング言語である「Julia」「Python」「R」を組み合わせて「Jupyter」と命名されたそうです。

Jupyter Notebookの画面とノートブック

Jupyter Notebookの画面のイメージはこんな様子です。

Jupyter Notebookの画面イメージ

この画面で編集したPythonのスクリプト+実行結果+Markdownなどで記述したメモをまとめたものが「ノートブック」となります。

…なんか、今までのやつとだいぶ違いますね。

まあ、このシリーズでじっくり丁寧に紹介しますので、お付き合いくださいませ。

「セル」単位で編集・実行

最も特徴的なのが、「セル」と呼ばれる単位でPythonのコードの編集・実行をするということです。

VS CodeやPyCharmなどのエディタでは、スクリプトを実行しますが、その際には基本的にファイルの最初から最後までを一気に実行します。

しかし、Jupyter Notebookでは、「セル」というブロック単位で、少しずつ編集・実行をしていきます。

つまり、ブロックずつ編集して実行→結果に応じて修正→修正したところを実行→…といったように、小さい単位でコーディングと動作確認を重ねて作業を進められるのです。

開発環境兼レポート作成ツール

Jupyter Notebookはコードを編集して実行するだけでなく、コードと、その結果・経過、メモをまとめてノートブックとして保存、共有ができます。

結果や経過の表示は表やグラフも含めて美しく出力する機能が充実していますし、Markdown形式による文書作成も可能。

つまり、実行した結果をスクリプト+レポートとしてそのままレポートとして提出・共有することができます。

よく実験などで、プログラムの計算結果を表やグラフ化して、文書に埋め込み…という作業が発生するのをイメージしていただければと思いますが、そのすべてをJupyter Notebookで実行できるということですね。

主にデータ分析用ツールとして紹介されていますが、ノンプログラマーにも新たな開発体験を味わわせてくれます。

Jupyter Notebookのはじめかた

では、Jupyter Notebookをはじめていきましょう!

Anacondaをインストールしたのであれば、Jupyter Notebookは同時にインストールされていますので、新たにインストールする必要はありません。

インストールしていない場合は、前回の記事を頼りにどうぞ。

Windows キーでスタートメニューを立ち上げて、「jup」などと入力すると絞られて表示されるので「Jupyter Notebook(Anaconda3)」を選択して起動します。

WindowsのスタートメニューからJupyter Notebookを起動する

すると、ブラウザの新しいタブに以下のような画面が開きます。

これがJupyter Notebookのダッシュボードです。

Jupyter Notebookのダッシュボード

ブラウザに表示されていますが、この画面にはローカルの「C:\Users[ユーザー名]」のフォルダの内容が表示されていることに注目してください。

ちなみに、URLは「http://localhost:8888/tree」となっていますね。

あと、以下のような黒いウィンドウも表示されます。

Jupyter Notebookの黒いウィンドウ

この黒いウィンドウはJupyter Notebookを使用している間は消しちゃダメです。

邪魔だからといって消してしまうと、例えば以下のように動作しなくなっちゃいますのでご注意を。

Jupyter Notebookで新規ファイル作成に失敗

先ほどのダッシュボードから、ノートブックを作成していくわけですが、それについては次回以降でお伝えしていきますね。

まとめ

以上、Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
についてお伝えしました。

次回、Jupyter Notebookを使ってPythonを実行していきます。

初心者向けJupyter NotebookでPythonを動かす最初の一歩
Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。今回は、初心者向けJupyter NotebookでPythonを動かす最初の一歩です。

どうぞお楽しみに!

連載目次:ノンプロPython~Jupyter Notebookの使い方

Python初心者のノンプログラマーがAnacondaをベースに開発環境を作るなら、ぜひこちらも使ってもらいたい「Jupyter Notebook 」。このシリーズでは、その基本や使い方についてお伝えしていきます。
  1. Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
  2. 初心者向けJupyter NotebookでPythonを動かす最初の一歩

【エクセルVBA】Intersectメソッドで範囲内のセルが変更されたことをキャッチする方法

$
0
0

eyecatch,vba,Intersect

皆様こんにちは、ノグチです。

前回の記事では、PivotCacheオブジェクトのRefreshメソッドとWorksheet.Changeイベントを組み合わせて、シートが更新されたらピボットテーブルが自動的に更新させる方法をご紹介しました。

【エクセルVBA】RefreshメソッドとRefreshTableメソッドでピボットテーブルを自動更新させてみよう
Worksheet.Changeイベントとピボットテーブル更新のPivotTableオブジェクトのRefreshTableを組み合わせて、シートが更新されたらピボットテーブルを自動更新させる方法をご紹介しています。同じピボットテーブル更新のPivotCacheオブジェクトのRefreshメソッドもご紹介していますよ。

しかし、前回記事の最後でも説明した通りに、前回ご紹介したコードだと、シート上でピボットテーブルのデータソースに指定された範囲以外が変更されたときにもピボットテーブルの更新処理が実行されてしまいます。

本来実行されなくてもよい処理なら、させないようにしておきたいですよね。

ということで今回は、Intersectメソッドで、変更を加えたセル範囲が、指定の範囲に含まれているかをキャッチする方法をご紹介します。

Intersectメソッドの記述方法

今回使用するのがApplicationオブジェクトのIntersectメソッド

このメソッドは、2つ以上のセル範囲が交差する範囲をRange型で返してくれるメソッドです。

範囲同士が交差していない場合は、Nothingが返ってきます。

記述方法はこちら。
Applicationオブジェクト.Intersect(Range1, Range2…)

パラメータのRangeは、最大30まで指定できるようです。(Range1とRange2は必須)

指定した範囲が交差している範囲を返してくれるということは、返り値がある=交差している範囲がある=指定した範囲1が、範囲2に含まれている、と考えることができますね。

交差する範囲の例

では、こちらのコードを使って、実際に交差する範囲がIntersectメソッドでどう取得できるのか、試してみましょう。

Sub Test_Intersect()
Dim rngPvt As Range

With ActiveSheet
    Set rngPvt = Intersect(.Range(範囲1),  .Range(範囲2))
    If Not rngPvt Is Nothing Then
        MsgBox rngPvt.Address
    ElseIf rngPvt Is Nothing Then
        MsgBox "Nothing"
    End If
End With

End Sub

上のコードの5行目にある、Set~以降の範囲を変えて、試してみます。

2つの範囲が重なっている場合

まずはこちらの図のような範囲Aと範囲Bの場合。

Intersect,重なる

範囲Aと範囲Bは、B2セルが交差していますね

この時、Intersectメソッドを使ってみると…

Set rngPvt = Intersect(.Range("A3:C3"), .Range("B1:B8"))

Intersect,重なる、結果

このように、二つの範囲が交差している、B2セルを返してくれますね。

では次。

こちらの範囲Cと範囲Dは、C3セルからD4セルの範囲が交差していますね。

Intersect、重なる

Intersectメソッドで見てみると…

Set rngPvt = Intersect(.Range("A3:D4"), .Range("C1:E8"))

Intersect、重なる、結果
この通り、交差している範囲を返してくれます。

3つの範囲が重なっている場合

では、こちらの場合はどうでしょうか。

Intersect、重なる、3つ

E、F、Gの3つの範囲が交差していますね。

この範囲を、Intersectメソッドのパラメータにセットしてみると…

Set rngPvt = Intersect(.Range("B2:F10"), .Range("C3:E9"), .Range("D5:D7"))

Intersect、重なる、3つ、結果
ちゃんと、3つの範囲が交差した範囲を返してくれますね。

交差しない範囲の場合

最後はこちら。

こちらの範囲Hと範囲Iは、交差していません

Intersect、重ならない

Intersectメソッドを使ってみると…

Set rngPvt = Intersect(.Range("B3:B6"), .Range("D1:D4"))

Intersect,Nothing,重ならない
この通り、交差する範囲が無いので、Nothingが返ってきました。
これらの例でわかる通り、Intersectメソッドの返り値がNothingでなければ、パラメータに指定した2つ以上の範囲は重なっているということです。

Worksheet.Changeイベントと組み合わせてみる

では、Intersectメソッドのご紹介が済んだところで、今回の本題へ参りましょう。

前回のおさらい

まずは、前回のコードのおさらいです。

コードがこちら。

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
With ActiveSheet
    .PivotTables("売上").PivotCache.Refresh
End With
Application.EnableEvents = True

End Sub

そしてピボットテーブルとデータソースがこちらです。

ピボットテーブル,データソース

ピボットテーブルはA1セルからD21セルまでをデータソースとし、「売上」という名前をつけてあります。

前回記事でご紹介したコードでは、ピボットテーブルのデータソース範囲外のセルを更新した場合でもWorksheet.Changeイベントが実行されて、イベントに仕込んだピボットテーブルの更新処理が実行されてしまうのでしたね。

ピボットテーブルに関係するセルを更新した時だけ、ピボットテーブルを更新させたい…というのが前回の課題でした。

Intersectメソッドを追加

では、前回のコードに、今回ご紹介したIntersectメソッドを追加してみましょう!

ピボットテーブルが更新されたことが分かるように、「更新したよ」というメッセージが表示できるようにしておきましょう。

前回のWorksheet.Changeイベントに差し込んだコードに、Intersectメソッドを追加したコードがこちら。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngPvt As Range

With ActiveSheet
    Set rngPvt = Intersect(Target, .Range("$A$1:$D$21"))
    If Not rngPvt Is Nothing Then
        Application.EnableEvents = False
        .PivotTables("売上").PivotCache.Refresh
        MsgBox "更新しました!"
        Application.EnableEvents = True
    End If

End With
End Sub

これで、シート上のセルを変更してみましょう!

ピボットテーブルのデータソース範囲変更時のみ処理実行

まずは、ピボットテーブルのデータソース範囲外のセルの値を変更した場合から。

ピボットテーブルのデータソース範囲はA1セルからD21セルまでなので、その範囲外のF15セルを変更してみましょう。

F15セルに値を入力してエンターキーを押すと…

データソース変更

この通り、何も起きませんし、更新したよ!のメッセージも表示されません。

続いて、データソース範囲内のセルの値を変更してみましょう。

C5セルの値を変更してみると…

ピボット更新

この通り、ピボットテーブルが更新されて、メッセージも表示されました。

ピボットテーブルのデータソース範囲内が変更された場合のみ、ピボットテーブルを更新させる、という処理にできていますね!

最後に

今回は、Intersectメソッドを使って、ピボットテーブルのデータソース範囲のセルが変更されたときのみピボットテーブルを更新する、という方法をご紹介しました。

このIntersectメソッドは、今回のようにイベントの実行トリガー以外にも便利な用途が沢山ありますよ。

それでは、最後までお読みいただきありがとうございました!

初心者向けJupyter NotebookでPythonを動かす最初の一歩

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。

前回の記事はこちら!

Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。今回は対話型ブラウザ環境Jupyter Notebookとそのはじめかたについてお伝えします。

Jupyter Notebookとは何か、またそのはじめかたについてお伝えしました。

さて、今回はJupyter NotebookでPythonを動かして、その操作感や全体像をつかんでいきましょう。

ということで、初心者向けJupyter NotebookでPythonを動かす最初の一歩です。

では、行ってみましょう!

新しいノートブックを作成する

Jupyter Notebookでは「ノートブック」という単位でスクリプトの編集や実行、記録などを行っていきます。

なので、まずは新規のノートブックを作る必要がありますね。

Jupyter Notebookのダッシュボードで、右上の「New」のメニューを開き、「Python 3」を選択します。

Jupyter Notebookで新しいノートブックを作成する

すると、ブラウザで新しいタブに以下のような画面が開きます。

Jupyter Notebookの新しいノートブックを開いたところ

これが新しいノートブックで、スクリプトの編集や実行、メモの記述などができます。

ノートブックの名前は「Untitled」ですね。

Pythonのスクリプトを入力・実行する

セルとエディットモード

では、この新しいノートブックにスクリプトを入力・実行していきましょう。

下図の赤枠で囲った部分ですが、左側に「In [ ]:」と表示されていて、枠内の入力欄は文字入力可能になっています。

この枠を「セル」といいます。

Jupyter Notebookのエディットモードのセル

今、セルの左側は緑色のラインで、編集可能になっています。このモードをエディットモードといいます。

では、セルに以下のコードを入力してみましょう。

print('Hello Jupyter!')

Jupyter Notebookでセルにコードを入力

セルのスクリプトを実行する

では、この入力したコードを実行してみましょう。

入力が完了したら Shift + Enter を押下してみてください。

すると、実行したセルは「In [1]」という表記になり、print文の結果がその下に表示されます。

さらに、次のセルが追加・選択されますね。

Jupyter Notebookでセルを実行する

Shift + Enter現在のセルを実行して、次のセルに移るショートカットキーです。

続くセルを入力・実行する

では、次のセルに以下のコードを入力してみましょう。

for char in 'Hello Notebook!':
    print(char, end='\t')

セルには複数行のスクリプトを入力することができます。

入力が完了したら、今度は Ctrl + Enter としてみましょう。

すると、以下のような結果になるはずです。

Jupyter Notebookで続くセルを実行する

選択セルが実行され「In [2]」となり、for文と内部のprint文の結果が表示されます。

今度は次のセルに選択が移りませんね。

Ctrl + Enter現在のセルを実行するのみのショートカットキーです。

セルを修正して再実行する

セルは再編集をすることができます。

例えば先ほどのfor文内のprint文ですが、以下のように「\t」を「\n」に変更してみます。

for char in 'Hello Notebook!':
    print(char, end='\n')

再度、Ctrl + Enter としてみましょう。

その結果がこちらです。

Jupyter Notebookで修正したセルを再実行

選択セルが実行され「In [3]」となり、修正後のセルの実行結果が上書き表示されます。

「In [3]」の番号はそのセルが何番目に実行されたセルかを表しますね。

このように、Jupyter Notebookはセル単位で入力、編集、実行をすることができます。

特徴的ですよね。

スクリプトを最初から実行する

エディタでスクリプトを実行するように、すべてのセルを最初から全部実行したいときは「Kernel」メニューの「Restart & Run All」を選択します。

Jupyter Notebookですべてのセルを実行する

すると、ダイアログで、以下のようなメッセージが表示されます。

Restart kernel and re-run the whole notebook?
Are you sure you want to restart the current kernel and re-execute the whole notebook? All variables and outputs will be lost.

「現在のカーネルを再起動してノートブック全体を再実行してもよろしいですか?すべての変数と出力は失われます。」と言われます。

まあ、OKなので、「Restart & Run All Cells」を選択します。

Jupyter Notebookの全てのセル実行の確認

すると、以下のようにノートブックの最初のセルから実行がされます。

Jupyter Notebookの全てのセルの実行結果

「In [ ]」の番号も1から採番し直されているのが確認できますね。

まとめ

以上、初心者向けJupyter NotebookでPythonを動かす最初の一歩についてお伝えしました。

セル単位で入力、編集、実行ができるというのがJupyter Notebookの最大の特徴です。

「Restart & Run All」でノートブック全体を実行することももちろん可能です。

さて、次回ですが引き続きJupyter Notebookの使い方について紹介していきますね。

どうぞお楽しみに!

連載目次:ノンプロPython~Jupyter Notebookの使い方

Python初心者のノンプログラマーがAnacondaをベースに開発環境を作るなら、ぜひこちらも使ってもらいたい「Jupyter Notebook 」。このシリーズでは、その基本や使い方についてお伝えしていきます。
  1. Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
  2. 初心者向けJupyter NotebookでPythonを動かす最初の一歩

【エクセル】フォームコントロールのチェックボックスを使ってみよう!

$
0
0
eyecatch,formcontrol,checkbox

皆様こんにちは、ノグチです。

会社のアンケートや書類はエクセルで作っている、というケースは多いかと思います。

そんなドキュメント類の中で、選択肢の中から選択したり、YES/NOを記入するものがありますよね。

そんな場合、どうやって記入していますか?

図形の丸を挿入して、回答の真上に移動させる?

あるいは、解答欄に「◯」と記入する?

そんなときはチェックボックス、使ってみませんか?

ということで今回は、エクセルのチェックボックスの使い方をご紹介します!

エクセルのチェックボックスは二種類ある

エクセルに挿入できるチェックボックスは、「フォームコントロールのチェックボックス」と「ActiveXコントロールのチェックボックス」の2種類があります。

こちらが「フォームコントロールのチェックボックス」。

フォームコントロール,チェックボックス

そしてこちらが「ActiveXコントロールのチェックボックス」。

activex,チェックボックス

見た目はチェックする部分が平面と立体であったり、デフォルトのテキストが日本語表記と英語表記であったりと、違いがちらほらとありますね。

見た目以外にも違いが色々とありますので、本記事では「フォームコントロールのチェックボックス」を、次回記事では「ActiveXコントロールのチェックボックス」をご紹介していきますよ。

フォームコントロールのチェックボックス

チェックボックスをワークシートに挿入する

まずは、フォームコントロールのチェックボックス。

このチェックボックスをワークシートに追加するには、「開発」>「挿入」> 「フォームコントロール」からチェックボックスを選択すれば、ワークシート上の任意の場所にチェックボックスを配置することができます。

チェックボックス,配置

チェックボックスをワークシートに配置したとき、チェックボックスと右側のテキスト全体が線で囲まれていますね。

コントロール,範囲

本来は「チェックボックスのフォームコントロール」と呼ぶのでしょうが、長いので本稿ではこの点線で囲まれた範囲を「コントロール」と短縮して呼ぶことにします。

チェックボックスのテキストを入力する

チェックボックスを配置すると、小さなチェックボックスと、「チェックx(xは数値)」というテキストが表示されます。

この「チェックx」の部分のテキストは任意のテキストに変更することができま

テキスト編集

チェックボックスのコントロールにマウスカーソルを合わせて右クリック>「テキストの編集」を選択するか、右クリック後、コントロールが選択されている状態で、テキストのあたりをクリックすれば、テキストが編集できるようになります。

チェックボックスを他のセルと連動させる

チェックボックスとリンクさせるセルを指定する

チェックボックスのチェック有無は、他のセルと連動させることができますよ

チェックがつけられたら「TRUE」チェックが外されたら「FALSE」の値を、指定のセルに出力することができます。

設定方法は、コントロールを右クリック>「コントロールの書式設定」をクリックします。

「コントロールの書式設定」というウインドウが開くので、「コントロール」タブの「リンクするセル」に、連動させたいセルを指定しましょう。

連動セル指定

今回は、C7セルを指定しました。

「OK」をクリックしてウインドウを閉じたら設定完了です。

チェックボックスとセルを連動させる

試しにチェックボックスにチェックを入れてみましょう。

セル連動,チェック,True

先ほどコントロールの書式設定ウインドウで指定したセルに、「TRUE」という値が表示されましたね。

では、チェックボックスのチェックを外してみましょう。

セル連動,チェック,False

すると、今度は先ほど指定したセルに、「FALSE」の値が表示されています。

このように、チェックボックスのチェックON/OFFを、任意のセルにTRUE又はFALSEという値で出力する=連動させることができるのです。

セルからチェックボックスを連動させる

チェックボックスからセルへ値を出力する方法をご紹介しましたが、逆のこともできますよ。

コントロールの書式設定で指定したセルに、TRUE又はFALSEの値を入力することによって、チェックボックスのON/OFFを指定することができます。

実際に試してみましょう。

チェックボックスを外した状態で、C7セルに「TRUE」と入力すると…
セル連動,チェック

この通り、チェックボックスにチェックがつきました。

C7セルに「FALSE」を入力すれば、今度はチェックボックスのチェックを外すこともできますよ。

この方法を使えば、まったく別のセルの値によってチェックボックスのON/OFFを制御することもできますね。

マクロを実行するトリガーにもなる

チェックボックスから、マクロを実行することもできますよ。

コントロールを選択した時の右クリックで表示されるメニューの中に、「マクロの登録」という項目があります。

この項目を選択すると、このようにマクロの登録画面が開いて、「チェックボックス名_Click」というマクロ名が表示されます。

チェックボックス,マクロの登録

この表示されている「チェックボックス名_Click」を選択して「新規登録」をクリックすれば、チェックボックスをクリックした時に実行されるイベントプロシージャが自動的に作成されて、チェックボックスをクリックした時にVBAで処理をさせることができますよ。

試しに、チェックボックスをクリックした時にメッセージを表示する処理を差し込んでみましょう。

Sub チェック1_Click()
    MsgBox "チェックボックスが操作されました!"
End Sub

上のコードをコントロールに登録して、チェックボックスをクリックしてみると…

チェックボックス,イベント,実行

この通り、チェックボックスの操作でマクロを実行できていますね!

チェックボックスの大きさやテキストフォントは変更できない

ここまでフォームコントロールのチェックボックスをご紹介してきましたが、悲しいお知らせが一つ。

このコントロール、チェックボックスそのものの大きさや、テキストの大きさを変えることができないのです…

「コントロールの書式設定」の「サイズ」タブ内にある「サイズと角度」に、「高さ」と「幅」という、何やら大きさを変えられそうな項目がありますが、この項目は、チェックボックスとテキストを合わせた、コントロール全体の大きさを変えるものです。

チェックボックス,プロパティ,そこじゃない

「違う、変えたいのはそこじゃない。」
と突っ込みたくなってしまいますが、残念ながらどうしようもないようです。

実際にこのチェックボックスを使用する場合は、チェックボックス以外のフォントが大きすぎると、せっかくのチェックボックスが見え難くなってしまうかもしれません。

そうならないように、まわりのフォントの大きさや色とのバランスをとった方がいいでしょう。

最後に

今回は、エクセルの「フォームコントロールのチェックボックス」をご紹介しました。

入力フォームなどをエクセルで作る場合などにとても便利に使える機能ですよね。

次回記事では、「ActiveXコントロールのチェックボックス」をご紹介します。

それでは、最後までお読みいただきありがとうございました!

なぜ、高松でコミュニティ「ノンプロ研」のイベントを開催したのか

$
0
0

宮脇書店総本店

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。

さて、行ってきましたよ!高松!

地方イベントは、大阪、仙台についで3箇所目となります。

ノンプロ研 in 高松「AI時代に元気よく生き残るためのプログラミングとその身につけ方」というタイトルでイベントを開催しました。

ノンプロ研 in 高松「AI時代に元気よく生き残るためのプログラミングとその身につけ方」 (2019/09/14 16:00〜)
# 「AI時代に元気よく生き残るためのプログラミングとその身につけ方」 AI・RPAなどのテクノロジーの発達により、私たちの働き方は大きな変革期を迎えています。2020年からは小学生へのプログラミング学習が必修となったことからもわかるとおり、そのような時代で、元気よくその価値を発揮して働き続けるためのスキルとしてプロ...

今回は、そのレポートをお送りしますね!

ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

ノンプロ研 in 高松「AI時代に元気よく生き残るためのプログラミングとその身につけ方」
AI・RPAなどのテクノロジーの発達により、私たちの働き方は大きな変革期を迎えています。2020年からは小学生へのプログラミング学習が必修となったことからもわかるとおり、そのような時代で、元気よく..

では、行ってみましょう!

なぜ高松でノンプロ研のイベントを開催したのか

高松でのイベントが開催されたのは、何と言っても、2018年3月からノンプロ研に参加されている、高松ご在住のみやさんの存在が大きいです。

みやさんが今回のイベントで登壇された「都会からUターンしてアナログになった浦島花子さんがコミュニティの力で若返った話」でちょうどお話をされていたので、レポートとして紹介させていただければと思います。

毎日3時間の業務を5分に短縮

2018年3月、みやさんが解決したかった業務があり、こんなものでした。

  1. 毎日170の支店から日報がFAXで送られてくる
  2. これを店舗ごとに並び替える
  3. その後、エクセルシートに打ち込む

こんな業務がありました。この業務に、毎日3時間かかっていたとのこと

…うわぁ…という感じですよね。

これを解決できないか…最初は、弊社の問い合わせフォームに開発依頼としてお問い合わせをいただきました。

少しメールでやり取りをするとExcelファイルをメールで集めてそれを集計するという方向でできそうとのこと、そして出張のタイミングでコミュニティのもくもく会に参加できそうなのでそれに興味があるとのことでした。

開発案件としてお受けすることも可能ですが、ご自身でVBAスキルを磨いて、ツールを作って運用できれば、それが一番!

とはいえ、距離感がありますので、「1ヶ月だけご入会いただくという方法もありますよ」と提案させていただきました。

そして、ノンプロ研に入会、その後東京に出張されてもくもく会にご参加いただきました。

みやさん、そのような機会も活用して頑張られた結果、VBAで以下のようなツールを開発されました。

  1. メールで送られてくるExcelを取り込む
  2. 集計する
  3. まだ来てない支店に催促メールを送る

なんと毎日3時間かかっていた業務が、5分に短縮できたそう。

そのあたりの経緯は以下のブログにもまとめられています。

私がノンプロ研に入った理由 : コンピューターお母ちゃんのブログ
私がノンプロ研に入った理由を紹介します。うちの会社の支店数は170ほどあります。事務作業は、毎日FAXで日報情報を受け取って、手で並べて、打ち込んで・・・打ち込む時間だけでも3時間ほどかかります。数字をひたすら写して打つって、とても生産性がないんですよね

この事案のすごいことは、コミュニティにリモート中心の参加+出張でのもくもく会参加でクリアされたことなんですよね。

ノンプロ研 in 高松、イベント始動

さて、そんなみやさんですが、そのツールを開発した後も、結局ずっとノンプロ研に入会されたまま。

距離があるのでSlackやTwitterでのやり取りが基本になりますが、可能な範囲で土日に開催されたファミプロや、分科会「情シスNight」などもご参加いただきました。

そして、2019年の6月にSlackでこんなお声がけされます。

いつも東京に行ってばかりなので、四国に来たい人いませんか~?

もしかすると仙台のイベント開催の様子をご覧いただいていたかも知れませんが、どうだったかな?

仙台に初上陸!「ノンプログラマーのためのスキルアップ研究会&もくもく会」を開催しました
ノンプロ研、仙台に初上陸!「ノンプログラマーのためのプログラミングスキルアップセミナー&もくもく会 in 仙台」というイベントを開催しました。今回は、開催にいたった経緯、イベントレポートについて書いております。

そんなん、行くでしょ!

ということで、Slackに四国イベント専用チャンネルを作って準備を開始。

とはいえ、現地にいるみやさんには、会場の確保の準備から、イベントの告知宣伝、参加者の送迎、懇親会のケータリングまで、何から何までご準備いただきました。

今回会場となった宮脇書店総本店さまの展示もいただきました。

私の書籍とともに、チラシも置いていただいて…感謝!

ノンプロ研イベント特別展示

宮脇書店さまのサイトでイベントページも作成いただきました。

ノンプロ研 in 高松 ~AI時代に元気よく生き残るためのプログラミングとその身につけ方~ | イベント&フェア | 本なら何でもそろう 宮脇書店
ノンプロ研 in 高松 【事前申込制】 ~AI時代に元気よく生き残るための プログラミングとその身につけ方~ コミュニティ「ノンプログラマーのためのスキルアップ研究会」 主宰のタカハシノリアキさんがやってきま...

ノンプロ研メンバーも岡山、兵庫、東京から会場参加、Zoomリモートでもたくさんの応援が集まりました。

結果、connpassページと店頭申込で計17名の方が参加されました。

この人数は、ノンプロ研の地方イベントでは過去最高の参加者数です。素晴らしい!

論語に学ぶコミュニティ運営

ノンプロ研はオフラインイベントが盛んなコミュニティなので、どうしても関東近郊のメンバーが中心になりがちです。

ですが、みやさんをはじめ、地方でも熱く参加いただいている皆さんに本当に感謝です。

それも踏まえて、今回のイベントのプレゼンについて準備をする中、「論語」の一節にたどり着きました。

イベントのプレゼンでも少し触れたのですが、紹介します。

子曰。學而時習之。不亦説乎。
有朋自遠方來。不亦樂乎。
人不知而不慍。不亦君子乎。

書き下し文はこちらです。

子曰く、学びて時に之(これ)を習う。亦(また)説(よろこ)ばしからずや。
朋有り(ともあり)、遠方より来る。亦楽しからずや。
人知らずして慍(いきど)おらず、亦君子ならずや。

さらに噛み砕くとこういうことです。

学んで、それを常に練習する、そうして理解が深まるのは嬉しいことです。
そんなふうに学んでいると、同じく学びを志す友人が、遠方からもやってくるようになるので、それは本当に楽しいことです。
世間はそれを認めてくれないこともあります。それでも、不満を持ったりしないのは、立派なことです。

これを読んで、「『論語』なんかノンプロ研ぽいぞっ!」と思ったんです。

ノンプログラマーがVBAやGASを学んで、生産性をガツンと改善しても、会社ではすぐには認めてもらえないかも知れません。

市場価値も期待以上にめちゃくちゃ上がるわけでもないかも知れません。

それでも、「働く」を良くするために、学び続ける中で、一緒に学ぶ仲間は少しずつ集まっています。

遠方であったとしても集まるときは集まります。

そして、不満を持たずに、学びを楽しんでいます。

学ぶ仲間が集まり、お互い刺激し合いながら、ハッピーを目指す。すごく良いことだと思います。

まとめ

さて、ノンプロ研 in 高松「AI時代に元気よく生き残るためのプログラミングとその身につけ方」についてのレポートをお送りしました。

自分のパート「AI時代!すべての人がプログラミングを武器にすべき理由とその身につけ方」についてはほとんどレポートしていませんね…また機会があれば、どこかでお話したいと思います。

地方展開はすごく辛抱が必要ですが、需要や可能性はすごく感じます。

また、高松はもちろん、大阪、仙台ほか、いろいろな地域でできる限り種まきをしたいと思います。

そして、こんな活動に賛同いただける方がいらっしゃれば、ぜひ勇気を出して、仲間になっていただければと思います。

お待ちしております!!

「ノンプログラマーのためのスキルアップ研究会」について

コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。
コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」(略して「ノンプロ研」)。このページはその活動レポートまとめページです。コミュニティ活動の一気読みをされたい方、ぜひご活用くださいませ。
ぜひ、皆様のご参加をお待ちしております!
コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。

【ノンプロPython】Jupyter Notebookのノートブック名の変更とシャットダウンについて

$
0
0
shutdown

photo credit: Chetiya Sahabandu 603A6669 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。

前回の記事はこちら!

初心者向けJupyter NotebookでPythonを動かす最初の一歩
Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。今回は、初心者向けJupyter NotebookでPythonを動かす最初の一歩です。

Jupyter NotebookでPythonのスクリプトを実行する方法をお伝えしました。

さて、Jupyter Notebookでは、作成したコードや実行した結果は自動保存されます。

ただ、名前が「Untitled」…

そして、ノートブックはシャットダウンしてあげる必要があります。

ということで、今回は、Jupyter Notebookでノートブックの名前の変更をする方法とシャットダウンについてお伝えします。

では、行ってみましょう!

ノートブックの名前を変更する

では、ノートブックの名前の変更から見ていきましょう。

ノートブックを開いている状態であれば、ノートブックのタイトルをクリックします。

Jupyter Notebookでノートブックのタイトルをクリック

すると「Rename Notebook」というダイアログが表示されるので、新しいノートブック名を入力して「Rename」をクリックします。

今回は「Hello Jupyter」としてみました。

Jupyter Notebookでノートブック名を変更する

ダッシュボードに戻ってファイル名を確認すると、ファイル名が「Hello Jupyter.ipynb」となっていることを確認できます。

Jupyter Notebookでノートブック名の変更を確認する

また、ローカルのユーザーフォルダをエクスプローラーで確認すると、「Hello Jupyter.ipynb」というファイルが存在していることを確認できます。

エクスプローラーでJupyter Notebookのファイルを確認する

ちなみにノートブックは「.ipynb」という拡張子のファイルとして保存されますが、これは「iPython Notebook」の略ですね。

ノートブックをシャットダウンする

Jupyter Notebookのカーネルとは

さて、再度ダッシュボードに戻ります。

すると、「Hello Jupyter.ipynb」の右側に「Running」と書いてありますね。

Jupyter Notebookで実行中のノートブック

これは、このノートブックが実行中であることを表していて、実はタブを消しても実行が停止するわけではありません。

停止をするには、カーネルをシャットダウンする必要があります。

カーネルというのは、Jupyter Notebookのプログラムを実行する機能のことです。

ノートブックを終了するには、そのノートブックに対応するカーネルをシャットダウンする必要があります。

カーネルをシャットダウンする

では、カーネルをシャットダウンしていきましょう。

ノートブックのタブを開いているのであれば、メニューの「Kernel」→「Shutdown」と選択します。

Jupyter Notebookでノートブックをシャットダウンする

「Shutdown kernel?」というダイアログが表示されますので、「Shutdown」をクリックします。

Jupyter Notebookでカーネルをシャットダウンする

すると、ノートブックの右上の部分に「No kernel」と表示されます。

ノートブックを実行するkernelが終了しました。

Jupyter Notebookでカーネルが終了

ダッシュボードに戻ると、ファイル「Hello Jupyter.ipynb」のアイコンがグレーになっています。

Jupyter Notebookのダッシュボードで起動中か確認する

実行中はアイコンは緑色でしたね。

カーネルを終了するとアイコンはグレーになります。

ダッシュボードでノートブックをシャットダウンする

ノートブックのカーネルはダッシュボードからもシャットダウンすることができます。

実行中のノートブックにチェックを入れます。

Jupyter Notebookのダッシュボードで起動中のノートブックにチェックを入れる

その後、上部の「Shutdown」ボタンをクリックすると、対象のノートブックのカーネルをシャットダウンすることができます。

Jupyter Notebookのダッシュボードでノートブックをシャットダウンする

まとめ

以上、Jupyter Notebookのノートブックの名前の変更とシャットダウンについてお伝えしました。

今までのソフトと少し使い勝手が違うように思えるかも知れませんが、使っているうちに慣れますので、気にせずどうぞ。

今回はJupyter Notebookのノートブックがローカルにどう保存されているかと、カーネルとは何かについて押さえておいてくださいね。

次回も、Jupyter Notebookの機能を紹介していきますね。

どうぞお楽しみに!

連載目次:ノンプロPython~Jupyter Notebookの使い方

Python初心者のノンプログラマーがAnacondaをベースに開発環境を作るなら、ぜひこちらも使ってもらいたい「Jupyter Notebook 」。このシリーズでは、その基本や使い方についてお伝えしていきます。
  1. Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
  2. 初心者向けJupyter NotebookでPythonを動かす最初の一歩
  3. 【ノンプロPython】Jupyter Notebookのノートブック名の変更とシャットダウンについて

Python初心者向けJupyter Notebookでprint関数・セルの最後の値を出力する方法

$
0
0
printout

photo credit: lungstruck Greenbar via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。

前回の記事はこちら!

【ノンプロPython】Jupyter Notebookのノートブック名の変更とシャットダウンについて
Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。今回は、Jupyter Notebookでノートブックの名前の変更とシャットダウンについてお伝えします。

Jupyter Notebookのノートブック名の変更とシャットダウンについてお伝えしました。

さて、Jupyter Notebookではコードとその結果などさまざまなものをノートブックに含めることができるのが特徴です。

今回は、どのようなものを、どのように表示、出力できるのかを見ていきましょう。

ということで、Python初心者向けJupyter Notebookでprint関数・セルの最後の値を出力する方法についてお伝えしていきます。

では、行ってみましょう!

print関数による出力

まずは、基本のprint関数ですね。

print関数は出力対象を出力する関数です。

print(出力対象)

試しに、Jupyter Notebookのセルに以下のコードを入力して Shift + Enter で実行してみましょう。

number = 123
print(number)

word = 'Jupyter'
print('Hello ' + word)

コードを入力したセルのすぐ下に、print関数で指定した内容が出力されます。

この出力結果もコードとともにノートブックに記録されます。

Jupyter Notebookでprint関数による出力

Jupyter Notebookに限らず、print関数はPythonのコードの確認の基本中の基本になります。

セルの最後の値は出力表示される

Jupyter Notebookであれば、print関数を使わなくてもコードの結果を表示する方法があります。

例えば、次のセルに以下のようなコードを入力して Shift + Enter で実行してみましょう。

number = 123
number

Jupyter Notebookでセルの最後の値を出力

セルの最後の行には変数numberがそのまま記述されているだけですが、その値がOut In[2]という表示とともに出力されました。

では、そのセルを以下のように編集して、再度実行してみましょう。

number = 123
number

word = 'Jupyter'
'Hello ' + word

すると、今度は追加した「’Hello’ + word」という式の結果のみが出力され、変数numberは出力されなくなりました。

Jupyter Notebookではセルの最後の値のみが出力される

このように、Jupyter Notebookではセルを実行すると最後の値のみが出力されるという特性があります。

ただし、セルの最後の値のみになりますので、途中のいくつかの値を同時に表示したい場合はprint関数を使用する必要があります。

表を表示する

Jupyter Notebookでは表やグラフなどを表示するのが得意です。

一例を見ていきましょう。

現時点では意味はわからなくてよいですが、適当なセルに以下のようなコードを入力して実行してみましょう。

import pandas as pd
import seaborn as sns
df = sns.load_dataset('iris')
print(df.sample(n=10))

とあるサンプルデータ表をprint関数により出力せよという内容ですが、実行すると以下のように表形式で出力されます。

Jupyter Notebookでprint関数による表の出力

これはこれで良いといえば良いのですが、以下のようにprint関数を使わずに、セルの最後の値として出力してみます。

import pandas as pd
import seaborn as sns
df = sns.load_dataset('iris')
df.sample(n=10)

すると、以下のようにスタイルされた表として出力されます。

Jupyter Notebookでセルの最後の値として表の出力

このようにJupyter Notebookでは、見やすくスタイリングされた表(またはグラフ)を結果、経過として含めながらノートブックを作成できるというのが魅力の一つとなっています。

まとめ

以上、Python初心者向けJupyter Notebookでprint関数・セルの最後の値を出力する方法についてお伝えしました。

print関数を使う方法と、セルの最後の値を出力する方法とありますので、場合に応じて使い分けていただければと思います。

次回は、コードとその結果以外のものとしてMarkdownによるドキュメントを記述する方法をお伝えします。

どうぞお楽しみに!

連載目次:ノンプロPython~Jupyter Notebookの使い方

Python初心者のノンプログラマーがAnacondaをベースに開発環境を作るなら、ぜひこちらも使ってもらいたい「Jupyter Notebook 」。このシリーズでは、その基本や使い方についてお伝えしていきます。
  1. Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
  2. 初心者向けJupyter NotebookでPythonを動かす最初の一歩
  3. 【ノンプロPython】Jupyter Notebookのノートブック名の変更とシャットダウンについて

Python初心者向けJupyter NotebookでセルにMarkdown記法で入力する方法

$
0
0
markup

photo credit: leyink via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。

前回の記事はこちら!

Python初心者向けJupyter Notebookでprint関数・セルの最後の値を出力する方法
Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。今回は、Jupyter Notebookでprint関数・セルの最後の値を出力する方法についてです。

Jupyter Notebookで出力・表示をする方法についてお伝えしました。

Jupyter Notebookのもうひとつの特徴として、セルにコードだけでなくMarkdownを書くことができるという点があります。

ということで、今回はPython初心者向けJupyter NotebookでセルにMarkdown記法で入力する方法です。

では、行ってみましょう!

Jupyter NotebookでMarkdownを使う

セルのタイプを変更する

Jupyter Notebookのセルには「タイプ」があります。

デフォルトでは、Pythonなどのコードを入力できる「Code」というタイプになっていますが、このタイプを変更することで、コード以外のものをセルに入力ができるようになります。

タイプを変更したいセルを選択している状態で、ツールバーの「Code」となっているプルダウンをクリックします。

プルダウンが開いたら「Markdown」を選択します。

Jupyter Notebookでセルのタイプを変更する

すると、セルの「In [ ]:」という表示がなくなりますね。このセルのタイプが「Markdown」になりました。

セルにMarkdown記法で入力する

では、セルにMarkdown記述で入力をしていってみましょう。

以下のように入力します。

## セルにMarkdown記法で入力する

Jupyter NotebookでセルにMarkdownを入力する

それで、 Shift + Enter で確定してみましょう。

すると、以下のように入力内容が変更されてスタイリングされます。

Jupyter NotebookでセルにMarkdownを入力した

「## 」は見出し2を表す記号です。

セルのタイプをMarkdownにするショートカットキー

では、続くセルに別のMarkdownを入力してみます。

セルのタイプはデフォルトで「Code」になりますので、次のセルのタイプも「Code」です。

プルダウンで毎回変更しても良いのですが、ちょっと面倒なのでショートカットキーを使いましょう。

セルのモードが「コマンドモード」(セルの色が青)のときに、 M キーで、そのセルのタイプを「Markdown」に変更可能です。

セルのモードが「エディットモード」(セルの色が緑)であれば、 Esc キーで、コマンドモードに変更できますので、その後 M キーを使ってください。

なお、コマンドモードで Y キーで、セルのタイプを「Code」に変更できます。

その他のセルのタイプ

セルのタイプは以下のように全部で4種類あります。

  • Code: コードを記述します。
  • Markdown: Markdownのドキュメントを記述します。
  • Raw NBConvert: これはNBConvertという機能に関するものです。これはLatexで数式を記述するのに使います。
  • Heading: Markdownのヘッダー(h1~h6に相当するもの)に変換します。将来的になくなるそうです。

ただ、ノンプログラマーであれば、CodeとMarkdownの2種類で事足りることがほとんどだと思います。

Markdownでいろいろな表現をしてみよう

では、Jupyter NotebookのセルにMarkdownを使ったさまざまな表現をしてみましょう。

続くセルに、以下のように入力して、それぞれ Shift + Enter で確定していってみましょう。

### セルのタイプを変更する

**セルのタイプ**は以下のように全部で4種類あります。

- Code: コードを記述します。
- Markdown: Markdownのドキュメントを記述します。
- Raw NBConvert: これはNBConvertという機能に関するものです。これはLatexで数式を記述するのに使います。
- Heading: Markdownのヘッダー(h1~h6に相当するもの)に変換します。将来的になくなるそうです。

|選択肢|説明|
|:-|:-|
|Code|コードを記述|
|Markdown|Markdownのドキュメントを記述|
|Raw NBConvert|Latexで数式を記述|
|Heading|Markdownのヘッダーに相当(将来的になくなる)|

Jupyter NotebookでMarkdownによるさまざまな表現

なかなか見やすいノートブックになってきましたよね!

Markdownとは

そもそもMarkdownとはなんでしょうか?

Markdownとは「文書を記述するための軽量マークアップ言語」のことです。

Webページを作るときに用いられるHTMLに変換可能なフォーマットで、単純な記号とテキストの組み合わせで、簡単できれいに文書が作ることができます。

以下のように技術系のサービスを中心に、さまざまなサービスがMarkdown記法での入力、投稿ができるように対応しています。

  • GitHub
  • Qiita
  • connpass
  • Dropbox Paper
  • Stack Overflow
  • はてなブログ

このブログもMarkdown記法で投稿できるプラグインを使用しています。

Jupyter Notebookもそのサービスの一つということですね。

では、具体的にどのような記法で、どのような表示になるのか、その代表的なものを見ていきましょう。

見出し

まず、重要な役割を果たす見出しです。

複数のハッシュ記号「#」の後に半角スペース、その後にテキストで見出しを表現します。

ハッシュ記号の数で見出しの大きさを表します。1が最も大きくて、6が最も小さい見出しとなります。

# 見出し1
## 見出し2
### 見出し3
#### 見出し4
##### 見出し5
###### 見出し6

Jupyter NotebookでMarkdownの見出し

強調・斜体・引用・インラインコード

強調はアスタリスク2つ、斜体はアスタリスク1つで囲みます。

ただし斜体は半角のみで機能するので、日本語には使えません。

引用は大なり記号「>」の後に半角スペース、その後にテキストです。

インラインコードはバックダッシュ「`」で囲みます。

**強調**はアスタリスク2つではさみます。

*Italic*はアスタリスク1つではさみます。

インラインコードは`Inline Code`はバックダッシュではさみます。

> 引用は大なり記号、半角スペースに続けます。

Jupyter NotebookでMarkdownの強調・斜体・引用・インラインコード

リスト・番号付きリスト

リストつまり箇条書きは、ハイフン「-」、半角スペースに続けて記述します。

段階を作りたい場合には、タブでインデントを付与します。

番号付きリストは、半角数字、ピリオド「.」、半角スペースに続けて記述します。

段階を作りたい場合は、リストと同様にタブでインデントをします。

- リスト1
- リスト2
    - リスト2-1
    - リスト2-2
- リスト3


1. 番号付きリスト1
2. 番号付きリスト2
    1. 番号付きリスト2-1
    2. 番号付きリスト2-2
3. 番号付きリスト3

Jupyter NotebookでMarkdownの箇条書き

を作るには、パイプ記号「|」を使います。

最初に見出し行、続いて見出しと内容の間にハイフン「-」だけの行、その下に必要な分だけ内容の行を続けます。

|見出し1|見出し2|
|-|-|
|内容1-1|内容1-2|
|内容2-1|内容2-2|

Jupyter NotebookでMarkdownの表

まとめ

以上、Python初心者向けJupyter NotebookでセルにMarkdown記法で入力する方法をお伝えしました。

今回はMarkdownタイプのセルしか入力していませんが、Codeタイプのセルやその実行結果とMarkdownを混在させたノートブックを作ることが可能です。

つまり、コードの入力と実行をして、その結果を踏まえて、Markdownでドキュメント化してレポートを作成する…といった一連の作業を、Jupyter Notebookだけで完結できるのです。画期的ですよね!

さて、次回もJupyter Notebookの機能について紹介していきますね。

どうぞお楽しみに!

連載目次:ノンプロPython~Jupyter Notebookの使い方

Python初心者のノンプログラマーがAnacondaをベースに開発環境を作るなら、ぜひこちらも使ってもらいたい「Jupyter Notebook 」。このシリーズでは、その基本や使い方についてお伝えしていきます。
  1. Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
  2. 初心者向けJupyter NotebookでPythonを動かす最初の一歩
  3. 【ノンプロPython】Jupyter Notebookのノートブック名の変更とシャットダウンについて
  4. Python初心者向けJupyter Notebookでprint関数・セルの最後の値を出力する方法

【エクセル】ActiveXコントロールのチェックボックスを使ってみよう!

$
0
0

エクセル,activeX,チェックボックス

皆様こんにちは、ノグチです。

前回記事では、エクセルのフォームコントロールのチェックボックスをご紹介しました。

【エクセル】フォームコントロールのチェックボックスを使ってみよう!
エクセルの、フォームコントロールのチェックボックスのご紹介をしています。見た目だけでなく、チェックボックスの値を、別のセルに出力したり、別のセルからチェックボックスのON/OFFを操作できたりします。使い方を知れば、とっても便利に使える機能ですよ。

入力フォームの見た目としてだけでなく、他のセルにチェックボックスのON/OFFを出力できたり、チェックボックスをクリックした時にマクロを実行させたりできるなど、便利な使い道がありました。

今回は、前回記事で名前だけご紹介をした、ActiveXコントロールのチェックボックスをご紹介します。

ActiveXコントロールのチェックボックス

ワークシートに挿入する

ActiveXのチェックボックスをワークシートに挿入するには、「開発」>「挿入」> 「ActiveXコントロール」からチェックボックスを選択します。

ActiveXコントロール,挿入

「CheckBox1」というテキストとチェックボックスが、ワークシート上に表示されますね。

エクセル,チェックボックス,挿入

前回記事と同じように、本記事でもワークシートに表示されている、線で囲まれたテキストとチェックボックス全体を「コントロール」と呼ぶことにしましょう。

ActiveXのコントロールはデザインモードでカスタムする

チェックボックスに限らず、ActiveXコントロールに変更を加える場合は、デザインモードにしておく必要があります。

デザインモードは、メニューの「開発」タブにある「デザインモード」をクリックすると、メニュー上のデザインモードの背景色が薄いグレーになり、ActiveXコントロールに変更を加えることができるようになります。

エクセル,デザインモード

このデザインモードにしておかないと、ActiveXコントロールの大きさやテキストの変更といったコントロールへの変更が出来ません。

ActiveXコントロールに変更を加えたい場合は、まずこのデザインモードをONにしておきましょう。

デザインモードを解除したい場合は、 「開発」タブの「デザインモード」をもう一度クリックすればOKです。

テキストを変更する

コントロールがワークシートに表示されたとき、「CheckBoxN」(Nは数字)というテキストが表示されていますね。

このテキストは、任意の名称に変更することができます

デザインモードにしてから、コントロールにマウスカーソルを合わせて右クリック>「チェックボックス オブジェクト」>「編集」をクリックすると、テキストが編集できるようになります。

チェックボックス,テキスト編集

今回は、「チェックボックス123」というテキストに変更しておきましょう。

チェックボックス,テキスト

フォントやチェックボックスのサイズを変更する

プロパティシートでカスタマイズできる

コントロールのテキストを変更するには、プロパティシートから変更する方法もあります。

コントロールを右クリック>「プロパティ」をクリックすると、コントロールのプロパティシートが開きます。

チェックボックス,プロパティシート

色々な項目がありますね。

代表的な項目を挙げてみましょう。

プロパティ項目 設定内容
Alighnment コントロール内でチェックボックスを左右どちらに配置するかを設定します
BackColor コントロールの背景色を設定します
Caption コントロールのテキストを変更します
Font コントロールのテキストフォントを変更します
ForeColor コントロールのテキスト色を変更します
LinkedCell チェックボックスのチェック結果を出力するセルを指定します
Height コントロール全体の高さを設定します
Width コントロール全体の幅を設定します
TextAlighn コントロール内でテキストを左右・中央のいずれに配置するかを設定します

フォームコントロールと比較すると、テキストフォントや配置といった項目を細やかにカスタマイズできるようになっていますね。

マクロ実行のトリガーになる

フォームコントロールのチェックボックスと同様、ActiveXコントロールのチェックボックスも、チェックボックスのON/OFF操作によってマクロを実行することができます

コントロール上で右クリック>「コードの表示」をクリックするとVBEの画面が開き、チェックボックスを配置したワークシートのシートモジュール上に「CheckBox数字_Click」というイベントプロシージャが自動的に作成されます。

チェックボックスをクリックした時に実行させたい処理は、このプロシージャ内に書き込むことができますよ。

VBE,プロシージャ

試しに、チェックボックスがクリックされたらメッセージを表示させてみましょう。

プロシージャ内にメッセージを表示させる処理を追加して…

Sub チェック1_Click()
    MsgBox "チェックボックスが操作されました!"
End Sub

チェックボックスをクリックしてみると…

エクセル,メッセージ

この通り、マクロが実行されてメッセージが表示されました。

ActiveXコントロールのチェックボックスができないこと

チェックボックスのサイズ変更

ActiveXコントロールも、フォームコントロールのチェックボックスと同様、コントロール全体のサイズは変えられてもチェックボックス自体の大きさを変えることはできません

やはり、周りの背景色やフォントの大きさなどのレイアウトで、チェックボックスが埋もれてしまわないようにバランスをとる必要がありそうです。

フォームコントロールのチェックボックスとの違い

フォームコントロールとActiveXコントロールのチェックボックスの違いをざっくりまとめると、こんな感じです。

項目 フォームコントロール ActiveXコントロール
フォント 変更不可 変更可
VBAコード 標準モジュールに自動生成される シートモジュールに自動生成される
コントロール内のテキスト配置 変更不可 変更可
別セルとの連動
コントロールへの変更 デザインモード状態のみ可

フォームコントロールとActiveXコントロールのチェックボックスは見た目はほぼ変わりませんが、フォントが変えられたり、テキストの配置が変えられたりと、Activexコントロールの方が細かいカスタマイズができますね。

しかし、デザインモードへ切り替えずにコントロールを変更できることや、書式設定でサイズや別セルとの連動が設定できるという、操作の気軽さではフォームコントロールに軍配が上がります。

プロパティシートでの設定は、細かい項目を設定できる反面、各項目名が日本語でないということで、人によっては設定のハードルが少し上がるでしょう。

入力フォームの見た目としてチェックボックスを使いたい、チェックボックスのON/OFFが分かれば十分、という事であればフォームコントロールを、見た目やチェックのON/OFFによって動作をカスタムしたい!ということであればActiveXコントロールのチェックボックスを使うというように、用途によって使い分けするとよいかもしれませんね。

最後に

今回は、ActiveXコントロールのチェックボックスをご紹介しました。

見た目は同じでも、蓋を開けてみると違いがありますね。

自分のやりたいことと、フォームコントロール・ActiveXコントロールそれぞれの特性を比べて、より使いやすい方を使えるようになるとよいですね。

それでは、最後までお読みいただきありがとうございました!

Python初心者向けぜひ覚えておきたいJupyter Notebookのショートカットキーまとめ

$
0
0
short-cut

photo credit: Nicholas Erwin The Alley Between the Diner via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。

前回の記事はこちら!

Python初心者向けJupyter NotebookでセルにMarkdown記法で入力する方法
Python初心者のWindowsユーザー向けにAnacondaをベースにした開発環境についてお伝えしています。今回はJupyter NotebookでセルにMarkdown記法で入力する方法をお伝えします。

Jupyter NotebookでセルにMarkdownによる記述をする方法をお伝えしました。

さて、Jupyter Notebookではノートブックの編集や操作を行うためのさまざまなショートカットキーが用意されています。

エディットモード、コマンドモードで使えるショートカットキーが異なりますので、両方を紹介していきますよ!

ということで、Python初心者向けぜひ覚えておきたいJupyter Notebookのショートカットキーまとめです。

では、行ってみましょう!

エディットモード

エディットモードとは

エディットモードとはセルの入力や編集を行うためのモードです。

エディットモードのときは、セルが緑色になっていて、セルに入力をしたり、セルの内部を編集したりできます。

Jupyter Notebookのエディットモード

セルの枠内をクリックしたり、 Enter キーを押したりすると、エディットモードに入ります。

入力補完

エディットモードのショートカットキーで重要なもののひとつに入力補完があります。

例えば、セルをエディットモードにして「pr」と入力した時点で Tab キーを押してみましょう。

すると、以下のように「pr」ではじまる候補がプルダウンで表示されます。

Jupyter Notebookの入力補完

上下キーで選択して Enter で確定することができます。

VS Codeなどの入力補完と比べると少し遅くて、機能も弱いですが、使わないよりは断然よいので、ぜひ活用しましょう。

その他のおすすめエディットモードのショートカットキー

その他のエディットモードのショートカットキーについておすすめをお伝えします。

どれもとてもよく使うと思いますので、ぜひ練習してくださいね。

ショートカットキー 説明
Esc コマンドモードへ
Ctrl + / コメントイン・コメントアウト
Ctrl + D 一行削除する
Ctrl + または 単語単位で移動する
Shift + Tab ドキュメントを表示

その他、コピー、カット、ペースト、アンドゥ、リドゥ、全選択などは、他のソフトウェアと同様のショートカットキーを使えますよ!

コマンドモード

コマンドモードとは

コマンドモードは主にノートブックの操作を行うモードです。

コマンドモードのときは、セルの色が青色になっています。

Jupyter Notebookのコマンドモード

エディットモードであれば Esc キーでコマンドモードに抜けることができます。

セルのタイプを変更する

前回の記事でもお伝えしましたが、セルのタイプについてCodeやMarkdownなどから選択することができます。

これにもショートカットキーが対応していて、目的のセルを選択している状態で、以下のショートカットキーでタイプを変更可能です。

ショートカットキー 説明
y セルのタイプをCodeに変更する
m セルのタイプをMarkdownに変更する

かなり頻繁に使用すると思うので、プルダウンではなく、ショートカットキーを使うべきですね。

その他のおすすめコマンドモードのショートカットキー

コマンドモードのおすすめショートカットキーを紹介します。

ショートカットキー 説明
c セルをコピーする
x セルをカットする
v セルをペーストする
dd セルを削除する
a 上にセルを追加する
b 下にセルを追加する
h ショートカットキー一覧を表示
Space 下にスクロールする
Shift + Space 上にスクロールする
Enter エディットモードに入る

エディットモードのものに比べると、真新しいものが多いので、意識して練習しないといけないかも知れませんが、どれもとても便利なので、ぜひマスターしてみてください。

セルの実行

Jupyter Notebookはセル単位で自由に実行ができるのが特徴的です。

セルの実行に関するショートカットキーは3種類あり、エディットモード・コマンドモードで共通のものを使用できます。

ショートカットキー 説明
Ctrl + Enter セルを実行する
Shift + Enter セルを実行して次のセルを選択する
Alt + Enter セルを実行して次のセルを挿入する

実行した上で、次にどこのセルにフォーカスするかみたいなところで使い分けます。

まとめ

以上、Python初心者向けぜひ覚えておきたいJupyter Notebookのショートカットキーまとめについてお伝えしました。

独特なものもいくつかありますが、マスターすればJupyter Notebookでのコーディング&ノートブック操作のスピードが格段に上がると思います。

ぜひご活用くださいね!

連載目次:ノンプロPython~Jupyter Notebookの使い方

Python初心者のノンプログラマーがAnacondaをベースに開発環境を作るなら、ぜひこちらも使ってもらいたい「Jupyter Notebook 」。このシリーズでは、その基本や使い方についてお伝えしていきます。
  1. Python初心者&Windowsユーザー向けJupyter Notebookとそのはじめかた
  2. 初心者向けJupyter NotebookでPythonを動かす最初の一歩
  3. 【ノンプロPython】Jupyter Notebookのノートブック名の変更とシャットダウンについて
  4. Python初心者向けJupyter Notebookでprint関数・セルの最後の値を出力する方法
  5. Python初心者向けJupyter NotebookでセルにMarkdown記法で入力する方法

【GAS×freeeAPI】オブジェクトからデータを取り出してスプレッドシートに書き出す

$
0
0

こんにちは!ITライターのもり(@moripro3)です!

クラウド会計ソフトfreeeのAPIを使って経理業務を自動化するネタをシリーズでお届けしています。

このシリーズでは、freeeとチャットワークを連携して「当日入金予定の取引一覧を自動でチャットワークに送信するツール」を作成します。

成果物のイメージがこちら!入金予定のある日に、自動でチャットワークに通知が届きます。

freeeシリーズ2成果物イメージ

前回の記事では、freeeAPIのレスポンスをオブジェクトに変換して「必要なデータのみを取り出す方法」を紹介しました。

【GAS×freeeAPI】APIリクエストのレスポンスから必要データのみを取り出す
「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第4回目。APIからのレスポンスをオブジェクトに変換して、配列が入れ子になった複雑な構造のオブジェクトから必要データのみを取得する方法を紹介しています。

今回の記事では、オブジェクトからデータを取り出し、スプレッドシートに書き出す方法を紹介します。このようなイメージです。

freeeapi2-5-1

シリーズを通してfreeeAPIを使いこなし、経理業務の自動化を進めていきましょう!

(この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるようサポートしていきます!)

(前回のおさらい)オブジェクトからデータを取り出す

前回の記事では、freeeAPIからのレスポンス(JSON形式の文字列)を、GASで扱いやすい「オブジェクト」に変換し、ドット記法でオブジェクトからデータを取り出しました。

freeeapi2-5-2

ドット記法とは、オブジェクトから値を取り出す記述方法です。オブジェクト名に対して、ドット(.)でプロパティ名を指定します。

オブジェクト名.プロパティ名

取引1件目の金額を取り出す方法です。「dealsプロパティ(配列)」→「amountプロパティ」の順にアクセスします。

Logger.log(obj.deals[0].amount); //86400

このドット記法を今回の記事でも使っていきますよ!

スプレッドシートの準備

このツールでは、下記の6項目をスプレッドシートに書き出します。

  • 発生日
  • 支払期日
  • 金額
  • 取引先ID
  • 勘定科目ID
  • 品目ID

シートの1行目にヘッダーの項目名を入力します。ヘッダー入力は最初の1回のみです。スクリプト実行の都度、2行目以降を書き換えていきます。

freeeapi2-5-3

また、この記事では、シート名を「取引」としておきます。

オブジェクトの受け渡しは必要データのみとする

この項では、取引データをスプレッドシートに書き出す関数を作成します。引数として取引データを受け取ります。

  • 関数名:OutputDeals
  • 引数:取引データ(オブジェクト)

OutputDeals関数は、取引データが存在する場合のみmain関数から呼び出されます。

main関数がOutputDeals関数を呼び出すときのポイントは、freeeAPIからのレスポンスを丸ごと渡すのではなく、dealsプロパティのみを渡すことです。

function main() {
  
  //当日入金予定の取引一覧を取得する
  var response = getDeals();
  
  //JSON形式の文字列をオブジェクトに変換する
  var obj = JSON.parse(response);
  
  //取引件数の確認
  var total_count = obj.meta.total_count;
  
  //取引データが存在する場合のみ、後続の処理を行う
  if (total_count > 0) {
    
    OutputDeals(obj.deals); //※dealsプロパティのみを渡す
    
  }
  
}

受け取る側の変数名は、dealsプロパティのみであることがわかるよう objDeals としておきます。

/**
* freeeAPIから取得した取引データをスプレッドシートに書き出す
*
* @param {object} 取引データ
*/

function OutputDeals(objDeals) {

  //スプレッドシートに書き出す処理

}

オブジェクト(変数obj)を丸ごと渡すのではなく、dealsプロパティを指定して渡す理由をお伝えします。

freeeAPIのレスポンスの中身は下記の構造になっていて、取引データはすべてdealsプロパティに格納されています。

{
    "deals":[
      {
        //取引1件目=要素番号[0]
      },
      {
        //取引2件目=要素番号[1]
      },
      {
        //取引3件目=要素番号[2]
      }
    ],
    "meta":{
      "total_count":3
    }
  }

オブジェクト(変数obj)を丸ごと受け取った場合、取引データはすべてdealsプロパティに入っているにも関わらず、値を取り出すたびに、dealsプロパティを指定しなければなりません。

//取引1件目の6項目を取得する
Logger.log(obj.deals[0].issue_date); //2019-07-01
Logger.log(obj.deals[0].due_date); //2019-08-15
Logger.log(obj.deals[0].amount); //86400
Logger.log(obj.deals[0].partner_id); //18092592
Logger.log(obj.deals[0].details[0].account_item_id); //296536450
Logger.log(obj.deals[0].details[0].item_id); //165676671

あらかじめdealsプロパティのみを受け取っておけば、ドット(.)の連結をひとつ減らすことができます。

//取引1件目の6項目を取得する
Logger.log(objDeals[0].issue_date); //2019-07-01
Logger.log(objDeals[0].due_date); //2019-08-15
Logger.log(objDeals[0].amount); //86400
Logger.log(objDeals[0].partner_id); //18092592
Logger.log(objDeals[0].details[0].account_item_id); //296536450
Logger.log(objDeals[0].details[0].item_id); //165676671

このように、関数を呼び出すときの引数には、オブジェクトを丸ごと渡すのではなく、必要なプロパティのみを指定しましょう。

人間同士で何らかのデータをやりとりする場合も、「とりあえず全部渡すから、必要な部分だけ使ってね」よりも、相手が必要なデータだけに絞って渡してあげるほうが親切ですね。

オブジェクトのデータをスプレッドシートに書き出す

この項ではOutputDeals関数の処理を作成していきます。

支払期日2019-08-15に該当する取引は3件ありました。この3件について、必要な6項目をスプレッドシートに書き出します。

freee支払期日が20190815の取引一覧

実装のポイントは、「どのようにスプレッドシートに書き込むか?」です。

単純に「オブジェクトから値を取り出して、1つずつスプレッドシートに書き込む」と、3件×6項目 = 18 回の書き込み処理が必要です。これでは、取引件数が増えるほど、書き込み回数が増えてしまいます。

当ブログでは、GASの高速化テクニックとして「スプレッドシートへの書き込み回数を減らすこと」を推奨しています。

Google Apps Scriptのスプレッドシート読み書きを格段に高速化をする方法
Google Apps Scriptでスプレッドシートの操作をしていて実行速度が遅い!と感じたことがあると思います。今回はスプレッドシートを操作する場合に処理速度を格段に速くする方法をお伝えします。

そこで、下記の2ステップで処理を作成します。

  • ①オブジェクト(連想配列)から、必要なデータのみを配列に格納する
  • ②配列をスプレッドシートに書き出す

freeeapi2-5-4

こうすることで、取引件数がどんなに多くても、スプレッドシートへの書き込み処理はたったの1回で済むのです!

それではコードを書いていきましょう。

オブジェクト(連想配列)から配列を作成する

まずは①の処理を作成します。「キー」と「値」がペアになったオブジェクト(連想配列)から「値」のみを取り出して配列を作成します。

freeeapi2-5-5

オブジェクト(連想配列)とは、「キー」と「値」がペアになった集合体です。

{キー1 : 値1, キー2 : 値2, キー3 : 値3, ・・・}

オブジェクトから必要な「値」のみを取り出して、配列を作成します。

[値1, 値2, 値3, ・・・]

1件目の取引データから6項目を取得してみます。

取引データのdealsプロパティは配列形式であり、取引件数の分、オブジェクトが並んでいることを前回の記事でお伝えしました。
(配列の要素番号は0から始まるので、1件目の取引データを取得する場合、dealsプロパティに要素番号[0]を指定します)

取引データをすべて取得するためには、要素番号の値を変数にして、取引件数分ループ処理します。

処理の流れは下記の3ステップです。

  1. 空の配列を用意
  2. 取引データの件数分、6項目を取得(value1~value6)
  3. value1~value6を、pushメソッドで配列arrに追加

※勘定科目ID・品目IDについて
detailsプロパティは取引の「明細」です。1件の取引に複数明細が存在する場合、明細の数だけオブジェクトが並びます。ただし、全明細を取得する処理は複雑になってしまうので、このツールでは、details[0]を指定して「最初の1明細」のみを取得することにします。

var arr = []; //空の配列を用意
  
  for(var i = 0; i < objDeals.length; i++) {
    
    var value1 = objDeals[i].issue_date; //発生日
    var value2 = objDeals[i].due_date; //支払期日
    var value3 = objDeals[i].amount; //金額
    var value4 = objDeals[i].partner_id; //取引先ID
    var value5 = objDeals[i].details[0].account_item_id; //勘定科目ID ※明細行1番目
    var value6 = objDeals[i].details[0].item_id; //品目ID ※明細行1番目
    
    //二次元配列を作成
    arr.push([value1,value2,value3,value4,value5,value6]);
    
    Logger.log(arr);
    
  }

ポイントはArrayオブジェクトのpushメソッドです。

pushメソッドとは、配列の末尾に値を追加するメソッドです。追加する値に[配列]を指定することで、配列の追加も可能です。

Arrayオブジェクト.push([配列])

変数arrのログ出力結果です。

freeeapi2-5-7

合計3回ループして、ループ処理のたびに、末尾に配列が格納されていく様子がわかりますね。

配列をスプレッドシートに書き出す

取引3件×6項目の値を格納した二次元配列arrが完成しました。

[[2019-07-01, 2019-08-15, 86400, 18092592, 296536450, 165676671], [2019-06-15, 2019-08-15, 54000, 18092591, 296536450, 165676702], [2019-06-01, 2019-08-15, 108000, 18092590, 296536450, 165676665]]

この変数arrをスプレッドシートに書き出します。②の処理です。

freeeapi2-5-6

まず、getRangeメソッドで配列を書き込むセル範囲を取得します。

Sheetオブジェクト.getRange(行番号, 列番号, 行数, 列数)

つぎに、セル範囲に対して配列をセットするsetValuesメソッドを使用します。

Rangeオブジェクト.setValues(配列)

A2セルを起点として、3行×6列の配列をセットします。

freeeapi2-5-8

配列arrのタテ・ヨコの長さ(length)を、変数i, j に格納しています。

var i = arr.length; //タテ(行数)= 3
  var j = arr[0].length; //ヨコ(列数)= 6
  
  //スプレッドシートのA2セルを起点として、配列arrをセットする
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('取引');
  sheet.getRange(2, 1, i, j).setValues(arr);

実行結果です。1回の書き込み処理で、目的のデータをすべて書き出すことができました。

freeeapi2-5-9

前回データをクリアする

さて、無事に取引データを書き出せて一安心ですが、最後にひとつ処理を加えます。

このツールは、トリガーで毎日実行してスプレッドシートの2行目以降を上書きします。 そこで、データを書き出す前に、いったん前回データをクリアする処理が必要ですね。

OutputDeals関数の冒頭部に、値のクリア処理を加えます。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('取引');
var lastRow = sheet.getLastRow();
  
sheet.getRange(2, 1, lastRow, 6).clearContent();//A列~F列の2行目以降をクリアする

スクリプトまとめ

ここまでで作成したスクリプトのまとめです。getDeals関数についてはシリーズ第3回目の記事をご覧ください。

function main() {
  
  //当日入金予定の取引一覧を取得する
  var response = getDeals();
  
  //JSON形式の文字列をオブジェクトに変換する
  var obj = JSON.parse(response);
  
  //取引件数の確認
  var total_count = obj.meta.total_count;
  
  //取引データが存在する場合のみ、後続の処理を行う
  if (total_count > 0) {
    
    OutputDeals(obj.deals); //※dealsプロパティのみを渡す
    
  }
  
}

/**
 * freeeAPIから取得したデータをスプレッドシートに書き出す
 *
 * @param {object} 取引データ
 */
function OutputDeals(objDeals) {
  
  //前回データのクリア
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('取引');
  var lastRow = sheet.getLastRow();
  
  sheet.getRange(2, 1, lastRow, 6).clearContent();//A列~F列の2行目以降をクリアする
  
  
  var arr = []; //空の配列を用意
  
  for(var i = 0; i < objDeals.length; i++) {
    
    var value1 = objDeals[i].issue_date; //発生日
    var value2 = objDeals[i].due_date; //支払期日
    var value3 = objDeals[i].amount; //金額
    var value4 = objDeals[i].partner_id; //取引先ID
    var value5 = objDeals[i].details[0].account_item_id; //勘定科目ID ※明細行1番目
    var value6 = objDeals[i].details[0].item_id; //品目ID ※明細行1番目
    
    //二次元配列を作成
    arr.push([value1,value2,value3,value4,value5,value6]);
    
  }
  
  //二次元配列をスプレッドシートに書き出す
  var i = arr.length; //タテ(行数)
  var j = arr[0].length; //ヨコ(列数)
  
  //スプレッドシートのA2セルを起点として、配列arrをセットする
  sheet.getRange(2, 1, i, j).setValues(arr);
  
}

まとめ・次回予告

「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第5回目では、これらを紹介しました。

  • 関数を呼び出すときの「引数」には、オブジェクトのプロパティを指定して必要データのみを渡す方法
  • オブジェクトから値を取り出してスプレッドシートに書き出す方法
    →処理高速化のため、スプレッドシートへの書き込み処理は1回のみとする。値を1つずつ書き込むのではなく、必要な値のみを配列に格納し、配列ごとスプレッドシートに書き込むのがポイント!

次回は、スプレッドシートのデータからチャットワーク通知用の本文を作成します。

どうぞお楽しみに!

連載目次:【GAS×freeeAPI】当日入金予定の取引一覧を自動でチャットワークに送信する

「クラウド会計ソフトfreee」のAPIをGASで操作して経理業務を自動化するシリーズ。「当日入金予定の取引一覧を自動でチャットワークに送信するツール」の作成を目標とします。

  1. ノンプログラミングでOK!「会計freee連携アドオン」でスプレッドシートにデータを取得する
  2. 【GAS×freeeAPI】指定条件の取引一覧を取得する「リクエストURL」の作り方と仕組み
  3. 【GAS×freeeAPI】GETリクエストで当日入金予定の取引一覧を取得する
  4. 【GAS×freeeAPI】APIリクエストのレスポンスから必要データのみを取り出す
  5. 【GAS×freeeAPI】オブジェクトからデータを取り出してスプレッドシートに書き出す

【エクセルVBA】ActiveXコントロールのチェックボックスを操作してみよう!

$
0
0

excel,checkbox,vba,eyecatch皆様こんにちは、ノグチです。

前回記事では、ActiveXコントロールのチェックボックスをご紹介しました。

【エクセル】ActiveXコントロールのチェックボックスを使ってみよう!
エクセルにある、フォームコントロールのチェックボックスとActiveXコントロールのチェックボックスのうち、ActiveXコントロールのチェックボックスをご紹介しています。フォームコントロールに比べてフォントやテキストの配置などの項目を変更することができるので、より細かいカスタマイズができますよ!

記事の中で、「チェックボックスをカスタムしたいなら、ActiveXコントロールのチェックボックスがいいかも」とお伝えしました。

そこで今回は、ActiveXコントロールのチェックボックスをVBAで操作する方法をご紹介していきたいと思います。

OLEオブジェクトを取得する

基本的な記述方法

まず最初に、チェックボックスを操作するためのオブジェクト取得からいきましょう。

ActiveXコントロールのチェックボックスは、OLEオブジェクトを取得することで操作することができます。

基本的な記述方法はこちら。

Worksheetオブジェクト.OLEObjects(オブジェクト名またはインデックス番号)
例えば、今開いているシートの、「CheckBox123」という名前のチェックボックスのオブジェクトを取得したい場合は、
ActiveSheet.OLEObjects("CheckBox123")

という風に記述することになります。

オブジェクト名で記述することもできる

ActiveXコントロールのチェックボックスは、コントロールのオブジェクト名を直接コード内に記述してオブジェクトを取得することもできますよ。

コントロールの名前は、デザインモード状態でコントロールをクリックするとシート左上に現れる名前で把握することができす。

チェックボックス,名前,シート

または、デザインモード状態でコントロールを右クリック>プロパティでプロパティシートを開いたとき、一番上にある項目「(オブジェクト名)」という項目の値からでもコントロール名がわかります。
チェックボックス,プロパティシート

例えば、「ChekBox123」というコントロールのオブジェクトを取得したければ、上でご紹介した基本の記述方法のOLEオブジェクト部分をこのオブジェクト名に置き換えればOKです。

例えばこんな風に。

ActiveSheet.CheckBox123

この方法ならシンプルですし、コードが分かりやすくなりますね。

チェックボックスをVBAで操作する

Valueプロパティでチェックボックスの値を取得する

では、チェックボックスのオブジェクトが取得できたところで、色々な操作をしてみましょう。

まずは基本的なところで、チェックボックスのON/OFFの値を取得してみます。

チェックボックスの値は、ONならばTrueOFFならばFalseがセットされています。

こちらの「CheckBox123」というチェックボックスの値を、Valueプロパティで取得してみましょう。

コードはこちらです。

Sub Test_CheckBox123()

With ActiveSheet
    MsgBox .CheckBox123.Value
End With

End Sub

「CheckBox123」というチェックボックスの値を、メッセージで表示させるコードです。
このコードを実行すると…
チェックボックス,メッセージ
この通り、チェックボックスがONになっているので、「True」の値を返してくれていますね。

チェックボックスのON/OFFを操作する

お次は、VBAでチェックボックスのON/OFFを操作してみましょう。

ここでもValueプロパティを使います。

Sub Test_CheckBox123()

With ActiveSheet
     .CheckBox123.Value = False
End With

End Sub

ONになっているチェックボックスを、OFFに切り替えるコードです。

このコードを実行すると…

チェックボックス,OFF

この通り、チェックボックスがOFFになります。

チェックボックスをONにしたい場合は、上のコードの「False」を「True」に置き換えるだけでOKです。

BackColorプロパティでチェックが付いたら背景色を変える

続いて、チェックボックスがONになったら、チェックボックスの背景色を変えてみましょう。

チェックボックスの背景色は、BackColorプロパティで設定することができます。

例えば、チェックボックスがONの場合に背景色を水色にしたい場合、こんなコードになります。

Sub Change_BackColor()
    With ActiveSheet.CheckBox123
        If .Value = True Then
            .BackColor = &HFFFF00
        End If
    End With
End Sub

イベントプロシージャと組み合わせて背景色を変える

前回の記事で、ActiveXコントロールのチェックボックスは、チェックボックスのイベントプロシージャをVBEで自動作成させることができることはすでにご紹介しました。

このイベントプロシージャの中に、チェックボックスの背景色を変えるコードを差し込めば、チェックボックスをON/OFF操作した瞬間に背景色を変える処理を実行させることができます。

例えばこんな感じです。

Private Sub CheckBox123_Click()

    With ActiveSheet.CheckBox123
        If .Value = True Then
            .BackColor = &HFFFF00
        Else
            .BackColor = &HFFFFFF
        End If
    End With

End Sub

チェックボックスをクリックしたとき、チェックボックスの値がONだったら背景色を水色に、OFFだったら白色に変える、というコードです。

チェックボックスがOFFの状態で、チェックボックスをクリックしてみると…

エクセル,checkbox,イベント,on

このとおり、チェックボックスがONになったので、背景色が青色になりました。

そして再度チェックボックスをクリックすると…

エクセル,checkbox,off

今度はチェックボックスがOFFになり、背景色も白色に戻りました。

このように、チェックボックスを操作した時に実行させたい処理は、イベントプロシージャに組み込んでしまえば、チェックボックスを操作した瞬間に処理をさせられるので便利ですよ。

最後に

今回は、ActiveXコントロールのチェックボックスをVBAで操作する方法をご紹介しました。

ただチェックON/OFFだけでなく、今回例に挙げたような、チェックボックスの背景色をチェック結果によって変えてあげれば、入力者に分り易いですし、エクセルの使い勝手を向上させられるかもしれませんね。

それでは、最後までお読みいただきありがとうございました!

ノンプロ研の初心者講座VBAコース第2期の成果と学んだこと

$
0
0
make

photo credit: TWP Inc. | Decorative Mesh, Wire Mesh, and More! Wire project via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。

今回の定例会は、初心者プログラミングVBAコース第2期の受講者の皆さん、TAの皆さんの卒業LT大会ということで開催しました。

ということで、初心者講座VBAコース第2期の成果と学んだことです。

ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

ノンプロ研定例会Vol.22「初心者講座VBA第2期卒業LT大会+α」
毎回大好評の「ノンプロ研初心者講座卒業発表会」です!今回はVBAコースの第2期の皆さん中心にご登壇いただきます。講座に参加された皆さん(できる限り全員)に5~10分程度のLTプレゼンにより講座参加..

では、行ってみましょう!

みなさんの発表から気づいたこと

もう卒業LT大会は定例会の定番になってきましたね、皆さん色々な方がいらっしゃるので、毎回たいへん興味深いです。

VBA講座の第2期は全体で11名が参加されていて、今回はそのうち5名の受講者と、TAさん1名に発表をいただきました。

ちなみに、TAの @celaeno4 さんのLTは、それだけで5000円払う価値があるので、ぜひノンプロ研に入会して動画をご覧ください。

実務で使えるツールを作る

初心者講座は「実務で使える簡単なツールを作る」を目標に全6回で構成しています。

正直、まったくの初心者が2時間×6回でツールを作るのは、まあまあ高いハードルです。

それをフォローするために、Slackを活用していまして講座開催の2週間前から事前課題を(大量に)お渡ししているのと、オフラインでも適宜質疑応答が可能というシステムを採用しています。

今回の皆さんの発表では、荒削りながらも以下のようなツールの開発にトライされていました。

  • 複数のファイルを一つのファイルにまとめる
  • 好みの印刷設定をするマクロ
  • 給与振込に必要な表やcsvの作成
  • 大量のグラフ作成(2時間の作業が3分に!)
  • コピペ汎用シート

もっとうまい作り方はあるにしても、まずは実務で活用して効果を上げることが大事ですので、たいへん良かったかなと思います。

今後、ぜひSlackのVBAチャンネルを活用してブラッシュアップ、または他のマクロの開発にチャレンジしていっていただきたいと思います。

中級講座への申込み

ちょうど、10/11から中級プログラミング講座のVBAコースが新設されました。

ちょうど今、受講の皆さんは(大量に)お渡ししている事前課題に取り組んでいただいている最中です。

その中級講座に、今回初心者講座を受講されたうち、半数以上となる6名が申し込んでくださいました。

(ちなみに、第1期からも5名の方が参加されています。)

確かに、簡単なツールは作れるにしても、プログラムの部品化や、Excel VBAならではのクセの攻略みたいなところは、これから学習する必要がある部分…

ぜひ、良い講座にしていきたいものです。

VBAコース第2期の成果と感想

受講者数とTAさん

VBAコースはGASコースに比べて参加者数が若干少ない傾向があり、今回はリモートも含めて11名でした。

なので、実際に会場には10名弱という感じですね。

前回のGAS講座の反省も踏まえると、参加意識を高めるため、講師&TAの目が行き届きやすくするために、講座の受講者数は多くしすぎないように…ということを心に決めていたので、人数的には問題はなかったかなと思います。

初心者講座GASコース第2期で学んだこと・反省したこと
今回のコミュニティ「ノンプロ研」の定例会は「第2回ノンプロ研初心者講座卒業LT大会」ということで、受講された皆さんに、その成果を発表いただきました。LT大会のレポートと講座全体の振り返りについて書いています。

反省点としては、TAさんを随時1名しかお願いしていなかったという点はあります。

質疑応答は1名でも十分なのですが、機材系のトラブル対応やSlackやSNSのキャッチなども含めると、ちょっと忙しすぎるんですよね…

なので、それも踏まえて、現在開催している初心者講座GASコースの第3期では

  • 受講者数は15名まで
  • TAは常時2名

という体制でスタートをしていて、現時点ではかなり良い講座が提供できているのではないかと思っています。

リモート配信のセッティング

リモート配信に関しては、このところ定例会も含めてトラブルが多かったので、なかなか苦労をさせられていました。

色々と試行錯誤した末に、ビデオキャプチャを別の機種に買い替えたところで、安定性がましたように思います。

第3期VBAコース・第4期GASコース仮申込受付中!

現在、初心者講座ではPythonコースを開催目前ですが、その後の時期に開催をすべく、VBAコース第3期またはGASコース第4期の仮申込の受付を開始しました。

希望される方は、ぜひ以下のフォームから送信をいただければと思います。

ノンプロ研初心者講座【VBA・GASコース】仮申込フォーム
本申し込みフォームはコミュニティ「ノンプログラマーのためのスキルアップ研究会」と連携した新しいタイプのプログラミング講座の仮申込フォームとなります。以下を必ずお読みの上、お申し込みください。 「ノンプログラマーのためのスキルアップ研究会」について ■仮申込の仕組みについて 今回募集するコースのうち、「最少催行人数...

まとめ

以上、ノンプロ研の初心者講座VBAコース第2期の成果と学んだことについてお伝えしました。

講座を重ねることで、講座の運営自体もだいぶパワーアップしてきています。

これかも、質・幅ともに充実していきたいと思いますので、皆さんどうぞお楽しみに!

「ノンプログラマーのためのスキルアップ研究会」について

コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。
コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」(略して「ノンプロ研」)。このページはその活動レポートまとめページです。コミュニティ活動の一気読みをされたい方、ぜひご活用くださいませ。
ぜひ、皆様のご参加をお待ちしております!
コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。
Viewing all 2074 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>