VBおじさんの Power Apps : ①コントロールに値を入れるやり方が分からない!

VB/Access に慣れた人が Power Apps を使う際に陥るパターンが、
コントロールに値を入れるやり方が分からない、というものです。
Power Apps をご存じの方なら初歩ですが、 VBおじさんの最初の関門になります。
ここが分からないと挫折するので丁寧に解説します!


※便宜上、VB/Access に慣れた人を「VBおじさん」、と呼びます。
 私もその一人です😀。共に頑張って生き残りましょう!

 

シンプルな例で説明します。まず、空の新規アプリでボタンとラベルを配置します。

f:id:samanosuk:20210131130131p:plain

ボタンとラベルを配置(名前はデフォルトの Button1 と Label1 )

【失敗例① VBの構文で書く】

で、ボタンを押したら "Hello World" と表示させたいのです。
で、ボタンの On Select がボタンのイベントだと気が付くので、そこに以下のように書いてみます。

f:id:samanosuk:20210131130429p:plain

On Select に VB 風の記述をしてみる

特にエラーも出ないようなので F5 を押して実行してみるわけです。

で、動きません。まずこれで最初に「あれっ?」ときます。😑

Onselect = 処理の関数 という形にならないといけないので、VBのような書き方はできません。


【失敗例② コントロールに直接代入してみる】

「ああ、これはVBでいうプロパティのようなものだから、ここは値とか関数なんだな」とVBおじさんは気を取り直します。値代入の関数で SET というのがあるようだから、これを使おう、となります。VBおじさんは前向きです。

で、今度は SET を使ってLabelに値を代入します。

f:id:samanosuk:20210131131254p:plain

SETで値を代入してみる

んー、なんかエラーが出てるけど気にせず F5 を押して実行します。
でもボタンを押しても思ったように動きません。

「俺は Hello World にもたどり着けないのか」 orz  😪

と、ここが挫折ポイントです。惜しい! 頑張れ VBおじさん!

今までだって力づくで何でもやってきたじゃないか。あきらめたらそこで試合終了ですよ。

 

【答え】

と、答えは以下のようにグローバル変数を挟む、ということなんですがこれが意外と分かりづらい。そのため逆引きで記事にしてみた次第です。

ボタンの Onselect には例えば以下のように書きます。

Set(strHelloWorld, "Hello World")

この、strHelloWorld グローバル変数です。宣言なしで使えます。
VBおじさんはプレフィックスが好きなので文字型の str としています。

f:id:samanosuk:20210131132532p:plain

Onselect に Set(strHelloWorld, "Hello World") と記載

 

で、ラベル の Text に この変数を設定します。

f:id:samanosuk:20210131132817p:plain

ラベルの Text に strHelloWorld と設定

で、 F5 を押して実行し、ボタンを押すとちゃんとHello Worldと出ました。
おめでとう VBおじさん!
これで Power Apps はおじさんの手足だよ! 割とマジでw

f:id:samanosuk:20210131133317p:plain