記事カテゴリ

ユーザー機能


 2025年5月 4日(日) 21:04 JST

[Excel VBA] セルの形式をR1C1形式からA1形式に変換

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    32,064

なぜ、今まで知らなかったのだろう...

というか何で今までちゃんと調べなかったのだろう?
セルの形式をR1C1形式からA1形式に変換するのに自作関数まで作ってたことがとてもばからしい...
あるはずだとは思っていたのだが、見つからなかった。ヘルプでキーワード検索しても、全文検索しても... オブジェクトパッケージャで上から順に怪しいメソッドを順に試せば、わかったはずだった。しかしやらなかった。
結論を言うと、Cells もしくは Range オブジェクトには Address というプロパティがあって、それを利用するとセルもしくは範囲がA1形式の絶対表記で取得できる。セル自体を参照する分には必ずしも必要ではないが、列を選択する際にはA1形式の方が圧倒的に表記が楽だ!
使い方はこんな感じ...

    With Worksheets(1)
        Debug.Print .Range(.Cells(1, 1), .Cells(1, 1)).Address
        Debug.Print .Cells(1, 1).Address
    End With

Excelには便利な機能があるが、使い方を知らないものたくさんある。
今一番知りたいのは、オートフィルタでフィルタされずに表示されている行だけ、ループで順に処理できる方法。わかったらまたここにメモしておくことにしよう。

しかし、最近の Office のヘルプはとても使いづらい...

花火

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    2,835
先ほど花火を見に行った! 今年はこれで三度目の花火になる。 1度目は世界花火大会滋賀を、二度目は野洲川の花火を見に行ったが、今日は水口の水口橋の花火を見に行った。 滋賀の中でも田舎の花火なのであんまり期待はしていなかったのだが、たまたま渋滞で止まったところが、打ち上げを行っていた所すぐ近く、花火のほぼ真下に当たる橋の上だったこと、しかも20分程度ずっと止まったままだったので、思いがけずじっくりと見れた。 結果から言うとかなり満足できた。滋賀で言うと琵琶湖花火大会が一番大きいと思うが、二カ所に分散していることと地上からだとそれほど近くない(有料観覧席や船上だと近いかも)。 しかし、今日はほんとに近かったので数年前に見た江戸川の花火を思い出してしまった。 江戸川の花火よりも数も時間も打ち上げ箇所も小規模なのだが、近いのでかなり迫力があった。 花火の臭いもしてきそうな雰囲気があった。しかも、江戸川ほど混んではいない。 しかし、路上駐車は多く、やはり警察の対応は無能の一言がぴったりだった。まあそのおかげでベストポジションが手に入った訳だが... 花火は最高だったが、警察の無能さには脱帽という感じだった!

ロリポップにドメイン受信拒否機能が追加

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    3,387
やっと、ロリポップにドメイン受信拒否機能が追加された 早速、ドメイン指定でいくつかのメルアドについて、設定を行う。 ふと下に目をやると、アナウンスにはなかった『件名が英語の場合』、というのも付いている。これもなかなかよさげだ。 これもいくつかのメルアドに設定する。 何か最近回線が遅いから、サーバ側でいらないメールを削除できるのは良いことだ!

[VB/VBA] 空配列のUBoundが-1にならない?

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    18,135
最近はずっと Microsoft の Excel でVBAプログラムを作成している。

VBA だろうと何だろうと保守性の低いプログラムを作りたくないので、機能単位でクラスモジュールにしているが、所詮 Excel なので、Book 間でソースが共有できない。
ここが、保守管理上一番の問題点かな?と感じている。
100個プログラムを作って、共通部分に仕様変更があれば、100回修正を行うかモジュール単位でインポートを行う必要がある。
一つのモジュール内に共通部分と独自部分が共存していれば、単にインポートすれば良い問題ではなくなる。しかし、VBA のクラスモジュールは継承が出来ないので、機能単位に分けたときに、それをさらに共通部分と独自部分に分けて、独自部分を継承で作るというわけに行かない。

今日、またクラスモジュールを作成し使おうとしたら、こける...
原因を調べてる内に問題が見つかった。先ほど書いたこける問題とは別の問題だったのだが、動的配列に対し UBound を行うとこけるケースがあった。
動的配列を作って最初はサイズを 0 にしていたのだが、サイズ 0 の配列に対し UBound を行うとエラーが発生する仕様らしい。どうにかして回避できる方法が無いか、調べていると以下のような回避方法を見つけた。

まず、以下のように宣言を行う。
Private Declare Function SafeArrayAllocDescriptor Lib "oleaut32" _
   (ByVal cDims As Long, _
    ByRef ppsaOut() As Any) As Long

実際に使用する前に、このAPI を適用します。関数内での使用であれば、宣言の直後にやっておくと良いかと思います。今回はクラスモジュールで使用したので、Clear と言うメソッドを作ってそこで使用しました。
以下のような感じになりました。
    Dim Hairetsu() As UserType
    SafeArrayAllocDescriptor 1, Hairetsu
すると、以降で空配列に対して行う UBound(Hairetsu) が -1 になりました。
でも、こける原因が実は別にあって、グローバルで宣言されていたのを使用していると思ったら、実はローカル関数内にも同じように定義していたので、それでアウトになっていたのでした。
しかし、ウォッチにコンパイル出来ませんと出すと何かまた別のエラーのように見えちゃいます...

しかし、もう二度と同じ手には引っかからないぞ!という意味を込めてここにメモしておきます。

進学塾って通うと頭良くなるの?

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    2,702
約1年ほどお世話になっている作業場がある。 そして、その作業場の最寄り駅の駅前に、とある進学塾がある。また、自宅から駅までの間にも進学塾がある。 そのどちらにも共通することが、こいつらって頭良いのか? という素朴な疑問だ... どうして、そのような疑問があるのかというと、通っている本人に疑問の種があるのではなく、その親に問題があるからだ。 どういう問題かというと、進学塾に通っている生徒の送迎を親が行っているのだが、塾の授業が終わる前に向かえに来るので、当然子供が出てくるのを待つことになる。 その待つ場所が問題で、交差点の真ん中であろうが対向車線に駐車があって、通常の車の通行の妨げになる様な場合でも、ちょっと遠慮しているようだが、基本的には自己の利益優先で駐車している。 このようなモラルの無い親の子供では、当然子供もモラルがないだろう。 親の背中を見て子は育つのだ! 進学塾に通わせる前に、自分の交通道徳みなおせー!というか、道路交通法勉強し直せば?

サイトカレンダー

サイトカレンダーをスキップ

2025年 05月
«
»
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

新着情報

記事 新着(24時間)

-

コメント 新着(2日)

トラックバック 新着(2日)

-

リンク 新着(2週)

新しいリンクはありません

ファイル (14日)