!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part73
https://mevius.5ch.net/test/read.cgi/tech/1631485799/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part74
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d3fd-v8OD)
2021/12/20(月) 01:40:59.22ID:jnlr9GaR0360デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 10:47:59.53ID:dtRMJdwu0 >>.359
普通は変わらん
条件つき書式か何かが隠れてると思うけど、ファイルを見てみないと分からない
普通は変わらん
条件つき書式か何かが隠れてると思うけど、ファイルを見てみないと分からない
361デフォルトの名無しさん (ワッチョイ 7fda-dXQO)
2022/01/14(金) 11:11:05.48ID:HvyHPCt90 Is Nothing の判断で戸惑ってるか、Sheet を特定すれば直るのか
画像外してテストしてみりゃいいだけ
画像外してテストしてみりゃいいだけ
362デフォルトの名無しさん (ワッチョイ 7f7c-dXQO)
2022/01/14(金) 12:08:46.60ID:lOO1pB5h0363デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 12:47:39.88ID:dtRMJdwu0 >>362
ちょっと違う
どこで時間がかかっているかを見るなら、
Debug.Print Now() & "if前"
Debug.Print Now() & "最後"
みたいなものを随所に差し込んでコンソールで確認する
一番いいのは新しくシート作ってそこに画像だけ持っていって試す。
時間がかからないならそのシートを使い続ければ良い。原因なんて考えても仕方ない。大体どこか見えない所にゴミデータがあるだけだ
ちょっと違う
どこで時間がかかっているかを見るなら、
Debug.Print Now() & "if前"
Debug.Print Now() & "最後"
みたいなものを随所に差し込んでコンソールで確認する
一番いいのは新しくシート作ってそこに画像だけ持っていって試す。
時間がかからないならそのシートを使い続ければ良い。原因なんて考えても仕方ない。大体どこか見えない所にゴミデータがあるだけだ
364デフォルトの名無しさん (ワッチョイ 7f7d-3J+y)
2022/01/14(金) 13:23:22.68ID:0uAreaIs0 ありがとうございます
いずれ他の言語やソフトウェアも勉強することを視野に入れてVBAはじめてみます
いずれ他の言語やソフトウェアも勉強することを視野に入れてVBAはじめてみます
365デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 14:53:37.34ID:cSomMf3f0 Function testfunc01(word) As Integer
Dim serchChar As String
Dim serchChar As String
366デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 14:55:30.70ID:cSomMf3f0 £は英国の通貨記号ポンドです.
セルA1に"10£"を入れ,B1にA1の文字列内の£の位置を示す関数testfunc01(A1)(後述)を入力しました.正しい値は3ですが,何故か0を返します.
セルA2に"10L"を入れ,B2にA2の文字列内のLの位置を示す関数testfunc02(A2)(後述)を入力しました.正しい値3を返します.
通貨記号が問題かと思い,今度はプロシジャーtest(後述)内で変数 word = "10£"を定義しtest内でtestfunc01(word)を実行すると正しく3を返しました.
”引数がセル参照かつ通貨記号”という組み合わせの場合にtestfunc01内で使用している組み込み関数instrが正しく機能しないようです.解決策をありますでしょうか?
他にtestfunc01に関して以下の条件で試しました.
セルA3に"10あ"を入れ,B1にA1の文字列内のあの位置を示す関数testfunc03(A3)を入力すると正しく3を返す.”引数がセル参照かつ全角文字”が原因ではない.
testfunc01(word)をtestfunc01(ByVal word as string)に修正する→改善せず,間違った0を返す.
セルA1に"10£"を入れ,B1にA1の文字列内の£の位置を示す関数testfunc01(A1)(後述)を入力しました.正しい値は3ですが,何故か0を返します.
セルA2に"10L"を入れ,B2にA2の文字列内のLの位置を示す関数testfunc02(A2)(後述)を入力しました.正しい値3を返します.
通貨記号が問題かと思い,今度はプロシジャーtest(後述)内で変数 word = "10£"を定義しtest内でtestfunc01(word)を実行すると正しく3を返しました.
”引数がセル参照かつ通貨記号”という組み合わせの場合にtestfunc01内で使用している組み込み関数instrが正しく機能しないようです.解決策をありますでしょうか?
他にtestfunc01に関して以下の条件で試しました.
セルA3に"10あ"を入れ,B1にA1の文字列内のあの位置を示す関数testfunc03(A3)を入力すると正しく3を返す.”引数がセル参照かつ全角文字”が原因ではない.
testfunc01(word)をtestfunc01(ByVal word as string)に修正する→改善せず,間違った0を返す.
367デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 14:55:37.21ID:dtRMJdwu0 wordなのにintやめろ
368デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 14:55:50.74ID:cSomMf3f0 Function testfunc01(word) As Integer
Dim serchChar As String
serchChar = "£"
testfunc01 = InStr(word, serchChar)
End Function
Function testfunc02(word) As Integer
Dim serchChar As String
serchChar = "L"
testfunc02 = InStr(word, serchChar)
End Function
Function testfunc03(word) As Integer
Dim serchChar As String
serchChar = "あ"
testfunc03 = InStr(word, serchChar)
End Function
Dim serchChar As String
serchChar = "£"
testfunc01 = InStr(word, serchChar)
End Function
Function testfunc02(word) As Integer
Dim serchChar As String
serchChar = "L"
testfunc02 = InStr(word, serchChar)
End Function
Function testfunc03(word) As Integer
Dim serchChar As String
serchChar = "あ"
testfunc03 = InStr(word, serchChar)
End Function
369デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 14:56:14.35ID:dtRMJdwu0 すまん、連投なのね
ちょっとテストしてみる
ちょっとテストしてみる
370デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 14:56:24.45ID:cSomMf3f0 sub test()
Dim word, serchChar As String
serchChar = "£"
word = "10£"
Debug.Print testfunc01(word)
End Sub
結果
A B C
1 10£ 0 ←testfunc01の結果
2 10L 3 ←testfunc02の結果
3 10あ 3 ←testfunc03の結果
testの実行結果
3
3
3
Dim word, serchChar As String
serchChar = "£"
word = "10£"
Debug.Print testfunc01(word)
End Sub
結果
A B C
1 10£ 0 ←testfunc01の結果
2 10L 3 ←testfunc02の結果
3 10あ 3 ←testfunc03の結果
testの実行結果
3
3
3
371デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 14:56:53.00ID:cSomMf3f0 タブが解除されて見にくいです.すんません.
372デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 14:59:25.39ID:cSomMf3f0 最後は間違っておりいかが正しい結果です.
testの実行結果
3
testの実行結果
3
373デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 15:01:52.05ID:dtRMJdwu0 >>365,366,368,370
https://i.imgur.com/ZrKrhy8.png
>セルA1に"10£"を入れ,B1にA1の文字列内の£の位置を示す関数testfunc01(A1)(後述)を入力しました.正しい値は3ですが,何故か0を返します.
俺の環境では3が返ってきた
A1がおかしい気がする
=CODE(MID(A1,3,1))
で「8562」が返ってくれば、ポンドの文字は間違い無いと思う
もし8562以外だと、別の文字が入っている気がする
https://i.imgur.com/ZrKrhy8.png
>セルA1に"10£"を入れ,B1にA1の文字列内の£の位置を示す関数testfunc01(A1)(後述)を入力しました.正しい値は3ですが,何故か0を返します.
俺の環境では3が返ってきた
A1がおかしい気がする
=CODE(MID(A1,3,1))
で「8562」が返ってくれば、ポンドの文字は間違い無いと思う
もし8562以外だと、別の文字が入っている気がする
374デフォルトの名無しさん (ワッチョイ 5f2f-EgL+)
2022/01/14(金) 15:02:23.56ID:P/5qDoLq0 ポンド記号が書式で出てるんじゃないかと予想
セルの値をどうやって取得してチェック関数に渡してるんだ?
セルの値をどうやって取得してチェック関数に渡してるんだ?
375デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 15:03:43.93ID:dtRMJdwu0 >>374
あぁほぼ間違いなくそれだ
あぁほぼ間違いなくそれだ
376デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 16:01:27.94ID:cSomMf3f0 >>373
>>374
「ポンド記号が書式で出てる」ということはありません.
10£はサンプルとして簡単にしただけで,実際には10£5s9d(10ポンド5シリング9ペンス)をペンスに換算するプロセスで直面した問題です.
原因は通貨記号の半角と全角の問題であることがわかりましたが解決策がわかりません.
A1の£のコードは63でした.
一方,testfunc01内の£をエクセルにコピペしてcode関数で値を取得すると8562でした.
A1の£をVBAのプロシージャ内にコピペすると?になります.
エクセルの通貨記号は£,VBAのプロシージャ内の通貨記号をコピペしたものは£で,サイズが異なるので半角と全角の違いだと思います.
通貨記号を入力する時はエクセルでもVBAプロシジャーでも”ポンド”と打ち込でで変換しますが半角一択です(googleのIMEを使用).
VBAのプロシージャ内で半角(コード番号63)が何故全角(コード番号8562)に自動的に変換されるのかわかりません.
エクセルの£をVBAのプロシジャーにコピペしても?になるので,半角の£をプロシジャー内で使う方法が見つかりません.
逆にエクセルで10£と打ち込んだ後半角の£を全角の£に置換するとうまくいきました.しかし毎回置換するのは面倒です.
結局,通貨記号の入力時に半角と全角が選択できるか,VBAで内で自動的に全角に変換されないようにできればば問題は解決するのですが.
MSIMEに切り替えると、ポンドの候補として、£(全角)と£(環境依存)がでてきました。エクセルではとちらでも選べますが、VBA内では環境依存を選んでも強制的に全角に変換されます。
VBAの環境設定の問題でしょうか?
最悪の場合は、エクセルサイドで半角を全角に置換するマクロで解決する方法がありますが、できれば入力時に半角と全角で意図したほうを入力できるという解決策がいいです。
うまい解決策はないでしょうか?
>>374
「ポンド記号が書式で出てる」ということはありません.
10£はサンプルとして簡単にしただけで,実際には10£5s9d(10ポンド5シリング9ペンス)をペンスに換算するプロセスで直面した問題です.
原因は通貨記号の半角と全角の問題であることがわかりましたが解決策がわかりません.
A1の£のコードは63でした.
一方,testfunc01内の£をエクセルにコピペしてcode関数で値を取得すると8562でした.
A1の£をVBAのプロシージャ内にコピペすると?になります.
エクセルの通貨記号は£,VBAのプロシージャ内の通貨記号をコピペしたものは£で,サイズが異なるので半角と全角の違いだと思います.
通貨記号を入力する時はエクセルでもVBAプロシジャーでも”ポンド”と打ち込でで変換しますが半角一択です(googleのIMEを使用).
VBAのプロシージャ内で半角(コード番号63)が何故全角(コード番号8562)に自動的に変換されるのかわかりません.
エクセルの£をVBAのプロシジャーにコピペしても?になるので,半角の£をプロシジャー内で使う方法が見つかりません.
逆にエクセルで10£と打ち込んだ後半角の£を全角の£に置換するとうまくいきました.しかし毎回置換するのは面倒です.
結局,通貨記号の入力時に半角と全角が選択できるか,VBAで内で自動的に全角に変換されないようにできればば問題は解決するのですが.
MSIMEに切り替えると、ポンドの候補として、£(全角)と£(環境依存)がでてきました。エクセルではとちらでも選べますが、VBA内では環境依存を選んでも強制的に全角に変換されます。
VBAの環境設定の問題でしょうか?
最悪の場合は、エクセルサイドで半角を全角に置換するマクロで解決する方法がありますが、できれば入力時に半角と全角で意図したほうを入力できるという解決策がいいです。
うまい解決策はないでしょうか?
377デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 16:45:24.64ID:dtRMJdwu0 >>376
半角ポンドとエルは同じ文字コードなのかな。スラッシュと円マークみたいなもんかね
こういう場合は、検索する側、される側を両方半角小文字に揃えれば良い
Function testfunc01(word) As Integer
Dim serchChar As String
serchChar = "£"
testfunc01 = InStr(StrConv(word, 10), StrConv(serchChar, 10))
End Function
半角ポンドとエルは同じ文字コードなのかな。スラッシュと円マークみたいなもんかね
こういう場合は、検索する側、される側を両方半角小文字に揃えれば良い
Function testfunc01(word) As Integer
Dim serchChar As String
serchChar = "£"
testfunc01 = InStr(StrConv(word, 10), StrConv(serchChar, 10))
End Function
378デフォルトの名無しさん (ワッチョイ 5f2f-EgL+)
2022/01/14(金) 17:12:55.74ID:P/5qDoLq0 VBE内ではたしかSHIFT_JISしか使えんかった気がするな
文字リテラルで書くのやめて、CHRWとか使えばいいんじゃね
Strconvで行けるかなぁ
そもそも半角ポンド記号とかいう想定がない気がする
文字リテラルで書くのやめて、CHRWとか使えばいいんじゃね
Strconvで行けるかなぁ
そもそも半角ポンド記号とかいう想定がない気がする
379デフォルトの名無しさん (ワッチョイ 7fda-dXQO)
2022/01/14(金) 17:20:31.63ID:HvyHPCt90 別角度からのほほんと見てるけど、> 10£5s9d(10ポンド5シリング9ペンス) という元データがあるんだろうか?
イギリスはポンドとペンスが通貨単位でシリングというのは1971年以前の単位だと出てくるんだが
で、1ポンド = 100ペンス 10£5s9d というテキストで渡されるから変換したいんで£の位置を知りたい は判るが
そこで躓いて先に進まないと成れば、事前に£を他の文字に変換してからExceに入れてはどうか
すでに目を通しているとは思うが
通貨定数について
https://docs.microsoft.com/ja-jp/office/client-developer/visio/about-currency-constants
EUROCONVERT 関数
https://support.microsoft.com/ja-jp/office/euroconvert-%E9%96%A2%E6%95%B0-79c8fd67-c665-450c-bb6c-15fc92f8345c
MSに問い合わせる案件のような気もする
イギリスはポンドとペンスが通貨単位でシリングというのは1971年以前の単位だと出てくるんだが
で、1ポンド = 100ペンス 10£5s9d というテキストで渡されるから変換したいんで£の位置を知りたい は判るが
そこで躓いて先に進まないと成れば、事前に£を他の文字に変換してからExceに入れてはどうか
すでに目を通しているとは思うが
通貨定数について
https://docs.microsoft.com/ja-jp/office/client-developer/visio/about-currency-constants
EUROCONVERT 関数
https://support.microsoft.com/ja-jp/office/euroconvert-%E9%96%A2%E6%95%B0-79c8fd67-c665-450c-bb6c-15fc92f8345c
MSに問い合わせる案件のような気もする
380デフォルトの名無しさん (スップ Sd9f-lUoQ)
2022/01/14(金) 17:28:00.48ID:2Gg8wBAvd >>376
ポンド記号は3種類ある
JISコード(Shift-JISコード)、ユニコード、イギリス向けOSの環境依存文字
使用者にどれかを強制させて統一させるのはものすごく難しいので、どれが入ってきても混じっててもいいように、
プログラムを複数のパターンに対応できるように作るしかない
ポンド記号は3種類ある
JISコード(Shift-JISコード)、ユニコード、イギリス向けOSの環境依存文字
使用者にどれかを強制させて統一させるのはものすごく難しいので、どれが入ってきても混じっててもいいように、
プログラムを複数のパターンに対応できるように作るしかない
381デフォルトの名無しさん (アウアウウー Saa3-xQFx)
2022/01/14(金) 17:34:13.27ID:dcyjCeKBa 勝手に変換すればいいよ
382デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 17:59:37.72ID:cSomMf3f0 >>379
まさしき1971年以前の英国貨幣史の研究で使用します.10世紀くらいから第2次大戦くらいまでです.各時代の銀貨が含む銀重量と,地金価格,銀貨の額面価値の比較をするためのデータ整備でしようします,
1971年以前は,1£=20シリング,1シリング=12ペンスでした.10進法ではありません.
今は応急策としてエクセル側で£ではなくてLと使いVBAで側ではてtestfunc02タイプでしのいでいますが.
しかし将来見た時になんでこうしているのかわからなくなると思いますし,£の使い方は要注意ということも間違いなく忘れますので,この際できれば解決しておきたいのです.
>>377
半角ポンドのコードは63番でL大文字は76,l小文字108番で異なります.
¥とバックスラッシュはともに92番ですが事情が異なるようです.
またご提案の
StrConv("£", 10)を試しましたが,結果は全角の"£"を返し半角の"£"を返さないので解決策ではないです.
>>378
半角ポンド記号は存在します.
£,£は違います.
最初が半角ポンド記号で2番めが全角ポンド記号です.
まさしき1971年以前の英国貨幣史の研究で使用します.10世紀くらいから第2次大戦くらいまでです.各時代の銀貨が含む銀重量と,地金価格,銀貨の額面価値の比較をするためのデータ整備でしようします,
1971年以前は,1£=20シリング,1シリング=12ペンスでした.10進法ではありません.
今は応急策としてエクセル側で£ではなくてLと使いVBAで側ではてtestfunc02タイプでしのいでいますが.
しかし将来見た時になんでこうしているのかわからなくなると思いますし,£の使い方は要注意ということも間違いなく忘れますので,この際できれば解決しておきたいのです.
>>377
半角ポンドのコードは63番でL大文字は76,l小文字108番で異なります.
¥とバックスラッシュはともに92番ですが事情が異なるようです.
またご提案の
StrConv("£", 10)を試しましたが,結果は全角の"£"を返し半角の"£"を返さないので解決策ではないです.
>>378
半角ポンド記号は存在します.
£,£は違います.
最初が半角ポンド記号で2番めが全角ポンド記号です.
383デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 18:03:34.25ID:cSomMf3f0 自己レスです.
今が気がついたのですが,レス入力時には半角ポンドと全角ポンドは違うのですが,投稿後はどちらも全角ポンドで表示されていますね.
”£,£は違います.”のように.
このことが,今ひとつ皆様に正しく伝わりにくい原因かもしれません.
今が気がついたのですが,レス入力時には半角ポンドと全角ポンドは違うのですが,投稿後はどちらも全角ポンドで表示されていますね.
”£,£は違います.”のように.
このことが,今ひとつ皆様に正しく伝わりにくい原因かもしれません.
384デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 18:10:11.49ID:cSomMf3f0385デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 18:12:16.77ID:dtRMJdwu0386デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 18:26:28.87ID:dtRMJdwu0 >>382
俺のコードで合っている
https://i.imgur.com/XISUJtg.png
恐らくコンソールで見たんだと思うけど、VBE上はポンドが全て全角になる
ポンドを文字列にせず、全て半角にして取り扱えば問題は起きにくいと思う
serchCharの部分も文字コードの方が良いだろう
あと、Lが引っかかる理由もわからんが、恐らくあいまい検索か何かでひっかかってるのだろう
業務に使うなら、今回に限ってはvba使わずに、エクセルだけで処理したほうが良い気がする。
俺のコードで合っている
https://i.imgur.com/XISUJtg.png
恐らくコンソールで見たんだと思うけど、VBE上はポンドが全て全角になる
ポンドを文字列にせず、全て半角にして取り扱えば問題は起きにくいと思う
serchCharの部分も文字コードの方が良いだろう
あと、Lが引っかかる理由もわからんが、恐らくあいまい検索か何かでひっかかってるのだろう
業務に使うなら、今回に限ってはvba使わずに、エクセルだけで処理したほうが良い気がする。
387デフォルトの名無しさん (ワッチョイ 5f2f-EgL+)
2022/01/14(金) 18:29:18.19ID:P/5qDoLq0 >>382
存在するかどうかって言ってるんじゃなくて、SHIFT_JIS環境で想定がないんじゃないかって言ってるんだよ
ウィキでみるかぎり、U+00A3とU+FFE1らしいから、それチェックすればいいだろ
こんな感じか
Function foundPound(word As String) As Long
Dim pos As Long
pos = 0
Do Until pos >= Len(word)
pos = pos + 1
If Mid(word, pos, 1) = ChrW(&HA3) Or Mid(word, pos, 1) = ChrW(&HFFE1) Then
foundPound = pos
Exit Function
End If
Loop
End Function
存在するかどうかって言ってるんじゃなくて、SHIFT_JIS環境で想定がないんじゃないかって言ってるんだよ
ウィキでみるかぎり、U+00A3とU+FFE1らしいから、それチェックすればいいだろ
こんな感じか
Function foundPound(word As String) As Long
Dim pos As Long
pos = 0
Do Until pos >= Len(word)
pos = pos + 1
If Mid(word, pos, 1) = ChrW(&HA3) Or Mid(word, pos, 1) = ChrW(&HFFE1) Then
foundPound = pos
Exit Function
End If
Loop
End Function
388デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 18:44:27.31ID:cSomMf3f0389デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 19:11:03.04ID:dtRMJdwu0390デフォルトの名無しさん (ワッチョイ 7f7c-dXQO)
2022/01/14(金) 19:15:48.47ID:lOO1pB5h0 serchChar = ChrW(163)で行けたが
391デフォルトの名無しさん (ワッチョイ 7f7c-dXQO)
2022/01/14(金) 19:26:56.18ID:lOO1pB5h0 >>389
あ、解決してたんだね、ごめんなさい 焦
あ、解決してたんだね、ごめんなさい 焦
392デフォルトの名無しさん (ワッチョイ 5fe6-h8Qn)
2022/01/14(金) 21:30:18.78ID:+nyDUFlg0 searchCharな
393デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 21:47:12.20ID:cSomMf3f0 >>377
ありがとうございました。
動作確認できました。
一つ教えて下さい。
StrConvの第2引数ですが10はどういう意味でしょうか。
公式ヘルプには10の設定がないのでご教示いただければありがたいです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/strconv-function?f1url=%3FappId%3DDev11IDEF1%26l%3Dja-JP%26k%3Dk(vblr6.chm1011063);k(TargetFrameworkMoniker-Office.Version%3Dv15)%26rd%3Dtrue
ありがとうございました。
動作確認できました。
一つ教えて下さい。
StrConvの第2引数ですが10はどういう意味でしょうか。
公式ヘルプには10の設定がないのでご教示いただければありがたいです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/strconv-function?f1url=%3FappId%3DDev11IDEF1%26l%3Dja-JP%26k%3Dk(vblr6.chm1011063);k(TargetFrameworkMoniker-Office.Version%3Dv15)%26rd%3Dtrue
394デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/14(金) 21:51:25.41ID:dtRMJdwu0 >>393
一つならvbLowerCaseかvbNarrow(もしくは2か8)でいいんだけど、
2つ以上組み合わせる場合は、足し算する
小文字の変換 2
半角 8
足して10
今回は小文字にする必要は理屈上ないはずけど、
どうせやるならついでにやっておいたほうが良いからやってある
一つならvbLowerCaseかvbNarrow(もしくは2か8)でいいんだけど、
2つ以上組み合わせる場合は、足し算する
小文字の変換 2
半角 8
足して10
今回は小文字にする必要は理屈上ないはずけど、
どうせやるならついでにやっておいたほうが良いからやってある
395デフォルトの名無しさん (ワッチョイ 5fda-J/q9)
2022/01/14(金) 22:29:34.99ID:cSomMf3f0 >>394
ありがとうございました。引数の意味はVBA でよくやる方法ですね。
ありがとうございました。引数の意味はVBA でよくやる方法ですね。
396デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/14(金) 22:43:41.66ID:cSomMf3f0397デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/15(土) 00:25:26.50ID:w/VctcoP0 >>396
そうだと思って使っていたけど、言われてみればリファレンスにないね
あと、ごくたまに罠がある
https://www.petitmonte.com/bbs/answers?question_id=28308
そうだと思って使っていたけど、言われてみればリファレンスにないね
あと、ごくたまに罠がある
https://www.petitmonte.com/bbs/answers?question_id=28308
398デフォルトの名無しさん (ワッチョイ 7f7c-gKqL)
2022/01/15(土) 00:56:09.86ID:xF8zc0t/0 んー、セルはunicode対応で環境依存文字使えるけどエディタはsjisだから文字コード自体が違うだけかと思ってた
399デフォルトの名無しさん (ワッチョイ 5fda-J/q9)
2022/01/15(土) 01:08:19.24ID:8e4JI6z40 >>397
詳しい説明ありがとうございました。とても複雑なんですね。
詳しい説明ありがとうございました。とても複雑なんですね。
400デフォルトの名無しさん (ワッチョイ ff01-00MU)
2022/01/15(土) 11:15:34.39ID:6domvLfM0 Range.Rangeプロパティ、イミディエイトウインドウ、ローカルウインドウ 便利
401デフォルトの名無しさん (ワッチョイ 5fda-dXQO)
2022/01/15(土) 12:40:23.72ID:8e4JI6z40 >>387
文字コードについて詳しくないので教えて下さい。
ChrW(163)をセルに書き込むとポンドの半角通貨記号でした。
そのセルのcode()を見ると63でした。
2つの値が異なるのは163がユニコードの番号で63がANSIの番号だからですか?
どちらか一方だけ(例えばユニコード)に対応した関数で使用を統一する方法はあるのでしょうか。
文字コードについて詳しくないので教えて下さい。
ChrW(163)をセルに書き込むとポンドの半角通貨記号でした。
そのセルのcode()を見ると63でした。
2つの値が異なるのは163がユニコードの番号で63がANSIの番号だからですか?
どちらか一方だけ(例えばユニコード)に対応した関数で使用を統一する方法はあるのでしょうか。
402デフォルトの名無しさん (ドコグロ MM4f-KcIn)
2022/01/15(土) 13:37:09.72ID:Op2FQMu7M >>401
状況よくわからんけど AscW(Cells(1,1).Value) とかじゃ駄目なの?
状況よくわからんけど AscW(Cells(1,1).Value) とかじゃ駄目なの?
403デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/15(土) 13:37:27.88ID:w/VctcoP0404デフォルトの名無しさん (ワッチョイ df68-VTvg)
2022/01/15(土) 13:38:25.50ID:w/VctcoP0 それを考えると、変な文字でワークシートとvbaを行ったり来たりさせないほうが良いと思う
ってことぐらい注意しておけばいいんじゃないかな
ってことぐらい注意しておけばいいんじゃないかな
405デフォルトの名無しさん (バットンキン MM63-NyFv)
2022/01/15(土) 17:07:04.41ID:m8G7GxvMM クラスモジュール初めて使うんですが、
ひとつのクラスモジュールに、
マクロで使用するWsをまとめたクラスを作りたいんですが、
入力用Ws
Ws1_入力用
Ws2_入力用
一時計算用Ws
Ws1_一時計算用
Ws2_一時計算用
みたいに作ることはできるんですか?
入力用Ws(一時計算用Ws)まで入力して、ドットを打つと
インテリセンスでそれぞれのWsが選べるようになる・・・という構造をにしたいのですが。
例えば、標準モジュールから呼び出すときに
Dim ClassWs As ClassWs: Set ClassWs = New ClassWs
ClassWs.入力用Ws.Ws1_入力用
ClassWs.一時計算用Ws.Ws1_一時計算用
のような感じです。
できた場合でも、あまりこういった書き方はしないほうがよいですか?
ひとつのクラスモジュールに、
マクロで使用するWsをまとめたクラスを作りたいんですが、
入力用Ws
Ws1_入力用
Ws2_入力用
一時計算用Ws
Ws1_一時計算用
Ws2_一時計算用
みたいに作ることはできるんですか?
入力用Ws(一時計算用Ws)まで入力して、ドットを打つと
インテリセンスでそれぞれのWsが選べるようになる・・・という構造をにしたいのですが。
例えば、標準モジュールから呼び出すときに
Dim ClassWs As ClassWs: Set ClassWs = New ClassWs
ClassWs.入力用Ws.Ws1_入力用
ClassWs.一時計算用Ws.Ws1_一時計算用
のような感じです。
できた場合でも、あまりこういった書き方はしないほうがよいですか?
406デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/15(土) 18:42:53.07ID:XFuYRO140 >>401
まず、文字コードって言われているものには複数の種類があって、同じ文字であっても違う番号で表されることがある。
そして、文字コードを規定している体系によって、持っている文字の種類や数が決まってる。
これが文字コードの大前提
今回の問題は、Windows日本語版のANSIでは半角ポンド記号は定義されていないってこと
>2つの値が異なるのは163がユニコードの番号で63がANSIの番号だからですか?
ChrWはUnicodeを扱う関数
codeワークシート関数はANSIを扱う関数
同じ文字でも数値が違うのは当たり前
unicodeワークシート関数使えば当然同じ数値になる
ただしANSIでの63ってのは"?"文字のコード
codeワークシート関数の数値については、対応する文字がない場合は?のように扱うんじゃないかな
なので?の数値が帰ってきてると思われ
>どちらか一方だけ(例えばユニコード)に対応した関数で使用を統一する方法はあるのでしょうか。
ANSIで使えない文字がある以上、ユニコードでやるしかない
まず、文字コードって言われているものには複数の種類があって、同じ文字であっても違う番号で表されることがある。
そして、文字コードを規定している体系によって、持っている文字の種類や数が決まってる。
これが文字コードの大前提
今回の問題は、Windows日本語版のANSIでは半角ポンド記号は定義されていないってこと
>2つの値が異なるのは163がユニコードの番号で63がANSIの番号だからですか?
ChrWはUnicodeを扱う関数
codeワークシート関数はANSIを扱う関数
同じ文字でも数値が違うのは当たり前
unicodeワークシート関数使えば当然同じ数値になる
ただしANSIでの63ってのは"?"文字のコード
codeワークシート関数の数値については、対応する文字がない場合は?のように扱うんじゃないかな
なので?の数値が帰ってきてると思われ
>どちらか一方だけ(例えばユニコード)に対応した関数で使用を統一する方法はあるのでしょうか。
ANSIで使えない文字がある以上、ユニコードでやるしかない
407デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/15(土) 18:52:54.92ID:XFuYRO140408デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/15(土) 19:00:32.98ID:w/VctcoP0 >>405
名称が完全に二重になっているし、入力がめんどくさくなってるだけでは?
クラスはMeを使わないならあんまり使う意味は無いと思う。
事務の補助程度なら、その場面はほぼ無いと思う。ってか、vbaでクラス使った事ない。
ワークシートに別名を持たせてインテリセンスで使いたいだけなら、
関数+グローバル変数にして最初の一行で呼び出しきってしまえば良いと思う
https://i.imgur.com/2w8bUT8.png
ワークシートなら死ぬほど使うから、グローバル変数でも問題ない
名称が完全に二重になっているし、入力がめんどくさくなってるだけでは?
クラスはMeを使わないならあんまり使う意味は無いと思う。
事務の補助程度なら、その場面はほぼ無いと思う。ってか、vbaでクラス使った事ない。
ワークシートに別名を持たせてインテリセンスで使いたいだけなら、
関数+グローバル変数にして最初の一行で呼び出しきってしまえば良いと思う
https://i.imgur.com/2w8bUT8.png
ワークシートなら死ぬほど使うから、グローバル変数でも問題ない
409デフォルトの名無しさん (バットンキン MMd5-JZ3p)
2022/01/15(土) 19:19:41.65ID:m8G7GxvMM410デフォルトの名無しさん (ワッチョイ 024f-f5bc)
2022/01/15(土) 19:37:36.41ID:UMPZ1rN80 >>405
VBAではひとつのクラスはひとモジュールで書く制約があるからそのような記載は無理。
ただ、入力用と一時計算用のクラスを別に作ってWSクラスとやらの中で生成してそれをPublicのプロパティや変数にしまっておけば入れ子としての設定や読み取りは可能。
クラスを使用する前にそもそもクラスとはどういうものであってどういうときに使うと便利なのかを理解した方がいい。
VBAではひとつのクラスはひとモジュールで書く制約があるからそのような記載は無理。
ただ、入力用と一時計算用のクラスを別に作ってWSクラスとやらの中で生成してそれをPublicのプロパティや変数にしまっておけば入れ子としての設定や読み取りは可能。
クラスを使用する前にそもそもクラスとはどういうものであってどういうときに使うと便利なのかを理解した方がいい。
411デフォルトの名無しさん (アウアウウー Sa05-wAYo)
2022/01/15(土) 20:07:58.86ID:FEpdyYa5a >>409
混乱をふやしてどうする
混乱をふやしてどうする
412デフォルトの名無しさん (ワッチョイ bd5f-CIJN)
2022/01/16(日) 00:51:21.02ID:rwDbh7Xz0413デフォルトの名無しさん (ワッチョイ c5da-9BXF)
2022/01/16(日) 01:16:49.54ID:9svQYmXf0 >>406
詳しい説明ありがとうございました。
一つわからないことがあります。
> 今回の問題は、Windows日本語版のANSIでは半角ポンド記号は定義されていないってこと
とのことですが、そうしますと377さんの
serchChar = "£"
testfunc01 = InStr(StrConv(word, 10), StrConv(serchChar, 10))
のStrConv(serchChar, 10)によって全角のポンドの通貨記号は何に変換されるのですか?
詳しい説明ありがとうございました。
一つわからないことがあります。
> 今回の問題は、Windows日本語版のANSIでは半角ポンド記号は定義されていないってこと
とのことですが、そうしますと377さんの
serchChar = "£"
testfunc01 = InStr(StrConv(word, 10), StrConv(serchChar, 10))
のStrConv(serchChar, 10)によって全角のポンドの通貨記号は何に変換されるのですか?
414デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 01:18:43.61ID:JxOh46GE0 VBA・・・コンストラクタ・・・
415デフォルトの名無しさん (ワッチョイ bd5f-CIJN)
2022/01/16(日) 06:52:16.37ID:rwDbh7Xz0 >>414
あるの知らんの?
あるの知らんの?
416デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 09:31:02.87ID:JxOh46GE0417デフォルトの名無しさん (ワッチョイ 02da-9BXF)
2022/01/16(日) 13:56:03.36ID:UA4PX5Jc0 OSのVer. やExcelのVer. 更には文字コードの変遷に依っては近い将来ですら読み取れなくなって「?」でしか
表されなくなるかも知れないものを、将来の資料として保存するためにExcelで残そう という企てが不可解
例えhtmlで保存するとしても文字コードの軛からは逃れられない 保存時にPDFにするのかも知らんけど
テキストデータとして〇£〇シリング〇ペンス(ペニー) の資料が豊富にあって、それぞれから数値だけ抜き出したい
という要望だと信じていたが、そんなデータが遺されているのだろうか? シリング時代はPCすら無い時代
紙の資料がごまんと出てきた それをデジタル化してる とかなのだろうか
時代による金の含有量の変遷を遺したい とか書いていたが、ニッチな知的好奇心を満たそうとする人は
細かい事にも拘り続けるんだな、と
文末脚注に Lはポンドの意味 のひと言で済むのに シリングだって記号s ペンスは記号pだろうに
例えば沈没船の積み荷の目録が出てきた そこには〇£〇シリング〇ペンスの記載がずらずら
これ引き揚げて通貨を溶解して金にしたらインゴット〇〇本分の量だぞ! 金の総重量をExcelで集計しろ!
とかいう要望ならまだ判るんだが
表されなくなるかも知れないものを、将来の資料として保存するためにExcelで残そう という企てが不可解
例えhtmlで保存するとしても文字コードの軛からは逃れられない 保存時にPDFにするのかも知らんけど
テキストデータとして〇£〇シリング〇ペンス(ペニー) の資料が豊富にあって、それぞれから数値だけ抜き出したい
という要望だと信じていたが、そんなデータが遺されているのだろうか? シリング時代はPCすら無い時代
紙の資料がごまんと出てきた それをデジタル化してる とかなのだろうか
時代による金の含有量の変遷を遺したい とか書いていたが、ニッチな知的好奇心を満たそうとする人は
細かい事にも拘り続けるんだな、と
文末脚注に Lはポンドの意味 のひと言で済むのに シリングだって記号s ペンスは記号pだろうに
例えば沈没船の積み荷の目録が出てきた そこには〇£〇シリング〇ペンスの記載がずらずら
これ引き揚げて通貨を溶解して金にしたらインゴット〇〇本分の量だぞ! 金の総重量をExcelで集計しろ!
とかいう要望ならまだ判るんだが
418デフォルトの名無しさん (ワッチョイ c5da-9BXF)
2022/01/16(日) 14:34:44.43ID:9svQYmXf0 >>417
> テキストデータとして〇£〇シリング〇ペンス(ペニー) の資料が豊富にあって、それぞれから数値だけ抜き出したい
> という要望だと信じていたが、そんなデータが遺されているのだろうか? シリング時代はPCすら無い時代
> 紙の資料がごまんと出てきた それをデジタル化してる とかなのだろうか
「ポンド・スターリング―イギリス貨幣史 (1984年)」を読んでいる。計数上の特性を正確に理解しないと内容を追えないから。
> 文末脚注に Lはポンドの意味 のひと言で済むのに シリングだって記号s ペンスは記号pだろうに
ペンスの記号はdね。pでなくてdなのは歴史的な経緯がある。
正しく記述しておけば後から苦労しない。
それにコードとして本来期待した動きをしない時に疑問を持つのは当然。
その結果、文字コードが原因ということ、および解決法も判明した。
今後の欲に立つ。
原因不明のまま安直にLで凌ぐのは、一時対応を除いて、よくない。
> テキストデータとして〇£〇シリング〇ペンス(ペニー) の資料が豊富にあって、それぞれから数値だけ抜き出したい
> という要望だと信じていたが、そんなデータが遺されているのだろうか? シリング時代はPCすら無い時代
> 紙の資料がごまんと出てきた それをデジタル化してる とかなのだろうか
「ポンド・スターリング―イギリス貨幣史 (1984年)」を読んでいる。計数上の特性を正確に理解しないと内容を追えないから。
> 文末脚注に Lはポンドの意味 のひと言で済むのに シリングだって記号s ペンスは記号pだろうに
ペンスの記号はdね。pでなくてdなのは歴史的な経緯がある。
正しく記述しておけば後から苦労しない。
それにコードとして本来期待した動きをしない時に疑問を持つのは当然。
その結果、文字コードが原因ということ、および解決法も判明した。
今後の欲に立つ。
原因不明のまま安直にLで凌ぐのは、一時対応を除いて、よくない。
419デフォルトの名無しさん (ワッチョイ c5da-JZ3p)
2022/01/16(日) 14:54:09.16ID:EoUder1l0 >>405です。
>>410
>>412
ありがとうございます。クラス全然理解できていなくてすみません。
メンバ変数
Public ws1 As Worksheet
Public ws2 As Worksheet
にして、コンストラクタで
Private Sub Class_Initialize()
Set ws1 = Sheet1
Set ws2 = Sheet2
End Sub
を読み込ませる、という認識であってますか?
以下のように、ゲッターで各wsのプロパティを作っていくのはやめたほうがいいでしょうか。
Property Get ws1() As Worksheet
Set ws1 = Sheet1
End Property
Property Get ws2() As Worksheet
Set ws2 = Sheet2
End Property
>>410
>>412
ありがとうございます。クラス全然理解できていなくてすみません。
メンバ変数
Public ws1 As Worksheet
Public ws2 As Worksheet
にして、コンストラクタで
Private Sub Class_Initialize()
Set ws1 = Sheet1
Set ws2 = Sheet2
End Sub
を読み込ませる、という認識であってますか?
以下のように、ゲッターで各wsのプロパティを作っていくのはやめたほうがいいでしょうか。
Property Get ws1() As Worksheet
Set ws1 = Sheet1
End Property
Property Get ws2() As Worksheet
Set ws2 = Sheet2
End Property
420デフォルトの名無しさん (ワッチョイ d168-soNI)
2022/01/16(日) 15:26:39.86ID:0L8LiCPu0 Windows 10, Excel 2019
hyperlink関数を使ったリンクからブラウザを起動する時に
特定のURLのみ応答が60秒ほど遅い
クリック後すぐにEscを押すと60秒ほどの待ち時間が無くなりすんなり接続できます
遅い
= hyperlink("https://www.yodobashi.com/", "yodo")
遅くない
= hyperlink("https://www.アマゾン.co.jp/", "ama")
ちなみにExcelを介さずアクセスするとすんなり表示されます
他に60秒ほどの待ち時間を無くす方法があれば教えて下さい
hyperlink関数を使ったリンクからブラウザを起動する時に
特定のURLのみ応答が60秒ほど遅い
クリック後すぐにEscを押すと60秒ほどの待ち時間が無くなりすんなり接続できます
遅い
= hyperlink("https://www.yodobashi.com/", "yodo")
遅くない
= hyperlink("https://www.アマゾン.co.jp/", "ama")
ちなみにExcelを介さずアクセスするとすんなり表示されます
他に60秒ほどの待ち時間を無くす方法があれば教えて下さい
421デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/16(日) 15:44:15.55ID:y1CvsdF30422デフォルトの名無しさん (ワッチョイ c5da-JBal)
2022/01/16(日) 16:10:07.63ID:9svQYmXf0 >>421
そういう意味の質問じゃなくって、「Windows日本語版のANSIでは半角ポンド記号は定義されていない」と書いていたので、StrConv(serchChar, 10)では半角ポンド記号に変換できないのじゃないかと思ったわけです。でも正しく処理しているんで、VBA 上では表示はできないけど計算処理はできるということですかね。
そういう意味の質問じゃなくって、「Windows日本語版のANSIでは半角ポンド記号は定義されていない」と書いていたので、StrConv(serchChar, 10)では半角ポンド記号に変換できないのじゃないかと思ったわけです。でも正しく処理しているんで、VBA 上では表示はできないけど計算処理はできるということですかね。
423デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/16(日) 16:12:28.73ID:y1CvsdF30 >>419
クラスもモジュールの一つなんだが
まず処理の内容とモジュールの役割分担を考え直せ
インテリセンスに出したいからとか、本末転倒だ
インテリセンスに出したいだけなら、>>405の例ならクラス三つつくって
ClassWsクラスに
Public Property Get 入力用Ws() As 入力用Ws
Public Property Get 一時計算用Ws() As 一時計算用Ws
入力用Wsクラスに
Public Property Get Ws1_入力用() As Worksheet
Public Property Get Ws2_入力用() As Worksheet
一時計算用Wsクラスに
Public Property Get Ws1_一時計算用() As Worksheet
Public Property Get Ws2_一時計算用() As Worksheet
をそれぞれ定義すればできる
中身は自分で考えろ
クラスもモジュールの一つなんだが
まず処理の内容とモジュールの役割分担を考え直せ
インテリセンスに出したいからとか、本末転倒だ
インテリセンスに出したいだけなら、>>405の例ならクラス三つつくって
ClassWsクラスに
Public Property Get 入力用Ws() As 入力用Ws
Public Property Get 一時計算用Ws() As 一時計算用Ws
入力用Wsクラスに
Public Property Get Ws1_入力用() As Worksheet
Public Property Get Ws2_入力用() As Worksheet
一時計算用Wsクラスに
Public Property Get Ws1_一時計算用() As Worksheet
Public Property Get Ws2_一時計算用() As Worksheet
をそれぞれ定義すればできる
中身は自分で考えろ
424デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/16(日) 16:19:51.33ID:y1CvsdF30425デフォルトの名無しさん (ワッチョイ c5da-JBal)
2022/01/16(日) 16:33:04.70ID:9svQYmXf0 >>424
よくわかりました。ありがとうございました。
よくわかりました。ありがとうございました。
426デフォルトの名無しさん (ワッチョイ c5da-JZ3p)
2022/01/16(日) 19:01:50.46ID:EoUder1l0427デフォルトの名無しさん (ワッチョイ bd5f-CIJN)
2022/01/16(日) 19:41:57.72ID:rwDbh7Xz0 まあたしかにインテリセンス出したいだけならオブジェクト名を変更するだけでもいいかもしれんな
428デフォルトの名無しさん (アウアウウー Sa05-wAYo)
2022/01/16(日) 20:05:03.64ID:xYtP7RFCa 次の担当になる人がかわいそうだな
429デフォルトの名無しさん (ワッチョイ 02e6-kVMF)
2022/01/16(日) 20:18:31.11ID:RSDKT1580 >>362
コードは他のシートと同じだったので省きます。
画像は消しても変わりませんでした。コードを消してもセルをクリックしたときにたまに読み込みが入るので何かが動いてそうなのですがどこ見ればいいでしょうか…。
コードは他のシートと同じだったので省きます。
画像は消しても変わりませんでした。コードを消してもセルをクリックしたときにたまに読み込みが入るので何かが動いてそうなのですがどこ見ればいいでしょうか…。
430デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 20:31:17.59ID:JxOh46GE0431デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 20:31:53.39ID:JxOh46GE0432デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 20:35:43.37ID:JxOh46GE0433デフォルトの名無しさん (ワッチョイ 02e6-kVMF)
2022/01/16(日) 20:53:15.31ID:RSDKT1580436デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 21:14:52.42ID:JxOh46GE0 っって思ったけどせめてデータで出せ
メモ帳にコピペしてdotupとかそのへん
メモ帳にコピペしてdotupとかそのへん
437デフォルトの名無しさん (ワンミングク MM52-/2yr)
2022/01/16(日) 21:22:18.03ID:lhZQvquHM 馬鹿を相手にすんな
438デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 21:26:17.91ID:JxOh46GE0439デフォルトの名無しさん (ワッチョイ 82da-gAlZ)
2022/01/16(日) 22:33:39.20ID:uTGjF8kU0 >中身は自分で考えろ
おー!!カッコいいねー!!
熱血トレーナーみたいだね〜
おー!!カッコいいねー!!
熱血トレーナーみたいだね〜
440デフォルトの名無しさん (スッップ Sd22-r56g)
2022/01/16(日) 22:35:56.49ID:YgWToIcEd VBAで更新したパワークエリーが更新完了まで待機するコードありますか?
441デフォルトの名無しさん (ワッチョイ 02e6-kVMF)
2022/01/16(日) 23:13:05.80ID:RSDKT1580 Private Sub Worksheet Before DoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Hani = "N4 N1000
Const Iro. As Variant 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4 N1000')) Is Nothing Then Exit Sub
With Target
Select Case Value
Case
Value = "2000"
Case "2000
Value =""
End Select
End With
If Not Rng Is
Nothing Then
Cancel = True
If Rnginterior Colorindex = xINbre Then
Eng Interior Colorindex = Iro
Else
Prg Interior Colorindex = xiNbre
End IfEnd If
Set Rng = Nothing
End Sub
Const Hani = "N4 N1000
Const Iro. As Variant 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4 N1000')) Is Nothing Then Exit Sub
With Target
Select Case Value
Case
Value = "2000"
Case "2000
Value =""
End Select
End With
If Not Rng Is
Nothing Then
Cancel = True
If Rnginterior Colorindex = xINbre Then
Eng Interior Colorindex = Iro
Else
Prg Interior Colorindex = xiNbre
End IfEnd If
Set Rng = Nothing
End Sub
442デフォルトの名無しさん (オッペケ Srd1-kVMF)
2022/01/16(日) 23:18:31.80ID:ranDxh1Nr Googleレンズで読み込んだやつなので正確ではないけど流れは一緒です。
ネットにあった色つけコードに数字も入力するようにしています。
↑で言っていたように使用しているAシートとBシートに違いはほぼないです。というか新規シートにBをコピーしても読み込み遅くなるので全く理由がわからないです。フォントは一緒、セルの使用数は読み込み遅いシートのほうが少なく、画像も関係ないので何がなんだか…
ネットにあった色つけコードに数字も入力するようにしています。
↑で言っていたように使用しているAシートとBシートに違いはほぼないです。というか新規シートにBをコピーしても読み込み遅くなるので全く理由がわからないです。フォントは一緒、セルの使用数は読み込み遅いシートのほうが少なく、画像も関係ないので何がなんだか…
443デフォルトの名無しさん (オッペケ Srd1-kVMF)
2022/01/16(日) 23:50:40.30ID:ranDxh1Nr ごめんなさい
https://hoimins.com/uncategorized/excel-page-break-preview-slow/
多分これです。印刷範囲を設定したら読み込みがなくなりました。
https://hoimins.com/uncategorized/excel-page-break-preview-slow/
多分これです。印刷範囲を設定したら読み込みがなくなりました。
444デフォルトの名無しさん (ブーイモ MMf6-soNI)
2022/01/17(月) 12:48:25.06ID:RtDdCZiGM ほれ、タイプミスだけ直しといてやったぞ
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Hani = "N4:N1000"
Const Iro As Variant = 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4:N1000")) Is Nothing Then Exit Sub
With Target
Select Case .Value
Case ""
.Value = "2000"
Case "2000"
.Value = ""
End Select
End With
If Not Rng Is Nothing Then
Cancel = True
If Rng.Interior.ColorIndex = xlNone Then
Rng.Interior.ColorIndex = Iro
Else
Rng.Interior.ColorIndex = xlNone
End If
End If
Set Rng = Nothing
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Hani = "N4:N1000"
Const Iro As Variant = 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4:N1000")) Is Nothing Then Exit Sub
With Target
Select Case .Value
Case ""
.Value = "2000"
Case "2000"
.Value = ""
End Select
End With
If Not Rng Is Nothing Then
Cancel = True
If Rng.Interior.ColorIndex = xlNone Then
Rng.Interior.ColorIndex = Iro
Else
Rng.Interior.ColorIndex = xlNone
End If
End If
Set Rng = Nothing
End Sub
445デフォルトの名無しさん (ワッチョイ 923d-hOIA)
2022/01/18(火) 15:16:34.47ID:TQ7V1ae50 前スレの298,303なのだが、
msgboxでウィンドウを表示させるとExcelがクラッシュしないことがわかった。
だから
'マクロがクラッシュしないための措置
i = MessageBoxTimeoutA(0&, "マクロを開始します", "通知", vbMsgBoxSetForeground, 0&, 100)
自動的に閉じるmsgboxを表示させることで回避策としたわ。
msgboxがある/なしでクラッシュするなんて言うバグてきいたことあります?
msgboxでウィンドウを表示させるとExcelがクラッシュしないことがわかった。
だから
'マクロがクラッシュしないための措置
i = MessageBoxTimeoutA(0&, "マクロを開始します", "通知", vbMsgBoxSetForeground, 0&, 100)
自動的に閉じるmsgboxを表示させることで回避策としたわ。
msgboxがある/なしでクラッシュするなんて言うバグてきいたことあります?
446デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/18(火) 15:40:58.30ID:CJu6lFHP0 >>445
聞いたことはないけど、合ってもおかしくないと思う
OSや別アプリと並行処理させ、並行処理が終わってないままvbaだけ処理すすめる・・・ことで落ちていると思う
DoEventsで解決するはずなんだけど、DoEvents自体も挙動がどこかおかしい。
多分だけど、
applicaion.calcurate=false
とか高速化入れてない?あれを設定しなければ落ちなくなる可能性があると思う
聞いたことはないけど、合ってもおかしくないと思う
OSや別アプリと並行処理させ、並行処理が終わってないままvbaだけ処理すすめる・・・ことで落ちていると思う
DoEventsで解決するはずなんだけど、DoEvents自体も挙動がどこかおかしい。
多分だけど、
applicaion.calcurate=false
とか高速化入れてない?あれを設定しなければ落ちなくなる可能性があると思う
447デフォルトの名無しさん (ワッチョイ aeda-wAYo)
2022/01/18(火) 18:06:02.41ID:2NZPk0PK0 フォーカスがなくなって裏で動いているのに気づかなかったってだけじゃね
448デフォルトの名無しさん (ワッチョイ 82ad-9pHH)
2022/01/19(水) 02:44:48.77ID:J6vWAZC60449デフォルトの名無しさん (ドコグロ MM96-c1hp)
2022/01/19(水) 08:14:43.10ID:SKsqr1XrM45094 (ブーイモ MM66-WmTr)
2022/01/19(水) 12:40:48.58ID:U3XJgxPOM >>449
画面更新止めるコマンドもあるので別に気にはしてないですが、エクセルの関数が実数になるまでそれなりに、時間かかりますよね
まぁ、でもAの方法(外部リンク参照)で作り変えて行こうかと思います。
画面更新止めるコマンドもあるので別に気にはしてないですが、エクセルの関数が実数になるまでそれなりに、時間かかりますよね
まぁ、でもAの方法(外部リンク参照)で作り変えて行こうかと思います。
451デフォルトの名無しさん (ワッチョイ a9d0-fIZs)
2022/01/19(水) 16:06:12.24ID:wLv0/dLh0 取得したデータをどう使いたいのかにもよるけど
参照するExcelブックの数が増減する場合はVBA使って特定のフォルダにぶち込まれたExcelブックを全部取得するようにすると楽
個人で使う分にはこれでいいが、仕事などで自分以外の社員が触る機会がある場合は、周りのスキルを考えてVBAを使わず数式で参照させて済ますのも良いと思う
だが、環境にもよるが、外部参照を含む数式を書いたExcelブックを開いたまま参照先のExcelブックを開くと参照エラー(#REF!)になる場合があるので注意
参照するExcelブックの数が増減する場合はVBA使って特定のフォルダにぶち込まれたExcelブックを全部取得するようにすると楽
個人で使う分にはこれでいいが、仕事などで自分以外の社員が触る機会がある場合は、周りのスキルを考えてVBAを使わず数式で参照させて済ますのも良いと思う
だが、環境にもよるが、外部参照を含む数式を書いたExcelブックを開いたまま参照先のExcelブックを開くと参照エラー(#REF!)になる場合があるので注意
452デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/19(水) 16:34:49.01ID:x+9vZ6k00 MSGBOXが表示された時、必ず最前面にする方法ってありますか?
alt+tabでタスクを切り替えないとMSGBOXが表示されない事があります
処理が止まっているのか進んでるのか分からなくて、困ってしまう
alt+tabでタスクを切り替えないとMSGBOXが表示されない事があります
処理が止まっているのか進んでるのか分からなくて、困ってしまう
453デフォルトの名無しさん (ブーイモ MMe5-soNI)
2022/01/19(水) 17:15:49.65ID:O8ktC4tSM >>452
VBAのMsgBoxでは不可能
Win32APIのMessageBoxAをTopMost=Trueに設定して呼び出すしかない
VBAからMessageBoxAを呼び出す方法はぐぐればすぐ出てくる
VBAのMsgBoxでは不可能
Win32APIのMessageBoxAをTopMost=Trueに設定して呼び出すしかない
VBAからMessageBoxAを呼び出す方法はぐぐればすぐ出てくる
454デフォルトの名無しさん (ラクッペペ MM66-Dw/N)
2022/01/19(水) 17:21:36.62ID:ZRK6Alb6M そんなフラグ効果あんのか?
455デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/19(水) 17:56:37.68ID:x+9vZ6k00456デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/19(水) 18:35:22.31ID:DmIv8IzU0 いちおうMsgBoxでシステムモーダルの指定があるにはあるんだけどな
期待通りに動かんことが多い
いちアプリケーションがシステム全体にかかわる動作をするなって風潮だからな
期待通りに動かんことが多い
いちアプリケーションがシステム全体にかかわる動作をするなって風潮だからな
457デフォルトの名無しさん (ワッチョイ 827c-823B)
2022/01/19(水) 18:45:15.60ID:F2K8Y8lc0 >>451
他ブックへの参照はgotoより使いたくないかも
他ブックへの参照はgotoより使いたくないかも
458デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/19(水) 19:04:03.23ID:DmIv8IzU0459デフォルトの名無しさん (ワッチョイ a9d0-fIZs)
2022/01/19(水) 19:59:02.99ID:wLv0/dLh0 >>457
わかるけど、それはプログラミングの知識がある人が職場に当たり前にいるという前提の話
まったくVBAを知らない社員に一から教え込むよりまし
ていうか個人的には、Excelブックを100個も参照させるようなのが仕事上の事情なら、まずはその運用を見直した方がいいと思うけど
わかるけど、それはプログラミングの知識がある人が職場に当たり前にいるという前提の話
まったくVBAを知らない社員に一から教え込むよりまし
ていうか個人的には、Excelブックを100個も参照させるようなのが仕事上の事情なら、まずはその運用を見直した方がいいと思うけど
46094 (ブーイモ MM66-WmTr)
2022/01/19(水) 20:45:45.55ID:U3XJgxPOM 他ブックの参照がなぜ駄目なのかさっぱりわからないです。。教えて下さい。
参照後の処理の内容になにか前提条件があるのですか?
自分の前提は、Excelブックを参照、みんな同じExcelバージョン、同じフォーマットを使うです
参照後の処理の内容になにか前提条件があるのですか?
自分の前提は、Excelブックを参照、みんな同じExcelバージョン、同じフォーマットを使うです
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
