あーるPG - 社会人のデジタル生活

日曜プログラマになろうかなーと思った30代理系社会人の、キャリアアップや趣味(特にデジタル情報)の記録。らーめんとビールが好き。

動的配列を使う

動的配列の使い方

VBAで配列を使うとき、サイズを後から変更できる”動的配列”というものがあります。
ただ、ちょっと癖があるので、慣れが必要です。
VBAといえばCollectionなのですが、簡単に使えるかな、というイメージがある人はどうぞ。

'初期化
Dim arr1() As Integer ' ()内を空欄で定義。
' 配列数の指定(中身をクリア)
ReDim arr1(0) ' ReDimで配列数を指定。arr(0)のみある。
ReDim arr1(1 TO 2) ' 要素の範囲を指定できる。これならarr1(1), arr1(2)になる

' 要素を全部使う
Dim str As String
srt = ""
For i = LBound(arr1) To UBound(arr1) ' LBound()で取得できる要素番号の最小値、UBound()で最大値を取得できる。
srt = str & arr1(i) & Chr(13)
Next i

' 配列の追加(中身を保持)
ReDim Preserve arr1(UBound(arr1) + 1) ' Preserve指定で中身を保持。

' 未初期化状態への対処
Dim arr2() As Integer
' ReDim Preserve arr2(UBound(arr2) + 1) ' ReDimしないでUBound()すると、エラーが出る

If Sgn(arr2) = 0 Then 'なぜかSgn()関数で判別できるのでそれを使うか
ReDim arr2(0)
Else
ReDim Preserve WarnList(UBound(arr2) + 1)
End If

For i = LBound(arr2) To UBound(arr2) -1 ' 配列の最後尾が番犬だと思って要素使用時に排除するか。
srt = str & arr2(i) & Chr(13)
Next i

Windows10に移行したときの、office VBAの設定

自動化環境って、必要な設定忘れちゃいますよね。
PC移行したら自動化が動かなくて「うわーん」ってなるやつ。
excel VBA, Outlook VBAなどでIEコンポーネントを使うとき、コードの移植以外に必要なことをまとめておきます。


  • マクロのセキュリティ設定変える

https://support.office.com/ja-jp/article/Office-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%BE%E3%81%9F%E3%81%AF%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B-12b036fd-d140-4e74-b45e-16fed1a7e5c6

  • DOMへの参照設定する

http://www.ken3.org/cgi-bin/group/vba_ie_object.asp

  • 80070005エラー回避

windows10(?)ではie11からcドライブ直下に書き込みできない。フォルダを作って回避。

  • オートメーションエラー

ie11のセキュリティ設定の「保護モードを有効にする」をON。
http://nanameue-news.com/2014/07/27/312/

  • 署名

やらなくても動くが、「起動時にマクロがあるよ」というウィンドウがでる。
回避方法は長くなりそうなので割愛するし、やってない。

gnu make向けmakefileをWindows10 64bitに持っていった ざっくり

●前提
諸事情につき、前はcygwingnu makeでやってたのを、VSのnmakeに通すように変更した。


●手順

  • ・VisualStudioをインストールする

・インストールフォルダの中のvcvars64.bat、nmakeを見つける。パスを通しておくとよい。
makefileを書き換え
  $(CC)をclにする。
  .oを.objに置き換える
  命令の引数の"$^"は"$**"に置き換える。
  linuxコマンドをwindowsコマンドに置き換える。(rmなど)
  $(INCLUDE)、$(LIBPATH)、$(LIB)を使っているなら何かに置き換える。(すでに設定されているので)
・必要に応じてmake clean相当をしておく。
コマンドライン(cmdかPowerShell)で、vcvars64.bat、nmakeの順に実行。


●キーワード
NMAKE : fatal error U1077: 'cl' : リターン コード '0x1'
makefile(20) : fatal error U1001: 構文エラー : 無効な文字 '^' がマクロ中にあります。
main.exe : fatal error LNK1120: 11 件の未解決の外部参照
NMAKE : fatal error U1077: cl.EXE"' : リターン コード '0x2'


●参考
https://msdn.microsoft.com/ja-jp/library/f35ctcxw.aspx
http://masahiroshiomi.jp/blog/windows/99/
https://okwave.jp/qa/q657193.html

Apple Payで再注目。ビックカメラSuicaカード

結論から言うと、ケータイ、スマホSuicaを使うなら、ビックカメラSuicaカードを作って利用するのがお得です。もちろんApple Payでも。

お得な理由

モバイルSuicaへのクレジットカード登録が無料

モバイルSuicaを利用する際、クレジットカードの登録に税込1030円が年ごとにかかります。
しかし、Viewカードならそれが無料です。
(厳密には無料キャンペーンが継続されている扱いで、いつ有料になってもおかしくはありません)

JR系の利用ならポイント還元率1.5%。

Viewカードはビューサンクスポイントが1000円使用ごとに2ポイントたまります。そしてJR系のサービスでは3倍の6ポイントたまります。
1ポイント2.5円換算で使用できるので、通常は還元率0.5%、JR系のサービスで還元率が1.5%となります。
しかしこのカードは例外的に、JR系のサービス以外の利用ではビックポイントが追加で0.5%貯まります。つまり還元率1.0%です。
メインで使ってもお得ですし、JR系のサービスはViewカードと同じように得です。

1年に1回以上使えばクレカの年会費(年会費 税抜477円)が無料になる。

Viewカードは年会費無料のものはないのですが、このカードは初年度無料、2年目以降は年1回以上使えば年会費が無料となるオプションがあります。
定期やモバイルSuicaで電車賃を払う人であれば実質無料であると言ってよいでしょう。

Web明細で毎月20ポイント(50円相当)付与。

Web明細にし、明細が通知されるごとに、ビューサンクスポイントが20ポイントたまります。
年間600円相当となります。これが地味に大きいです。
※対象の月にクレジットカード使用が1回もないとWeb明細も発行されず、20ポイントも付与されません。

ビックカメラのポイントカードも兼ねられ、ビックポイントを電子マネー化できる。

ビックカメラのポイントカード機能があるため、別途ビックカメラのポイントカードを作る必要がありません。お得ではないですが、楽ではあります。

ポイントをルミネ券で利用すればさらに還元率Up。

ポイントをSuicaチャージに変換すれば還元率1.5%のまま電子マネー化できますが、ルミネ券に交換すると、それ以上の還元率となります。
交換は650ポイントで2000円分のルミネ券、1250ポイントで4000円分のルミネ券です。
650ポイント(108333円)で2000円分のルミネ券がもらえるということは、1.85%のポイント還元率となります。
1250ポイント(208333円)の使用で4000円分のルミネ券がもらえるということは、1.92%のポイント還元率となります。

ただし最近、1回の送付につき160pt(400円相当)を取られるようになってしまいました。
810ポイント(135000円)の使用で2000円分のルミネ券がもらえるということは、1.48%のポイント還元率となります。
1410ポイント(235000円)の使用で4000円分のルミネ券がもらえるということは、1.7%のポイント還元率となります。
2000円分を申し込むのであれば、Suicaチャージに回したほうがお得ですね。

サンプルケース

6か月定期10万円を年2回、Suicaチャージを毎月3000円する例を見てみましょう。

1年の使用金額は 100000*2+3000*12=236000円
ポイント付与は 236000/1000*6=1416ポイント
Web明細にすると付与されるのが 20*12=240ポイント
よって、1年間のポイント付与は 1416+240=1656ポイント

ルミネ券の送付代をけちるために、2年に1回交換することにしましょう。

2年間のポイント付与は 1656*2=3312ポイント
これを上手く使うとすると 3310ポイント = 650*1+1250*2+160 となるので、
2年に1回、ルミネ券が10000円分ゲットできることになります。

まとめ

JR系のサービスを頻繁に利用するならビックカメラSuicaカードが非常にお得です。
メインのカードでもOKですし、JR用のカードとして持っておくのも良いでしょう。
ただ、1度も使わないと年会費が発生することにはご注意を。

icon
icon

マイクロソフトのARデバイス。Hololens

マイクロソフトのARデバイス。Hololensがマイクロソフトストアで売っています。
ちょっと高いですが、買ってアプリを作るなら今。

icon
icon