■今日の午前中にしていたこと
VBAの話。今日、お仕事で「まだ作りかけ」のマクロを約2か月ぶりに触って、開発の再開をしたのですが……正直、最初は「どこまで」作っていたのか、
どこのエラーで開発を止めていたのか、思い出すだけで1、2時間かかってしまいました(-_-;。
やっぱ、こういうのはちゃんとメモして開発を止めておかないとダメですね。反省…orz。あと、ついでにfindメソッド(いわゆるEXCELの検索機能)の「厄介なトラップ」にもハマってしまっていましたしorz。
ただやはり、検索で「セルそのもの」をオブジェクトで取得できるというのはとても魅力的ではあるし、検索する対象のセルが事前にどの行、もしくはどの列にあるのか分かっているのであれば
match関数を以下のように用いて代用しちゃった方が、あとあと面倒なことにならなくていいのかなと。今日、findメソッドの「厄介なトラップ」にハマっていて、そんな風に思いましたわorz。
'指定したキーワードが入力されているセルをmatch関数で取得するサブルーチン
Public Function GetBaseCellMatchRow(ByVal sh As Worksheet, ByVal KeyWord As String, ByVal MCol As String) As Range
Dim BaseCell As Range, ItemRow As Long
Dim Flag As Boolean: Flag = True
On Error Resume Next
ItemRow = WorksheetFunction.Match(KeyWord, sh.Range(MCol & ":" & MCol), 0)
If Err.Number <> 0 Then Flag = False
On Error GoTo 0
If Not Flag Then
Err.Raise Number:=13002, _
Description:="指定された【" & KeyWord & "】が入力されたセルがシート" & sh.Name & "の"& MCol &"列にありません。" & vbCrLf & "作成者にお問い合わせください。"
End If
Set BaseCell = sh.Cells(ItemRow, Range(MCol &"1").Column)
Set GetBaseCellMatchRow = BaseCell
End Function
■今日の午後にしていたこと
今日のお昼は、昨日東都生協から届けられたかしわ餅を6個ほど(^^)。
いや~こういう和菓子を食べていると、熱~いお茶をズズズーッとすすりたくなりますな(笑)。
そして今日の晩ご飯。今晩はとにかく大量にパスタ(乾麺)をゆがいて、それにレトルトのミートソースをぶっかけて即席?ミートソーススパゲティを食べることにしました(^^)。
いやね、今日は晩ご飯を食べる1時間くらい前からお腹の虫がグーグーと鳴っていて、しかもその音がちょっとしたおならの音くらいでかい音がなっていて(笑)うるさくてうるさくて…。
VBAの話。今日、お仕事で「まだ作りかけ」のマクロを約2か月ぶりに触って、開発の再開をしたのですが……正直、最初は「どこまで」作っていたのか、
どこのエラーで開発を止めていたのか、思い出すだけで1、2時間かかってしまいました(-_-;。
やっぱ、こういうのはちゃんとメモして開発を止めておかないとダメですね。反省…orz。あと、ついでにfindメソッド(いわゆるEXCELの検索機能)の「厄介なトラップ」にもハマってしまっていましたしorz。
ただやはり、検索で「セルそのもの」をオブジェクトで取得できるというのはとても魅力的ではあるし、検索する対象のセルが事前にどの行、もしくはどの列にあるのか分かっているのであれば
match関数を以下のように用いて代用しちゃった方が、あとあと面倒なことにならなくていいのかなと。今日、findメソッドの「厄介なトラップ」にハマっていて、そんな風に思いましたわorz。
'指定したキーワードが入力されているセルをmatch関数で取得するサブルーチン
Public Function GetBaseCellMatchRow(ByVal sh As Worksheet, ByVal KeyWord As String, ByVal MCol As String) As Range
Dim BaseCell As Range, ItemRow As Long
Dim Flag As Boolean: Flag = True
On Error Resume Next
ItemRow = WorksheetFunction.Match(KeyWord, sh.Range(MCol & ":" & MCol), 0)
If Err.Number <> 0 Then Flag = False
On Error GoTo 0
If Not Flag Then
Err.Raise Number:=13002, _
Description:="指定された【" & KeyWord & "】が入力されたセルがシート" & sh.Name & "の"& MCol &"列にありません。" & vbCrLf & "作成者にお問い合わせください。"
End If
Set BaseCell = sh.Cells(ItemRow, Range(MCol &"1").Column)
Set GetBaseCellMatchRow = BaseCell
End Function
■今日の午後にしていたこと
今日のお昼は、昨日東都生協から届けられたかしわ餅を6個ほど(^^)。
いや~こういう和菓子を食べていると、熱~いお茶をズズズーッとすすりたくなりますな(笑)。
そして今日の晩ご飯。今晩はとにかく大量にパスタ(乾麺)をゆがいて、それにレトルトのミートソースをぶっかけて即席?ミートソーススパゲティを食べることにしました(^^)。
いやね、今日は晩ご飯を食べる1時間くらい前からお腹の虫がグーグーと鳴っていて、しかもその音がちょっとしたおならの音くらいでかい音がなっていて(笑)うるさくてうるさくて…。