とりにくを好きな人がVBAを勉強しています。

VBAを中心に、その他日々の生活で感じていることを書いていきます。

【Excel】【VBA】Evaluateメソッドについて③

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

昨日、一昨日に引き続き、Evaluateメソッドについてです。

過去記事はこちらです。

toriniku-vba.hatenablog.com

toriniku-vba.hatenablog.com

VBAで扱うなら、Evaluateメソッド内を動的に変更したいですね。

アドレス部分を変数にして、ヘッダーの文字列に応じて、分岐させてみました。

んー、使うときは来るのでしょうか。

では、またいつか!

【Excel】【VBA】Evaluateメソッドについて②

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

昨日はEvaluateメソッドについて、記事を書きました。

toriniku-vba.hatenablog.com

今日は、Evaluateメソッドの戻り値とワークシートの指定についてです。

Variant型に入れると二次元配列になりますね。

当然、ワークシートの指定を省略すると、アクティブシートになります。

Sheets(1).[DROP(A:.A, 1)]

のようにすると、一番目のシートを参照できます。

Range型に代入してもいいんですよね?と思ったら、Setをつけるの忘れました。。。恥ずかしい。

Range型にも代入できました。

こんな感じでワークシートを指定することもできますね。

では、またいつか!

【Excel】【VBA】Evaluateメソッドについて

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

Evaluateメソッドについて、OfficeTANAKAさんの動画で紹介されていました。 (最近、メンバーシップが始まって、限定動画でした。)

ワークシート上の関数のように記述できるようですね。

記述の方法は2種類あって、

Evaluate("DROP(A:.A, 1)")

'または

[DROP(A:.A, 1]

のように記述するようです。

このときワークシートの指定はどのようにしたらいいんですかね?

戻り値はこの場合、配列ってことでいいですよね?

今度、検証してみたいと思います。

では、またいつか!

【Excel】【VBA】オートフィルターしている時に可視セルだけを移動する

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

最近はVBA100本ノックを終えて、実務でもVBAをいじりまくっています。


先日、オートフィルターをしている時にOffsetを使用してセルの移動をしてみたら、非表示セルに移動してしまいました。


その解決方法について解説します。

今回使用するサンプルはこちらです。


f:id:mayo032j:20210310064328p:plain



グループAで絞り込むと次のようになります。


f:id:mayo032j:20210310064344p:plain


ここで普通にOffsetしてしまうと、


f:id:mayo032j:20210310064503p:plain



非表示セルに移動してしまいます。


f:id:mayo032j:20210310064516p:plain



Web検索してみたらば、次のようなコードがありました。
f:id:mayo032j:20210310064545p:plain



なるほど、可視セルにあたるまでループを回すのかと。


実際に使ってみるとうまくいきました!


f:id:mayo032j:20210310064601p:plain



なぜこのような処理をしたかったかというと、絞り込んだ行のある列に対してリスト入力をするようなユーザーフォームを作っていたからです。


次のようなイメージです。


f:id:mayo032j:20210310064610p:plain




入力作業がめちゃくちゃ捗りました。

【Excel】【VBA】VBA100本ノックを終えて

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

ブログ記事の更新は久しぶりになってしまいました。


昨年10月ころから始まったTwitterの企画で、VBA100本ノックというのがあります。

最近100本目の出題があり、私もついに100本目の解答を昨日終えることができました。



今回はVBA100本ノックを終えて、1番よかったと思っていることをお話しします。



1番よかったことは粘り強くなったことです。

100本ノックの問題は私のレベルでは調べながらじゃないとできない問題ばかりでした。


69本目から問題を解く過程をライブ配信していますが、だいたい1時間から1時間半かかっています。


中には2~3日かけて解いているものもあります。



もちろん100本ノックへの挑戦を通して知識が増えていったこともありますが、毎回わからないことにぶち当たるのでそれを調べて解決していくのが普通になってきました。



100本ノックに挑戦し始めてからは、仕事でVBAを使う機会も増えました。


以前は少しつまずくとモチベーションが下がり、結局完成まで持っていけていないものがたくさんありましたが、知識が増えたことと粘り強さが増したことで自分でも納得のいくものが作れるようになってきました。



VBAの勉強を始めて、「次は何をしたらいいんだろう」と迷っている方がいましたら、VBA100本ノックに挑戦してみてください。


実務に役立つ問題ばかりですし、粘り強さがアップすると思いますよ。



VBA100本ノックについてはコチラから!
excel-ubara.com


とりにくVBAが挑戦しているところを見たい方はコチラから!
www.youtube.com

【Excel】【VBA】速習VBAでオートフィルター

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

VBAの最大の利点はExcelの便利機能を使えちゃうことだと思います。


そこで今回は、Excelの便利機能の一つであるオートフィルターをVBAではどのように書くのか簡単に紹介します。



f:id:mayo032j:20210131102600p:plain
この表をオートフィルターで絞り込みをします。


商品欄をトマトで絞り込む場合はこのように書きます。
f:id:mayo032j:20210131102612p:plain


対象セル(ドット)オートフィルター(半角スペース)左から何列目?(カンマ)絞り込む内容

そんなに難しくはありませんね。


対象セルは狙った表の中のセルであればどこでも構いませんが、左上のセルがよいと思います。

f:id:mayo032j:20210131102634p:plain



同じ列で2つの条件で絞り込む場合はこのように書きます。

f:id:mayo032j:20210131102645p:plain



対象セル(ドット)オートフィルター(半角スペース)左から何列目?(カンマ)絞り込む内容(カンマ)条件(カンマ)絞り込む内容
今回は「トマト」(または)「きゅうり」を絞り込むために、条件に「xlOr」を指定しています。


f:id:mayo032j:20210131102711p:plain


例えば、「トで始まる」(かつ)「トで終わる」ものを絞り込むには、条件に「xlAnd」を指定します。


他にもいろいろな条件があるので、さらに詳しく学びたい方は調べてみてください。



同じ列で3つ以上の条件で絞り込む場合はこのように書きます。


f:id:mayo032j:20210131102737p:plain


f:id:mayo032j:20210131102724p:plain


対象セル(ドット)オートフィルター(半角スペース)左から何列目?(カンマ)絞り込む内容が入っている配列(カンマ)xlFilterValues



3つ以上の場合は配列で内容を指定すること、条件にxlFilterValuesを指定することがポイントです。


f:id:mayo032j:20210131102813p:plain



複数の列で条件を絞り込むにはこのように書きます。


f:id:mayo032j:20210131102759p:plain


対象セル(ドット)オートフィルター(半角スペース)左から何列目?(カンマ)


対象セル(ドット)オートフィルター(半角スペース)左から何列目?(カンマ)



対象セルが同じになるので、Withで囲んでいます。


数値の範囲指定は、不等号記号と数値を含めて”(ダブルクォーテーション)で囲って、文字列で指定します。



以上、VBAでのオートフィルターの書き方について簡単に紹介しました。
オートフィルターは様々な場面で活躍できると思いますので、ぜひ使ってみてください。

【VBA】YouTubeで配信をしてみた感想

おはようございます。こんにちは。こんばんは。

とりにくVBAです。

先週YouTubeチャンネルを開設して、今日までに15本の動画がアップされています。



誰に見られているわけでもありませんが、ライブ配信するとけっこう集中できますのでおすすめです。


ライブ配信したものをそのままアップしていますので、考え中で全く画面に変化がなかったり、子どもが起きてきた対応をしていて長時間離席していたりと、見てくださっている方には大変ご迷惑をおかけしております。


ですが、少しでも視聴者の方に楽しんでもらうために、次のような工夫を考え、この一週間で実践してきました。

・音楽をかける

・マウスの動作を可視化する

・離席中はその旨メッセージを表示する

・急に終わらないでメッセージを表示してから終わる


最初は本当に何も工夫せずに垂れ流ししていましたが、特にファンがついているわけでもないのに、楽しんでもらいたいとアイディアが浮かんできます。不思議なものですね。


ライブ配信中はただ見ていただいてもかまいませんし、コメントも大歓迎です。


アップされた動画はどうしても長いので、2倍速で見ることをおすすめします。リアルなスピード感を見たい方はそのままでも構いませんが。


他の人がコード書いているところを見る機会は少ないと思いますので、興味がある方はぜひ覗いてみてください。


ちなみにExcelVBAを知ったのは3年前くらいで、仕事でもある程度生かせるようになってきたのは1年前くらいです。


レベル感としては中級者になりたい初心者といったくらいでしょうか。



今後はライブ配信の動画に、作成中どんなことを考えたかなどのコメントを加えた編集動画を作成予定です。
お楽しみに。

www.youtube.com