メシのタネ

Webプログラミング 備忘録

  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む
  • 普通の会社で2年普通に働いて思う事

    えらい寒くなりました。文句言いながらも現職を続けて2017年12月1日にめでたく2年がたちました。分かりやすいが乱暴に言えばITドカタと呼ばれる業界に入って案件のヒエラルキーの無慈悲さを痛感しながらも、それでもしょうがないと頑張る人たちに心を打たれながら「じゃあ俺も」と頑張れない自分に挫折して、とあ[...]

    続きを読む
  • jQueryUiのDatepicker利用時にminDate設定するとバグる件

    題名の通りなんですが、DatepickerでminDate使うとバグります。また後でキャプチャ見て貰いますけど、灰色の部分が、minDateで設定した日付が反復して出るようになるんですね。こういうの気が付かない人がいるかも知れませんが、ChoromeでminDate設定してる人は気にしてみてくだ[...]

    続きを読む

【Excel VBA】知ってると便利なこと

pakutasosukotish

こないだのExcelVBAの続編として、また記事を書いて行きたいと思います。
とあるシステムにとある機能が実装可能かどうかを調べていて、
また機能追加のご要望が着たので、VBAを触りました。
でまた、作ってたら結構はまったりしたので、その際に
困った事や便利だった事をメモ的な感じで書いて行きたいなぁと思います!

バリアント型

バリアント型ってなんぞやと思って
翻訳しても出てこなかったので、変数の型を動的に判断してくれる
箱みたいな変数の型だと僕は勝手に認識しました。
PHPの変数みたいに使えて便利なので、こればっか使うようになりました。
定義の仕方はDim e1 As Variantみたいにして書けば良いと思います。

ちょっと使った例を書いてみます。

</p>
<p>Dim e1 As Variant<br />
e1 = Range(&quot;B4:B31&quot;).Value</p>
<p>For Each searchFrom In e1</p>
<p>     Debug.Print(searchFrom)</p>
<p>Next</p>
<p>

みたいな感じで使う事が出来て便利ーです。

データの入ってる最終行を探す

こんな感じでやるみたいです。

</p>
<p>Dim endRowAs Long</p>
<p>endRow = ActiveSheet.Range(&quot;O5&quot;).End(xlDown).row</p>
<p>

が、たまに上手く行かないので、ちゃんと分かる時が着たら詳細書きます。
A1に文字入れて、さっきの使ったら65536になったりしました・・・。

1行のifならendifが省略可能

if文が一行で済む場合End Ifが省略できます。
構文が長めな気がするので、結構ありがたいと思いました。

ブック間のコピペ

例えばブックAからブックBに
文字をコピーしたい場合にはこうやります。

ファイルをオープンさせた状態でコピーしてペーストします。
ファイルオープンさせずにこれやったので軽くはまりました。

</p>
<p>                Workbooks(&quot;A.xls&quot;).Worksheets(&quot;Sheet1&quot;).Range(&quot;A1&quot;).Copy<br />
                Workbooks(&quot;B.xls&quot;).Worksheets(&quot;Sheet1&quot;).Range(&quot;A2&quot;).PasteSpecial</p>
<p>

後引数を文字列で受け取るので、変数使う場合は注意してください。

</p>
<p>                Workbooks(e2fileName).Worksheets(&quot;データ出力シート&quot;).Range(&quot;E&quot; &amp; rowAddress &amp; &quot;,&quot; &amp; &quot;O&quot; &amp; rowAddress &amp; &quot;,&quot; &amp; &quot;G&quot; &amp; rowAddress).Copy<br />
                Workbooks(e3fileName).Worksheets(&quot;Sheet1&quot;).Range(&quot;A&quot; &amp; e3endRow &amp; &quot;:C&quot; &amp; e3endRow).PasteSpecial</p>
<p>

なんかカンマがあるのにカンマが文字列って不思議な感じ。

関数の付いたセルを作成する

Formulaってのを使うみたいです。
デバックしにくいので、作成するセルの値は一度変数に入れてやると
デバックしやすいと思います。

こんな感じで書きました。

</p>
<p>formuraCells = &quot;=A&quot; &amp; e3endRow &amp; &quot;*&quot; &amp; &quot;B&quot; &amp; e3endRow<br />
Workbooks(e3fileName).Worksheets(&quot;Sheet1&quot;).Range(&quot;D&quot; &amp; e3endRow).Formula = formuraCells</p>
<p>

関数セルコピーすると関数がついてきてUZEEEEEEEEEEE

PasteSpecialにちょっと付け足すと大丈夫になります。

</p>
<p>Range(&quot;A1:C1&quot;).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _<br />
        :=False, Transpose:=False</p>
<p>

マクロで出力したので意味は分かりませんが機会があれば調べてみようと思います。

マクロで出力

Excelの場合、操作を記録する機能があります。
開発タブのマクロの記録ってとこを押すと操作が記録できます。

僕みたいにVBAの習熟度が低い場合、操作をコードに置き換えるのが
調べながらやらないとダメなので、いちいち面倒臭いです。
そういうときに、これを利用して、操作を記録すれば、記録した操作を
マクロとしてsubプロシージャに書き出してくれます。

このマクロを見て、余裕があれば意味を調べながらやれば、
気持ちよく作業を進めることができます。

関連記事

コメントをお待ちしております