!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part69
https://mevius.5ch.net/test/read.cgi/tech/1607786543/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part70
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ b6da-6NWR)
2021/03/18(木) 22:08:43.71ID:jtngtgXU02デフォルトの名無しさん (ワッチョイ 013d-drwQ)
2021/03/18(木) 22:33:41.83ID:e6JgDwDC0 教えて下さい。
あるシートに買物記録があり、日付や購入店、商品名や単価の他に、商品の分類という列があります。
その列には「文具」「食品」「書籍」等が入力されています。
VBAで以下の動作をさせたいです。
↓
別シートにあるダウンリストに、選択肢として、この商品分類に入力されている値を設定する。
重複して入力されている値は無視。入力されているすべての「分類」をひとつずつ選択肢にする。
↑
これをどう書けばいいのか、教えて下さい。
よろしくお願いいたします。
あるシートに買物記録があり、日付や購入店、商品名や単価の他に、商品の分類という列があります。
その列には「文具」「食品」「書籍」等が入力されています。
VBAで以下の動作をさせたいです。
↓
別シートにあるダウンリストに、選択肢として、この商品分類に入力されている値を設定する。
重複して入力されている値は無視。入力されているすべての「分類」をひとつずつ選択肢にする。
↑
これをどう書けばいいのか、教えて下さい。
よろしくお願いいたします。
3デフォルトの名無しさん (ワッチョイ 13ad-7MQm)
2021/03/19(金) 02:09:13.85ID:pQtJO8X70 関数でも分類列をMATCHで検索してRow()と不一致なら空白として、それを入力規則にすれば出来そう
VBAでやるなら連想配列使って重複弾いて、かな
VBAでやるなら連想配列使って重複弾いて、かな
4デフォルトの名無しさん (アウアウウー Sa5d-dI/L)
2021/03/19(金) 12:08:42.44ID:Efxeclnea >>2
もう少し個別にどの部分で詰まっているか書いた方がいいんじゃね
もう少し個別にどの部分で詰まっているか書いた方がいいんじゃね
5デフォルトの名無しさん (ワッチョイ 4901-gJ6t)
2021/03/19(金) 12:19:16.87ID:Rf8ZEH4N0 >>2
ワークシート関数でいいなら
適当なセルに
=UNIQUE(商品の分類が入力された列)
と入力すると重複整理された配列が入力される
プルダウンリストを作りたいセルを選択して「データの入力規則」を選択、
規則をリスト、ソースをさっき作った配列がある列にする
ワークシート関数でいいなら
適当なセルに
=UNIQUE(商品の分類が入力された列)
と入力すると重複整理された配列が入力される
プルダウンリストを作りたいセルを選択して「データの入力規則」を選択、
規則をリスト、ソースをさっき作った配列がある列にする
6デフォルトの名無しさん (アウアウウー Sa5d-/HWa)
2021/03/19(金) 13:13:27.10ID:LUl3FuSJa ピボットグラフのRefresh処理が重くて困ってます
汎用的な処理中に停止すべき項目(画面描画、自動計算、イベント、アラート等)は停止させています
元テーブルの行は100程度です
処理を軽くする方法があればご教示願います
汎用的な処理中に停止すべき項目(画面描画、自動計算、イベント、アラート等)は停止させています
元テーブルの行は100程度です
処理を軽くする方法があればご教示願います
7デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/19(金) 20:19:38.16ID:TXt81ZmU0 >>6
ピボットテーブルの設定で「更新時に列幅を自動調整する」のチェックを外す
ピボットテーブルの設定で「更新時に列幅を自動調整する」のチェックを外す
8デフォルトの名無しさん (ワッチョイ 4901-gJ6t)
2021/03/19(金) 20:23:00.26ID:Rf8ZEH4N0 ググるとそれ出て来るけど、あんまり意味ないよ
って言いつつ効果あったら恥ずかしいけど
って言いつつ効果あったら恥ずかしいけど
9デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/19(金) 22:16:15.80ID:TXt81ZmU0 初心者にはそのくらいしか教えられん
10デフォルトの名無しさん (アウアウウー Sa5d-/HWa)
2021/03/19(金) 22:28:12.63ID:ZGQ0wMm+a11デフォルトの名無しさん (ワッチョイ 4901-gJ6t)
2021/03/19(金) 23:06:18.73ID:Rf8ZEH4N0 というか元々のグラフ生成が重いのかマクロが重いのか分からん
普通に更新ボタン押しても重いの?
普通に更新ボタン押しても重いの?
12デフォルトの名無しさん (アウアウウー Sa5d-/HWa)
2021/03/19(金) 23:55:25.74ID:tSoX9T0pa13デフォルトの名無しさん (ワッチョイ 4901-gJ6t)
2021/03/20(土) 00:13:52.57ID:1HieLmil0 グラフ更新よりも関数で固まってる可能性の方が高いから、
一度全部の関数を削除してみて解決するか確認した方がいいと思う
自動計算切っててもピボット更新時に再計算されてる筈だし
一度全部の関数を削除してみて解決するか確認した方がいいと思う
自動計算切っててもピボット更新時に再計算されてる筈だし
14デフォルトの名無しさん (アウアウウー Sa5d-/HWa)
2021/03/20(土) 01:01:30.93ID:7VltWvHha >>13
ありがとうございます
ワークシート関数は使わず、計算は全部vbaでやっています
関数と言えるのはピボットグラフのグラフ部分だけです
ピボットグラフのグラフ部分の関数が重くなっている可能性が考えられるかも、と思いました
ありがとうございます
ありがとうございます
ワークシート関数は使わず、計算は全部vbaでやっています
関数と言えるのはピボットグラフのグラフ部分だけです
ピボットグラフのグラフ部分の関数が重くなっている可能性が考えられるかも、と思いました
ありがとうございます
15デフォルトの名無しさん (ワッチョイ 09da-dI/L)
2021/03/20(土) 04:43:36.06ID:kQoUW+sA0 すげえなワークシート関数一切使わんでマクロだけでやるとは
16デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/20(土) 06:51:00.93ID:EyTYq69F0 遅いとか速いとか漠然としているので何秒かかっているかもわからんし
データ量やステップが増えればある程度遅くなるのは当然じゃね
データ量やステップが増えればある程度遅くなるのは当然じゃね
17デフォルトの名無しさん (ワッチョイ b15f-1iFT)
2021/03/20(土) 07:28:18.81ID:/meO8w1y0 2〜3秒でも遅いと思う人もいるしね
18デフォルトの名無しさん (ワッチョイ 7b35-cZ1W)
2021/03/20(土) 10:08:34.03ID:D1FjuE5r0 VBA使ってんならどの部分でどんだけ時間かかってるか測定すりゃいいだけの話なのになぜしないんだろう
19デフォルトの名無しさん (アウアウウー Sa5d-/HWa)
2021/03/20(土) 11:15:44.57ID:Awf5aTeqa20デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/20(土) 20:35:40.01ID:EyTYq69F0 PCの性能が低いんじゃね
21デフォルトの名無しさん (ワッチョイ 09da-dI/L)
2021/03/20(土) 20:48:09.36ID:kQoUW+sA0 それだ!
パソコンのせい
ゲーミング用買えば全てにおいてスマホ級の速さだ!
パソコンのせい
ゲーミング用買えば全てにおいてスマホ級の速さだ!
2021/03/21(日) 16:59:06.62
5chのスレで1000まで書き込まれたスレを1から1000までコピペしてsheet1に貼り付け
sheet1を特定のキーワードで検索して、書き込まれたレスと返信があったレスを抽出してsheet2に貼り付けしたいです
返信がない場合は空白と入力したいです
アイデアが思い付きません、宜しくお願いします
sheet1を特定のキーワードで検索して、書き込まれたレスと返信があったレスを抽出してsheet2に貼り付けしたいです
返信がない場合は空白と入力したいです
アイデアが思い付きません、宜しくお願いします
23デフォルトの名無しさん (ワッチョイ b15f-1iFT)
2021/03/21(日) 17:54:39.86ID:fT/r6tJT0 いつもの
24デフォルトの名無しさん (ワッチョイ d17c-0ZVt)
2021/03/21(日) 21:09:20.26ID:aZS3hsKq0 >>6
イベントやアラートって目的も無く停止しない方がいいと思うが
イベントやアラートって目的も無く停止しない方がいいと思うが
25デフォルトの名無しさん (ラクッペペ MMeb-GXsX)
2021/03/22(月) 05:59:51.89ID:B7/s/yNjM >>22
5chアフィ乙
5chアフィ乙
26デフォルトの名無しさん (アウアウウー Sa5d-TxCv)
2021/03/23(火) 06:37:42.10ID:3hKAtAlua エクセルからhtmlで保存するとき
グラフが1000以上でもできますか
グラフが1000以上でもできますか
27デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/23(火) 10:17:41.75ID:lizcePOK0 自分で作らずに質問してくる意味が解らない
28デフォルトの名無しさん (ワッチョイ 298e-GJb0)
2021/03/23(火) 14:45:46.64ID:KXdqd9JD0 ゆとりだから
29デフォルトの名無しさん (ワッチョイ 5190-U6ZO)
2021/03/23(火) 15:16:16.58ID:J1vTYXys0 選択した範囲をグラフにするマクロを作りたいです
マクロ記録でグラフ化するまでを記録し、それを改造してやっているのですが
' Macro1 Macro
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlRadar
ActiveChart.SetSourceData Source:=Range(左上:右下)
End Sub
「選択してる範囲を取得」してその範囲を代入する方法がよくわかりません
ActiveChart.SetSourceData Source:=Range(左上:右下)
のRangeの左上、右下部分にSelection(1)やSelection(Selection.Count)を入れようとしてるのですがエラーになります
マクロ記録でグラフ化するまでを記録し、それを改造してやっているのですが
' Macro1 Macro
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlRadar
ActiveChart.SetSourceData Source:=Range(左上:右下)
End Sub
「選択してる範囲を取得」してその範囲を代入する方法がよくわかりません
ActiveChart.SetSourceData Source:=Range(左上:右下)
のRangeの左上、右下部分にSelection(1)やSelection(Selection.Count)を入れようとしてるのですがエラーになります
30デフォルトの名無しさん (JP 0H63-THbH)
2021/03/23(火) 17:44:03.01ID:XH4udpo7H selectionだけでいいんじゃね
31デフォルトの名無しさん (ワッチョイ 13ad-7MQm)
2021/03/23(火) 17:59:59.95ID:dulEqDGL0 チャートをセレクトしてるからセルのセレクトが外れてるんだよ
Addchartの時にセレクトじゃなくてオブジェクト変数にセットして
アクティブチャートの行を【変数名】.(以下略)にしてやってみ
変数にセットするときに文頭のSetを忘れないようにな
Addchartの時にセレクトじゃなくてオブジェクト変数にセットして
アクティブチャートの行を【変数名】.(以下略)にしてやってみ
変数にセットするときに文頭のSetを忘れないようにな
32デフォルトの名無しさん (ワッチョイ 71fd-ED79)
2021/03/24(水) 18:47:39.00ID:7fnGaRlR0 エラー処理で On Error GoTo を On Err GoTo と書いていて
全く気付かずエラーになって初めて、ラベルに飛ばないので気づきました。
デバッグでは判定しないようですが、これらを事前にチェックで見つけることは
出来ないのですかね?
全く気付かずエラーになって初めて、ラベルに飛ばないので気づきました。
デバッグでは判定しないようですが、これらを事前にチェックで見つけることは
出来ないのですかね?
33デフォルトの名無しさん (テテンテンテン MMeb-g1di)
2021/03/24(水) 19:49:11.93ID:SmPCs0wuM ヤフーファイナンスの仕様が変わった?のか、
当該銘柄のページから
Set FR = rngResult.Find(What:="出来高*", LookAt:=xlWhole)
みたいな感じで出来高取得してたのが
できなくなった
どこを直せばいいのかわからん
もしかしてこのやり方では
取得できなくなった?
当該銘柄のページから
Set FR = rngResult.Find(What:="出来高*", LookAt:=xlWhole)
みたいな感じで出来高取得してたのが
できなくなった
どこを直せばいいのかわからん
もしかしてこのやり方では
取得できなくなった?
34デフォルトの名無しさん (ドコグロ MM63-xhhb)
2021/03/24(水) 19:50:41.85ID:jjB0JAKeM >>32
まともなコードならGoto文なんてたいしてないはずだからGoto検索して目視確認で良いんじゃね?
まともなコードならGoto文なんてたいしてないはずだからGoto検索して目視確認で良いんじゃね?
3529 (ワッチョイ 9990-oXDN)
2021/03/24(水) 20:04:27.24ID:lll8bKoA0 うまくいきました、ありがとうございました
もう一つ質問させてください
以下は↓の画像のようにデータを範囲選択し実行した場合、3項目ごとに3つのグラフを表示するマクロです
@https://i.imgur.com/qb9quh1.jpg
Sub Macro1()
' Macro1 Macro
Set CTop = Selection(1)
Set CLast = Selection(Selection.Count)
Dim i As Integer
For i = 0 To 2
y = i * 3
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlRadar
.SetSourceData Source:=Range(CTop.Offset(0, y), CLast.Offset(0, y))
End With
Next i
End Sub
ただ、データに問題があり、「行9」以降の部分を抜き出してグラフを作りたいんです
そこで↓のように範囲選択をして実行したのですが、系列名が出ないのでどのデータかわかりにくいんですよね
Ahttps://i.imgur.com/u2vrDOl.jpg
実際のデータは膨大なため、いちいち「行○○〜行○○まで」と数値で指定するのは難しいです
できればA画像のように手動で範囲選択した場合、@のようにa,b,cと系列名が出るのが理想です
.SetSourceData Source:=Range(○○) の部分をうまく変更すればいいのか、それとも
.SeriesCollection(1).Name = ○○ とあとで系列名を変えるのが良いのでしょうか?
もう一つ質問させてください
以下は↓の画像のようにデータを範囲選択し実行した場合、3項目ごとに3つのグラフを表示するマクロです
@https://i.imgur.com/qb9quh1.jpg
Sub Macro1()
' Macro1 Macro
Set CTop = Selection(1)
Set CLast = Selection(Selection.Count)
Dim i As Integer
For i = 0 To 2
y = i * 3
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlRadar
.SetSourceData Source:=Range(CTop.Offset(0, y), CLast.Offset(0, y))
End With
Next i
End Sub
ただ、データに問題があり、「行9」以降の部分を抜き出してグラフを作りたいんです
そこで↓のように範囲選択をして実行したのですが、系列名が出ないのでどのデータかわかりにくいんですよね
Ahttps://i.imgur.com/u2vrDOl.jpg
実際のデータは膨大なため、いちいち「行○○〜行○○まで」と数値で指定するのは難しいです
できればA画像のように手動で範囲選択した場合、@のようにa,b,cと系列名が出るのが理想です
.SetSourceData Source:=Range(○○) の部分をうまく変更すればいいのか、それとも
.SeriesCollection(1).Name = ○○ とあとで系列名を変えるのが良いのでしょうか?
36デフォルトの名無しさん (ワッチョイ 13ad-7MQm)
2021/03/24(水) 20:32:05.20ID:HXzqnMHf0 個人的には系列名変える方が好き
>>32
インタプリタは事前に文法チェックをしないのが普通ですから、そういうのはインタプリタには無理でしょう‥‥
インタプリタは事前に文法チェックをしないのが普通ですから、そういうのはインタプリタには無理でしょう‥‥
38デフォルトの名無しさん (ワッチョイ b92f-6umI)
2021/03/24(水) 22:00:53.02ID:T3engiTo0 いまどき純粋なインタプリタなんてそうそうないけどな
一応VBAは事前にコンパイルチェックできるが、>>32は
On 変数 GoTo xxっていう文法があってそれにそっているからエラーにならない
そして変数宣言を強制しても、Errって組み込みオブジェクトが宣言なしで使えるという罠
なんかコード分析するようなツールでもあれば検出できるかもしれんが、まあ標準の範囲じゃ無理だな
一応VBAは事前にコンパイルチェックできるが、>>32は
On 変数 GoTo xxっていう文法があってそれにそっているからエラーにならない
そして変数宣言を強制しても、Errって組み込みオブジェクトが宣言なしで使えるという罠
なんかコード分析するようなツールでもあれば検出できるかもしれんが、まあ標準の範囲じゃ無理だな
39デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/24(水) 22:54:43.12ID:/MIQ1K/L0 >>35
元データと選択された表示用データを別にすればいいんじゃね
元データと選択された表示用データを別にすればいいんじゃね
40デフォルトの名無しさん (ワッチョイ 1363-ED79)
2021/03/25(木) 01:08:37.06ID:QAr0K9ya0 いきなりアホになってコード組むのが劇遅くなりました。
きれいなコードを書こうと思ったんです。
きれいなコードを書こうと思ったんです。
41デフォルトの名無しさん (アウアウウー Sa5d-dI/L)
2021/03/25(木) 04:40:02.78ID:d+5Eu7Qca 思っただけにしとけ
4232 (ワッチョイ 71fd-ED79)
2021/03/25(木) 10:21:24.54ID:Btw5OylJ0 ありがとうございました。
自分で注意深くやるしかないんですね
実行中のfunction(やsub)名を取得することは可能でしょうか?
やりたいことはエラー処理時にその名称を表示したいのですが
べた書きするしかないですかね
Public Function test() As String
On Error testErr
testErrr:
MsgBox "testErr" & vbCrLf & "エラー番号:" & Err.Number & vbCrLf & "エラー内容:" & Err.Description, vbExclamation
End Function
自分で注意深くやるしかないんですね
実行中のfunction(やsub)名を取得することは可能でしょうか?
やりたいことはエラー処理時にその名称を表示したいのですが
べた書きするしかないですかね
Public Function test() As String
On Error testErr
testErrr:
MsgBox "testErr" & vbCrLf & "エラー番号:" & Err.Number & vbCrLf & "エラー内容:" & Err.Description, vbExclamation
End Function
43デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/25(木) 10:44:00.77ID:kL+lpreE0 あくまで個人的だが
MsgBox "○○で異常が発生しました." & vbCrLf & "Err:" & Err.Number & " " & Err.Description, vbExclamation, "Function test"
MsgBox "○○で異常が発生しました." & vbCrLf & "Err:" & Err.Number & " " & Err.Description, vbExclamation, "Function test"
44デフォルトの名無しさん (ブーイモ MM4d-7MQm)
2021/03/25(木) 12:19:36.16ID:v0lS7PpFM 個人的には、だけど最終的にはエラー停止が発生せずイレギュラーの場合は自らメッセージを出して処理を終了するってするのが望ましいんじゃないかなぁ
動作確認で何実行してるか知りたいだけなら各プロシージャの頭にDebug.Printでプロシージャ名吐き出しておけばどこで止まったかが分かりやすい
まぁDebug.Printって軽くはないから少し大きめのプログラムだと動作確認中は時間かかる感じになっちゃうだろうけど
動作確認で何実行してるか知りたいだけなら各プロシージャの頭にDebug.Printでプロシージャ名吐き出しておけばどこで止まったかが分かりやすい
まぁDebug.Printって軽くはないから少し大きめのプログラムだと動作確認中は時間かかる感じになっちゃうだろうけど
45デフォルトの名無しさん (ワッチョイ 0bda-4Ddi)
2021/03/25(木) 13:26:17.29ID:kL+lpreE0 確かにそうだ、異常が出ないで済むように入力データのチェックとか
ファイルの有無とかを先に確認すればエラーなんか滅多に起きないからな
ファイルの有無とかを先に確認すればエラーなんか滅多に起きないからな
46デフォルトの名無しさん (ワッチョイ 71fd-ED79)
2021/03/25(木) 13:41:18.71ID:Btw5OylJ0 >>45
勿論そういうチェックは入れていますよ
勿論そういうチェックは入れていますよ
47デフォルトの名無しさん (JP 0H4d-4Ddi)
2021/03/25(木) 14:16:03.41ID:NGSCZFfJH ちゃんとチェックしてればOn Errorの出番なんか滅多にないはずだけど
複数の関数でエラーが出るなんて、あきらかに設計がおかしい
複数の関数でエラーが出るなんて、あきらかに設計がおかしい
48デフォルトの名無しさん (ワッチョイ 134f-uqQH)
2021/03/25(木) 20:31:33.14ID:hvCMihey0 >>42
そうだね。VBAと言うかVB6系のは基本ベタ書きするしかない。
例外としてクラシックASPでVBS走らせたときはエラー行を表示させることが出来る。
VB.Netになるとその辺の情報は細やかに取得出来る。
VBAはベースが古い言語だから仕方がない。
そうだね。VBAと言うかVB6系のは基本ベタ書きするしかない。
例外としてクラシックASPでVBS走らせたときはエラー行を表示させることが出来る。
VB.Netになるとその辺の情報は細やかに取得出来る。
VBAはベースが古い言語だから仕方がない。
49デフォルトの名無しさん (ワッチョイ 134f-uqQH)
2021/03/25(木) 20:56:22.97ID:hvCMihey0 >>47
別に設計がおかしいと言うことはないよ。
これはVBAに限らず論理エラーで把握しきれないものは実行時エラーとして捕まえる仕組みは当然のように設定する場合がある。
例えばDBに繋ぎに行って繋がったけどその後で何らかしらの外部的要因で切断された場合など、
実行時エラーが発生するのでその場合は何度か再接続を試みてダメだったら初めてエラーとしてポップアップするとか。
その場合、当然データ復旧させるためにもどこでどんなことやろうとして落ちたのかの情報は重要になってくることが多い。
その他にも概ね実行時エラーは予期せず落ちるものの方が多いので
むしろ状況を把握するためにも細かい情報が必要になることの方が多いよ。
別に設計がおかしいと言うことはないよ。
これはVBAに限らず論理エラーで把握しきれないものは実行時エラーとして捕まえる仕組みは当然のように設定する場合がある。
例えばDBに繋ぎに行って繋がったけどその後で何らかしらの外部的要因で切断された場合など、
実行時エラーが発生するのでその場合は何度か再接続を試みてダメだったら初めてエラーとしてポップアップするとか。
その場合、当然データ復旧させるためにもどこでどんなことやろうとして落ちたのかの情報は重要になってくることが多い。
その他にも概ね実行時エラーは予期せず落ちるものの方が多いので
むしろ状況を把握するためにも細かい情報が必要になることの方が多いよ。
50デフォルトの名無しさん (JP 0H4d-4Ddi)
2021/03/25(木) 21:30:34.23ID:NGSCZFfJH それってVBAでやるようなことか?
例外処理が必要とわかってるなら.netで書いてTry Catchを使うべきだと思うが
例外処理が必要とわかってるなら.netで書いてTry Catchを使うべきだと思うが
51デフォルトの名無しさん (ワッチョイ 134f-uqQH)
2021/03/25(木) 22:07:43.24ID:hvCMihey0 >>50
.Netの環境が選択出来る状況ならそれでもいいんじゃないの?
.NetならException継承して好きにエラー設定すればいい。
けどここはあくまでEXCEL VBAのスレだからその話は置いておくよ。
後、VBAでやることかどうかと言うのはあくまで俺はだけど正直あまり選択基準にないな。
第一に要件を満たしているか、次に操作や保守がし易いかかな。まぁ、納期も重要な要素にはなるけど。
だからもし後で保守するのが楽になるなら
場合によってはエラーメッセージ出しておしまいにすることもあるだろうけど
場合によってはエラーハンドリング用のクラス作ったり、
論理エラーもRaiseして実行時エラーのように処理して一元管理したり、
後始末処理をコールバックで移譲して処理したりすることも視野に入れるよ。
.Netの環境が選択出来る状況ならそれでもいいんじゃないの?
.NetならException継承して好きにエラー設定すればいい。
けどここはあくまでEXCEL VBAのスレだからその話は置いておくよ。
後、VBAでやることかどうかと言うのはあくまで俺はだけど正直あまり選択基準にないな。
第一に要件を満たしているか、次に操作や保守がし易いかかな。まぁ、納期も重要な要素にはなるけど。
だからもし後で保守するのが楽になるなら
場合によってはエラーメッセージ出しておしまいにすることもあるだろうけど
場合によってはエラーハンドリング用のクラス作ったり、
論理エラーもRaiseして実行時エラーのように処理して一元管理したり、
後始末処理をコールバックで移譲して処理したりすることも視野に入れるよ。
52デフォルトの名無しさん (ワッチョイ b609-6iI7)
2021/03/26(金) 01:12:09.52ID:ZoYVceoP0 Date型はミリ秒を持てないのでしょうか?
エクセルシートでミリ秒まで表示できている時刻があって、そのシリアル値をVBAのDate型変数に代入するとミリ秒以下が丸められてしまいます
エクセルシートでミリ秒まで表示できている時刻があって、そのシリアル値をVBAのDate型変数に代入するとミリ秒以下が丸められてしまいます
53デフォルトの名無しさん (ワッチョイ 655f-luGl)
2021/03/26(金) 01:52:58.20ID:YMBMwB0G0 >>52
時分秒までです。
時分秒までです。
54デフォルトの名無しさん (ワッチョイ 655f-luGl)
2021/03/26(金) 01:56:39.74ID:YMBMwB0G0 >>52
Date型に入れて何がしたかったのか?
Date型に入れて何がしたかったのか?
55デフォルトの名無しさん (ワッチョイ 12ad-krmx)
2021/03/26(金) 02:03:12.37ID:NYhr3fTi0 日付を扱うならDate型使うけど
時間を扱うならDouble型使うなぁ
時間を扱うならDouble型使うなぁ
56デフォルトの名無しさん (ワッチョイ 924f-tqDZ)
2021/03/26(金) 08:07:23.35ID:3Vso6amb0 >>52
シリアル値で日付までが整数部で時間から小数点になるから小数点扱える型なのにミリ秒が扱えないと言うのが
ちょっと引っ掛かったので調べてみたよ。
方式はセルにミリ秒まで表示出来るフォーマットを設定して(yyyy/mm/dd hh:mm:ss.000)
隣のセルにその値を代入する数式を書いて、数値で小数点16桁くらい表示するようなフォーマットを設定して、
またその隣にそのセルの値を代入してセルにミリ秒まで表示するフォーマットのセルを用意して
元の値が正しく表示されるか確認した。
で、VBAで最初のセルの値をDATE型の変数に入れてDouble型に変換したら、
キチンと2番目のセルと同じ頭になることが確認出来たので、DATE型はミリ秒まで持てることが分かった。
じゃ、何で丸められちゃうの?
と言うことになると思うけど、どうやらこういうことらしい。
https://support.microsoft.com/ja-jp/topic/excel-ワークシートのセルに-vba-の日付形式またはバリアント型の日付形式を割り当てようとすると-ミリ秒が最も近い秒に丸められます-4a0af2c5-78de-762f-6431-8669890f585b
シリアル値で日付までが整数部で時間から小数点になるから小数点扱える型なのにミリ秒が扱えないと言うのが
ちょっと引っ掛かったので調べてみたよ。
方式はセルにミリ秒まで表示出来るフォーマットを設定して(yyyy/mm/dd hh:mm:ss.000)
隣のセルにその値を代入する数式を書いて、数値で小数点16桁くらい表示するようなフォーマットを設定して、
またその隣にそのセルの値を代入してセルにミリ秒まで表示するフォーマットのセルを用意して
元の値が正しく表示されるか確認した。
で、VBAで最初のセルの値をDATE型の変数に入れてDouble型に変換したら、
キチンと2番目のセルと同じ頭になることが確認出来たので、DATE型はミリ秒まで持てることが分かった。
じゃ、何で丸められちゃうの?
と言うことになると思うけど、どうやらこういうことらしい。
https://support.microsoft.com/ja-jp/topic/excel-ワークシートのセルに-vba-の日付形式またはバリアント型の日付形式を割り当てようとすると-ミリ秒が最も近い秒に丸められます-4a0af2c5-78de-762f-6431-8669890f585b
57デフォルトの名無しさん (ワンミングク MM62-6iI7)
2021/03/26(金) 12:00:33.82ID:scqWQXi5M >>53-56
ありがとうございます
勉強中でVBAの動きを理解したいだけで、何がしたいという訳ではないです
調べてみましたが以下の理解で合っていますか?
・シリアル値はDouble型の情報
・日付(Date型)はシリアル値の表示形式を"yyyy/mm/dd h:mm:ss"に変更しているイメージ
内部ではミリ秒含むシリアル値を持っており、ミリ秒以下の情報が九められた訳ではない
・シリアル値とDate型はCDbl とCDateで相互変換可能。このときもミリ秒以下の情報は丸められない
・ミリ秒が丸められるのは、Date型をセルに=で代入したとき
これは、Date型の表示をセルにコピーしているため
・セルにDate型でなくシリアル値を代入することで回避できる
ありがとうございます
勉強中でVBAの動きを理解したいだけで、何がしたいという訳ではないです
調べてみましたが以下の理解で合っていますか?
・シリアル値はDouble型の情報
・日付(Date型)はシリアル値の表示形式を"yyyy/mm/dd h:mm:ss"に変更しているイメージ
内部ではミリ秒含むシリアル値を持っており、ミリ秒以下の情報が九められた訳ではない
・シリアル値とDate型はCDbl とCDateで相互変換可能。このときもミリ秒以下の情報は丸められない
・ミリ秒が丸められるのは、Date型をセルに=で代入したとき
これは、Date型の表示をセルにコピーしているため
・セルにDate型でなくシリアル値を代入することで回避できる
58デフォルトの名無しさん (ワッチョイ 5eda-bGNI)
2021/03/26(金) 12:08:12.92ID:RjaLBbvt0 (´-`).。oO(「丸める」をどう入力したら「九める」となるのだろう・・・知らんけど)
59デフォルトの名無しさん (ワッチョイ 924f-tqDZ)
2021/03/26(金) 12:44:01.98ID:3Vso6amb060デフォルトの名無しさん (ワッチョイ 8101-XUQ7)
2021/03/26(金) 16:10:18.31ID:xthmZvz4061デフォルトの名無しさん (ワッチョイ 655f-luGl)
2021/03/26(金) 17:55:08.09ID:YMBMwB0G062デフォルトの名無しさん (ワンミングク MM62-6iI7)
2021/03/26(金) 18:28:35.59ID:scqWQXi5M ありがとうございます
これ以上は突き詰めないようにします
ここまで解説してるサイトはほとんど見当たりませんでしたが、
Application.Waitの引数にVBAの関数を使うと何故精度が低くなるのか?など
ここまで理解して初めて分かることもあったので良かったです
ちなみに丸が九になったのはパソコンで打った文章をスマホで取り込んだからですね
これ以上は突き詰めないようにします
ここまで解説してるサイトはほとんど見当たりませんでしたが、
Application.Waitの引数にVBAの関数を使うと何故精度が低くなるのか?など
ここまで理解して初めて分かることもあったので良かったです
ちなみに丸が九になったのはパソコンで打った文章をスマホで取り込んだからですね
63デフォルトの名無しさん (ワッチョイ b18e-COrd)
2021/03/26(金) 20:17:02.94ID:9W175/Ms0 馬鹿は入力機器で漢字コードが決まると思っているのか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 【高市核兵器】 小泉コメ防衛大臣「民主党政権 岡田外務大臣の “非核三原則” に関する国会答弁を引き継いでいる」 政策堅持を明言 [485983549]
- 農民の末裔って畑持ってるの?
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- 青髭がない男がいたんですよ~
- 【速報】2025プロ野球の流行語トップ30が発表される
- ㊗157円 [194819832]
