Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【VBAスタンダードに挑戦!】模擬試験2回目(Split/Exitステートメント/ListColumns/構造化参照)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

前回やった模擬試験をもう一度やってみました。

前回の65点から87.5点にアップ。

 

だけど、同じところを間違えた問題が1問、

新たに間違えたところが4問ありました。

 

新たに間違えた問題は、前回「カン」が当たった かな・・・

ちゃんと身についていない ということですね。

 

                  

Split関数

・Split(元の文字列、区切り文字)

・元の文字列を区切り文字で区切って配列で返す

・「配列型」は無いので、Variant型で定義する

・・・・・・・・・・・・・・・・・・・・・・

 

Dim A as Variant '配列を使えるように定義する

A = Split(A-B-C, "-") '文字列 A-B-C を "-" で区切って配列に格納する

Msgbox A(1) '配列の2つ目の箱を表示する

 

※Split関数 = 配列 と考えないといけませんね。

                   

 

Exit Sub
 Subプロシージャーを終了させる
 呼び出されていれば、呼び出し先に戻る

 

Exit Function
 Functionプロシージャーを終了させる
 呼び出されていれば、呼び出し先に戻る

 

Exit For
 For~Next、For Each~Next ステートメントを終了させる
 繰り返し処理が終了するので、Next の次の処理に移る
 (For の次の回に移らない)

 

Exit Do
 Do~Loop ステートメントを終了させる
 繰り返し処理が終了するので、Loop の次の処理に移る
 (Do の次の回に移らない)

 

これら一つひとつは理解しています。

しかし、これがどこで使用されているかをよく見ませんでした。

For Next のなかで、どの Exit を使用するか問われていました。

 

チラ見して、Exit For と回答してしまいましたが、それが間違い。

For Next を抜けた後に、別の処理をする一文がありました。

正解は Exit Sub にしなければいけませんでした。

 

Sub Test()
 Dim WS As Worksheet
 For Each WS In Sheets
  If WS.Name = "ABC" Then
   MsgBox "存在します"
   Exit(  )ここでExit For をしても・・・
  End If
 Next WS
 MsgBox "存在しません" ここの処理は実行されてしまう。
End Sub 

                  

ListColumns

Range("B11").ListObject.ListColumns.Add
 テーブルの右端に追加される
 見出し名は「列1」、「列2」となる

 

テーブルに関しての用語などは まだまだ覚えきれていません。

                  

構造化参照

VBAでの記述方法

#All は実際に VBA で記述するときは

[#All] となります。

 

構造化参照サンプルテーブル

しかし、タイトル行を表すときは

[都道府県] のように、「#」が不要です。

前回は [#都道府県] としてしまい間違い。

今回は [All] として 間違い・・・

 

お互いに足を引っ張ている・・・

 

明日からテキスト2週目に入ります。

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/