Excel VBAでセルの中の文字列の一部の色など装飾を変える 
2022/04/15 Fri.
Excel VBAでセルの文字全体ではなく、文字の一部だけ色や太文字など文字装飾を変化させるなんて器用なことできるのかなあ?と思ったらできた。
例えば、以下の文字列に対して
Dim F As Font
Set F = Range("A1").Characters(3, 2).Font
F.Color = RGB(255, 0, 0)
F.Size = 16
F.Bold = True
上記マクロを実行すると、
このようになります。
例えば、以下の文字列に対して
Dim F As Font
Set F = Range("A1").Characters(3, 2).Font
F.Color = RGB(255, 0, 0)
F.Size = 16
F.Bold = True
上記マクロを実行すると、
このようになります。
category: VBA
VBAでテキストをファイルに書き出してファイルを消すやり方 
2020/12/12 Sat.
EXCELマクロを組んでいて覚えた備忘録。
まずはファイルの書き出し
'書き出すファイルパス
Dim f_path As String
'オープンしたファイル番号
Dim fp As Integer
f_path = "d:書き出すファイル名.txt"
fp = FreeFile
Open f_path For Output As fp
Print #fp, 書き出す文字列または文字列を格納した変数
Close fp
次にファイルの削除
Kill f_path
これだけ。
注意点はゴミ箱に残らず完全に消去される。
まずはファイルの書き出し
'書き出すファイルパス
Dim f_path As String
'オープンしたファイル番号
Dim fp As Integer
f_path = "d:書き出すファイル名.txt"
fp = FreeFile
Open f_path For Output As fp
Print #fp, 書き出す文字列または文字列を格納した変数
Close fp
次にファイルの削除
Kill f_path
これだけ。
注意点はゴミ箱に残らず完全に消去される。
category: VBA
LibreofficeでVBAを使う方法が簡単すぎて罠を疑うレベル 
2019/10/19 Sat.
Option VBASupport 1
これを先頭行に追記するだけ。
これを先頭行に追記するだけ。
category: VBA
IF文の判定比較演算子をすぐ忘れるので困る 
2015/02/17 Tue.
PHP、JAVASCRIPT、VBAを同時に使っていると、IF文の比較演算子がどれがどうだったかわからなくなるのでここにまとめておく。
そうそう、文字列結合も混乱するので書いておく。
※厳密判定は値の「型」まで判定します。
1 == "1" は TRUE(真)
1 === "1" は FALSE(偽)
※PHPの論理演算子は「&&」「||」の方が「AND」「OR」より優先度が上です。
さて、ここに書いたことを忘れないようにするにはどうしたら良いでしょう?
そうそう、文字列結合も混乱するので書いておく。
PHP | JAVASCRIPT | VBA | ||
---|---|---|---|---|
比較 演算子 | 等価 | == | == | = |
厳密等価 | === | === | ||
不等価 | != | != | <> | |
厳密不等価 | !== | !== | ||
倫理 演算子 | および | && AND | && | AND |
もしくは | || OR | || | OR | |
文字列結合 | .(ピリオド) | + | & |
1 == "1" は TRUE(真)
1 === "1" は FALSE(偽)
※PHPの論理演算子は「&&」「||」の方が「AND」「OR」より優先度が上です。
さて、ここに書いたことを忘れないようにするにはどうしたら良いでしょう?
category: PHP JavaScript VBA
EXCELマクロ実行時の「応答なし」を回避する 
2014/12/25 Thu.
EXCELマクロで時間のかかる処理を実行させたら、10秒そこらで「応答なし」となってしまう。
プログラムを見直して、何度実行させても実行後ちょっとしたら「応答なし」となる。
件数の問題か・・・?
!メモリか?!と思いリソースモニターを見てみるが、メモリの問題ではなさそう・・・・・・
ん?応答なしと表示されてるが、excel.exeがCPUを使用している・・・。動いているね?これ。
ひょっとしてと思いネットを探ってみると、やはり、EXCELで重いマクロを動かすと表面上「応答なし」となるようだ。
これを回避する方法として、重たいループの中に
DoEvents
という関数を入れると解決。
これで実行してみると、うん。応答なしにならない。
処理カウンターも表示されている。
・・・が、ちょっと重いな。
さらにネットを探ると、重いループ処理をさせるときはEXCELの表示機能を停止させると良いとのこと。
Application.ScreenUpdating プロパティ (Excel)
ループ処理の前に
Application.ScreenUpdating = False
処理後に
Application.ScreenUpdating = True
しかし、これではセルに表示していた処理カウンターが表示されない。
そこで、EXCEL下部のステータスバーに処理カウンターを表示させることにする。
Application.StatusBar = "処理カウント" & curr & "/" & maxdata
同じく処理後に
Application.StatusBar = False
ついでに、ループごとに表示させる必要もないのでdateDiff関数で5秒ごとにDoEventsを呼び出すことにしました。
dateDiff("s", date1, date2)
この関数の注意としては、date2 - date1で計算される点。
おっと、後々勘違いしそうだ。
この関数はタイマー関数ではない。あくまでも日時の差分を取得するだけの関数。
さて、この仕組みを組み込んでマクロを実行したら、、、あはははは。めっちゃ速い。
プログラムを見直して、何度実行させても実行後ちょっとしたら「応答なし」となる。
件数の問題か・・・?
!メモリか?!と思いリソースモニターを見てみるが、メモリの問題ではなさそう・・・・・・
ん?応答なしと表示されてるが、excel.exeがCPUを使用している・・・。動いているね?これ。
ひょっとしてと思いネットを探ってみると、やはり、EXCELで重いマクロを動かすと表面上「応答なし」となるようだ。
これを回避する方法として、重たいループの中に
DoEvents
という関数を入れると解決。
これで実行してみると、うん。応答なしにならない。
処理カウンターも表示されている。
・・・が、ちょっと重いな。
さらにネットを探ると、重いループ処理をさせるときはEXCELの表示機能を停止させると良いとのこと。
Application.ScreenUpdating プロパティ (Excel)
ループ処理の前に
Application.ScreenUpdating = False
処理後に
Application.ScreenUpdating = True
しかし、これではセルに表示していた処理カウンターが表示されない。
そこで、EXCEL下部のステータスバーに処理カウンターを表示させることにする。
Application.StatusBar = "処理カウント" & curr & "/" & maxdata
同じく処理後に
Application.StatusBar = False
ついでに、ループごとに表示させる必要もないのでdateDiff関数で5秒ごとにDoEventsを呼び出すことにしました。
dateDiff("s", date1, date2)
この関数の注意としては、date2 - date1で計算される点。
おっと、後々勘違いしそうだ。
この関数はタイマー関数ではない。あくまでも日時の差分を取得するだけの関数。
さて、この仕組みを組み込んでマクロを実行したら、、、あはははは。めっちゃ速い。
category: VBA
| h o m e |