エクセル雑感
エクセル関連ツイートNo4

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日:2019-04-10

エクセル関連ツイートNo4


エクセル VBA


VBEのこの左下のボタン
「プロシージャの表示」「モジュール全体を連続表示」
このボタンの説明ってどこにも書いた覚えがないです。
といいますかVBEの全体としての説明を書いてない。


とはいえVBEの機能を全部説明するのは無理、
VBA全体を理解しないとどのみち意味が通じないでしょうし。

何をどのような順番で覚えるかということは難しい問題です。
私のサイトでは、デスクワークを自動化するためのVBAに限定しているので、
xorは使わなくて良いとしていて、
.value=.valueはちゃんと説明しています。
それは目的達成のための優先順位であり、プログラミング全般の話ではありません。

せっかくある機能なのでお勉強と動作確認がてら、
PowerQueryでoracleに接続してみた。
ODBCとOLE
DBどちらも接続できる事は確認できた。
(データベースからのoracleは使えないのfお約束)
ただ、やたらと遅くないですか、仕方ないのですかね。
それと、やはりDBの知識が相応に無いと厳しい感じ。

DBの知識があって相応に扱える人はこの機能は必要としないので、
もっと手軽に使えるようになると良いかなーと。
ユーザーにデータ取得するだけならこれでご自由にどうぞといえるようなものに。
ただし、簡単な使い方があるのかどうか詳しく見てないので、まあとりあえずの印象ということで。

それと「フォルダから」は便利だなーと思ったものの、
サブフォルダ取ってきてくれないのは、何とも悲しい・・・

まさにエクセルの問題点が如実に出たものだと感じます。
自分が分かるからと言ってそれで良いというのは仕事としては半人前。
仕事とは自分が作り上げたものを他者(後輩等)に引き継いで初めて完結するものです。
そして自分はさらに次のステップに進むものです。

Next カウンタ については、それだけを議論するなら付けられるなら付けても良いと思う。
しかしブロック構文はForだけではなく、
Do,If,Select Case,With
ネストの話としてForだけを取り上げても片手落ちな気がします。
インデントが最優先です。
しかる後、Next カウンタを書くかどうかという話です。

システム作成で確認メッセージをどこにどの程度入れるかは結構難しい。
多いと「うっとおしい」といわれ、少ないと「間違った」といわれたり。
重要だから2回確認メッセージ出しても良く読まずに進む人はいるので、
根本的な解決策は「よく確認してね」と伝えるしかない場合が多くなる。

エクセルで数式作っていくと引数に関数を入れてさらに次の、、、
順々に作れば完成しますが、とんでもなく長い数式になる事は当然あります。
作業列を使えば良いのですが、なかなかそれが出来ずに苦労していることも。
ダメだというのは簡単だけど、解決策を同時に提示しないとそれこそダメですね。

プログラムとは一連の進行・手順を記したものでしかないので、
運動会プログラムもコンピュータープログラムも同じ感覚でいます。
コンピュータープログラムの良さは私のPC操作時間を劇的に減らしてくれるのが良さです。
でもPCに向かう時間が減らない、というよりむしろ増えるのはなぜなのか、、、

遠い将来を考えたら、パソコン教室は無くなってもソロバン塾は残るかもしれない、、、分からんけど。

エクセルを別インスタンスで立ち上げるのって面倒ですよね。
右クリックからのAltからのクリック
滅多に必要にはなりませんが、
マニュアルの類とかで、ダイアログを別のエクセルに貼り付けしたいとか、時々あるにはある。
1クリックでできるようにならないものかと、ちょっとイラっとしたり。

上司からマクロ以外の方法でという指示は結構あるあるのようです。
小学校でプログラミング授業が始まろうという昨今ですが、
まずは、こういうところから変革していく必要があります。
そもそもアレルゲンは何なのか、
エクセルそのもの、マクロという呼び名、、、

Excel2019が遅い、、、セル入力が遅いんだな、たぶん。

セルに値なり数式なりを入れるとき、
.Value付けるのと省略するのと、
どっちの処理速度が速いか、、、

なんだかんだ言っても、慣れることが肝心です。
「習うより慣れろ」本当にそうだと思います。
ただ言えるのは、若い人ほど慣れるのが速いのは間違いない。
だからこそ若いうちに色々チャレンジしたほうが良いと思う。

Ctrl+Nで新規ブック!
あれれ、改行されちゃった、
VBEがアクティブだった。
「ホバーしたときに非アクティブ・ウィンドウをスクロールする」
にしてるとたまに勘違いしてしまうことがある。
ショートカットならではの誤操作というところか。

処理時間のかかるマクロ実行中にほかのエクセル使いたくなったら、
タスクバーのExcelを右クリック→Excel→Alt+左クリック
「新しく別のExcelを起動しますか?」
たまにAltが入らないときもあるけど…
ただ、実行中のマクロに全く影響がないとは言えない。
良い子はマクロが終わるの待ちましょう。

"住所の番地を分けたいとの要望
A1セルに住所として、
=LEFT(A1,MIN(IF(ISNUMBER(MID(A1,ROW(OFFSET($A$1,0,0,LEN(A1),1)),1)+0),ROW(OFFSET($A$1,0,0,LEN(A1),1)),LEN(A1)+1))-1)
Ctrl+Shif+Enter
それなりに出たけど、"

漢数字"三丁目"等は対応できないです、、、
それにしても、この数式を説明するのは長文になるので難しいですよね。

どうもSetを付け忘れたり消し忘れたり、、、
そもそもSetって省略できるように変更してもらえないものですかね。

AltキーとWindowsキーを間違えて、グラフシートが挿入されるのはあるあるですが、

これの根本的な解決策は、、、ない

「令和」関連としてExcelでカレンダー作成という話もあるかも。
それで思い出したのですが、
上から万年カレンダーを作れと言われたらしく、
曜日は何とかなるけど祝日はどうしたら良いかと聞かれたことがあります。
よくよく聞くと1万年後の祝日の求め方を聞きたかったらしい。
いや、それは、、、

1万年後というより、9999年までの祝日ですね。
明日の事も分からない世の中で、それを考えるとは大したもんだと逆に感心しちゃいました。

私自身はあまり使わないので、まあいいかとは思っていたのですけど、
「ピボットテーブル/ピボットグラフ ウィザード」ってどのバージョンからアイコン消えたのか、、、たぶん2007だと思うのですけど。

VBAで文字列のクラス名からインスタンスを作成する方法は、
絶対にないのか…絶対に無理なのか…
コンストラクタで引数を渡せるかどうかはあまり気にならないのだけど、
(コンストラクタで引数受け取れても両方用意したりするし)
それよりインスタンスの作成を動的に切り替えられれば…

エクセルは勝手に表示形式が設定されたりします。
入力文字 → 表示形式
4/7 → m"月"d"日"
2019/4/7 → yyyy/m/d
h31/4/7 → [$-ja-JP]ge.m.d
0 4/7 → # ?/?
4,567 → #,##0
\567 → \#,##0;[赤]\-#,##0
$567 → $#,##0_);[赤]($#,##0)
56% → 0%
Ctrl+Shift+~ で標準書式に戻せます。

VBAでコンストラクタに引数渡せない対処を改めて検索したが、
1行で書く代わりに別場所でやってたりだけで、あまり意味を感じるものは見つからなかった。
それなら昨日書いたCallByNameで、
Set 変数 = CallByName(New クラス, "メソッド", VbMethod, "引数")
メソッドでMeを返せば良いよね。

というか、そもそも:コロンで1行に書いたほうが話しが早いか。
でも、それを言ったら話が終わっちゃいますか。

iPhoneをPCにつなげて写真とかを移すやり方を教えて、
翌日、「ケーブルつないで写真見えたから、ケーブル抜いたら写真が見られなくなった、写真が消えた」
と言われた。
私は…
エクセルの使い方くらい、どんな使い方してもたかが知れてる。
とはいえ、ちゃんと覚えてちゃんと使ってください。

ある機能を使うということは、その機能を使うための制限が発生します。
その機能を使うことで得られることと、その機能を使うことで失うことを天秤にかけることになります。
どっちに傾くかは、どうしても人それぞれの判断で違ってくるのは仕方ないと思います。

エクセル究極のコピー
「何も足さない、何も引かない」

If条件式の書き方としてどれが分かりやすいかは人それぞれでしょう。
(a)
If A <> B And C <> D Then

End If
(b)
If Not A = B And Not C = D Then

End If
(c)
If Not (A = B Or C = D) Then

End If
(d)
If A = B Or C = D Then
Else

End If

金種表を見て昔の事をふと思い出した。
明日等の来店客数を予測して、必要なつり銭準備金を用意するとき、各紙幣・棒銀の必要数を算出、余裕を持たせるなら+でどれだけってエクセル作ってました。かなり昔のことです。

念の為、一応補足しておきます。
エクセルの数式はもちろん知らないと始まりませんが、それ以前に業務を知らないと作れません。

例えば英語でマニュアル作るとした時
・日本語で考え(書い)てから英訳
・いきなり英文を書く
この差は大きい。
プログラミングも同じように思う。
・日本語で考え(書い)てからコード化
・いきなりコードを書く
本当はもっと細かい段階があるし、各段階での教え方は根本的に違うはずです。

佐為がヒカルに碁を教えるときに、
ただ見るのではなく、石の流れを見なさい。
みたいなことを言ってたと記憶してます。
意識を切らさず全体の流れを見ることから始めてください。
その為に書かれたサンプルコードを読んでください。
それを書くのがなかなか…

はじめてプログラミグ覚えるなら何が良いかと聞かれたら…
それはまあ、何がしたいかってことで変わってくるのでですが、
とりあえずやってみたいという事なら、VBAかGASが良いと思います。
たった今から始められます。

私のおすすめとしては、
ある程度プログラミング覚えたら、次はDBに関して少しでもやったほうが良いと思います。
SQL覚えると別の世界に入っていける気がします。たぶんね。

「好きこそ物の上手なれ」と言うし、まずは好きになってもらうことが早道なのだろうと思う。
その為の「方便」というのもあってよいだろうと。
「だれでも一度はアセンブラを学んでおこう!」なんて記事もあったけど、必要ない人の方が大多数じゃないですかね。






同じテーマ「エクセル雑感」の記事

素直なプログラミング
エクセル関連ツイートNo2
エクセル関連ツイートNo3
エクセル関連ツイートNo4
エクセル関連ツイートNo5
IF文の整理と論理的思考
エクセルVBAを覚えるには
EXCELマクロを始める時、まず最初にやるべきことは
Excelマクロを書くと言う事は
もしエクセルにマクロ機能がなかったら
物事には守るべき順序があります。エクセルにも順序があります。

新着記事NEW ・・・新着記事一覧を見る

Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.繰り返し処理(For Next)|ExcelマクロVBA入門
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄



  • >
  • >
  • >
  • エクセル関連ツイートNo4

    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ