2022年8月27日土曜日

PhotoFiltreの日本語化(Ver6)

event_note8月 27, 2022

このページはVer6の日本語化方法についてです。

PhotoFiltreの文言を日本語化する方法

日本語化ファイルをダウンロードする

PhotoFiltre公式ページを開き、Englishをクリック


「Language files for PhotoFiltre」から下にスクロールして、

「Japanese/Japonais」をクリックし、ダウンロードする

日本語化ファイルを配置する

ダウンロードした「TranslationJP.zip」を展開(解凍)する

解凍したファイル「TranslationJP.plg」をコピー

PhotoFiltreをダウンロードしたフォルダに「TranslationJP.plg」(日本語)を貼り付けて、
「TransLationEN.plg」(英語版)を削除する

PhotoFiltreを起動する

ツールの文言が日本語になっている

完了

2022年8月21日日曜日

【エクセルVBA】最終行の取得は最大行をチェックしないと失敗する

event_note8月 21, 2022

サンプルコード

特定列(lCol)の最終行を取得します。

Function GetMaxRow(lCol) As Variant Dim c As Range Set cl = Cells(Rows.Count, lCol) If cl.Value <> "" Then GetMaxRow = Rows.Count Else GetMaxRow = cl.End(xlUp).Row End IfEnd Function

 

ポイント解説 GetMaxRow= cl.End(xlUp).Rowだけではダメな理由

サンプルコードでは最終行を取得する処理(画像の③)だけでなく、条件(①)をつけています。

エクセルの使用中の最終行を取得する場合、③の処理のみでは失敗するケースがあります。それは、エクセルの最大行に値が入っている場合です。(↓の画像参照)

そのため、条件(①)を付けています。

上の画像のケースで、③の「GetMaxRow= cl.End(xlUp).Row」を実行するとGetMaxRow(最終行)=1行目となります。

しかし、正しくは②GetMaxRow=最大行(1048576行目)となるべき。ですから、条件①で、最大行のみ場合分けするようにしました。

 

最終行の取得は最大行をチェックしないと失敗する まとめ

最終行を取得する方法はいろいろありますが、Endを使って取得するときは最大行の値に注意する必要があります。

しかし、シートの最大行までは使わない!そんなにデータがない!ということであれば、③の「GetMaxRow= cl.End(xlUp).Row」のみで問題ありません。

[エクセルVBA]配列の基本!配列を宣言しループで処理する

event_note8月 21, 2022

配列とは

同じ種類の変数の集合体です。前から順番に0、1、2、3…と番号が振られており、データをセットしたり、使うときは番号で指定します。

0番目のデータを使うときは「ary(0)」のように指定します。下の図は、配列ary(3)に数値100、200、300、400を代入するイメージです。

コーディングすると以下の通りです。

サンプルコード

Sub Hairetsu() Dim ary(3) As Integer ary(0) = 100 ary(1) = 200 ary(2) = 300 ary(3) = 400 End Sub

サンプルコード解説

配列の宣言 Dim ary(3) As Integer

①のDimは変数を使えるようにするための宣言です。この宣言以降、aryという配列を使えるようになります。

②は配列の名前です。

③で配列内にいくつ変数を持つか指定します。例では、4つ(0番~3番)となります。添字(()内の数字)通りの3つにならないことに注意しましょう。配列内の変数の数は添え字+1個です。

④As 型名 で配列の型を表します。今回は数値として使いたいので型名をIntegerとします。Integerは数値の変数で-32,768 ~ +32,767までの値を代入することができます。

配列への代入

最初に説明した、4つの箱にデータをいれているイメージをコーディングしたものになります。

配列の値を加算する

ここまでで、配列に数値データを設定しました。今度は「配列内のデータそれぞれに100を加算する」処理を行います。

サンプルコード

 ary(0) = ary(0) + 100 ary(1) = ary(1) + 100 ary(2) = ary(2) + 100 ary(3) = ary(3) + 100

解説

配列の0番目に、100を加えて配列0番目に戻す。処理をしています。配列の1番目から3番目も同様に処理しています。

1行目の処理を絵にすると、このようなイメージですね。

 

しかし、4つの処理を1行ずつかくのは少し手間です。4つだとまだ楽ですが、ary(1000)の時に処理を1001回書くわけにはいきません。そんな時にループ処理を使います。

配列の計算をループで処理する

サンプルコード

 For i = 0 To 3 ary(i) = ary(i) + 100 Next

解説

先ほど4行書いていた処理が、「ary(i) = ary(i) + 100」という1行にまとめることができました。

「 For i = 0 To 3」は i を0から3まで増やしていく という意味です。

「ary(i) = ary(i) + 100」の i は「 For i = 0 To 3」で指定される i (0~3)に置き換えて実行します。

なので、

 

iが0のとき ➡ ary(0) = ary(0) + 100 を実行

iが1のとき ➡ ary(1) = ary(1) + 100 を実行

iが3のとき ➡ ary(3) = ary(3) + 100 を実行

となり、1行ずつコードを書いた時と同じ処理になります。

このように、配列を使うとデータに連続性が出るのでループで同じ繰り返し処理をすることができて便利です。配列とループ処理は非常に相性がよいのです。