!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part62
https://mevius.5ch.net/test/read.cgi/tech/1561303297/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part63
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d3d0-EPXH)
2019/09/16(月) 19:34:59.04ID:emfTAhXr0432デフォルトの名無しさん (ワッチョイ 371a-8Pqf)
2019/10/23(水) 10:39:27.17ID:9YAnqBFd0 Rangeをつかってセルの範囲を指定した後に
条件を付け加えて条件に合うまで自動で繰り返し処理を行って条件通りになった時に選択セルに文字や数字を入れるにはその下にIfとかで条件を増やしていけばいいの?
条件を付け加えて条件に合うまで自動で繰り返し処理を行って条件通りになった時に選択セルに文字や数字を入れるにはその下にIfとかで条件を増やしていけばいいの?
433デフォルトの名無しさん (オッペケ Sr47-UVSK)
2019/10/23(水) 12:32:05.46ID:YTHJUc03r >>432
条件が簡単で範囲が狭ければ上にあるようにselect caseが分かりやすい
for each c in range("a5:b20")
select case c
case 1
c=c+1
end select
next
条件が簡単で範囲が狭ければ上にあるようにselect caseが分かりやすい
for each c in range("a5:b20")
select case c
case 1
c=c+1
end select
next
434デフォルトの名無しさん (スッップ Sd1f-5/kr)
2019/10/24(木) 12:24:28.14ID:UjAlYEh+d435デフォルトの名無しさん (ベーイモ MMff-CM8p)
2019/10/24(木) 18:18:50.61ID:uab6eG2kM ExcelでOutlookのメールを処理することについての質問なのですが、ここのスレでよろしいでしょうか。
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.items.getlast
getlastメソッドで、メールを取得するのですが、たまに取得できないことがあります。(たぶんNothing?が帰ってくる。Nothingでない可能性もある。)(メールアイテム以外でも動作確認済。)
getlastメソッドで、取得失敗した場合には5秒待機してもう一度getlastメソッドを行い、最大20回繰り返す処理にしても、たまにメールの取得に失敗します。
ログを確認すると、メールを受信した時間にエラーが起きているようでした。(自身が送信したメールであるかは未確認)
ちなみに、共有受信フォルダに対して処理を行なっています。
メールの取得がうまくいかない原因として何が考えられるでしょうか?
また対策もお教えいただければ。
よろしくお願いします。
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.items.getlast
getlastメソッドで、メールを取得するのですが、たまに取得できないことがあります。(たぶんNothing?が帰ってくる。Nothingでない可能性もある。)(メールアイテム以外でも動作確認済。)
getlastメソッドで、取得失敗した場合には5秒待機してもう一度getlastメソッドを行い、最大20回繰り返す処理にしても、たまにメールの取得に失敗します。
ログを確認すると、メールを受信した時間にエラーが起きているようでした。(自身が送信したメールであるかは未確認)
ちなみに、共有受信フォルダに対して処理を行なっています。
メールの取得がうまくいかない原因として何が考えられるでしょうか?
また対策もお教えいただければ。
よろしくお願いします。
436デフォルトの名無しさん (ワントンキン MMe7-9ZKN)
2019/10/24(木) 18:54:50.60ID:9FPqNGzPM getlastしようとしてるオブジェクトが空なんじゃないの
当然何度やってもダメでしょうし
オブジェクトの指定を見直すしかないのでは
当然何度やってもダメでしょうし
オブジェクトの指定を見直すしかないのでは
437デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/24(木) 21:16:31.40ID:LTozGfJsr >>435
マクロ実行のタイミングで新着がある場合に失敗することがある
マクロ実行のタイミングで新着がある場合に失敗することがある
438デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/24(木) 22:19:08.24ID:k4Slgj9Ox >>435
outlookの受信処理と競合して、完全にダウンロードされていないアイテムを掴んで処理が失敗してしまってるんじゃないかな
ActiveExplorer.CommandBars.ExecuteMso ("ToggleOnline")でオンライン/オフラインのモードを切り替えられるので、オフラインモードにしてから受信済のアイテムを操作してみたらどうかな
outlookの受信処理と競合して、完全にダウンロードされていないアイテムを掴んで処理が失敗してしまってるんじゃないかな
ActiveExplorer.CommandBars.ExecuteMso ("ToggleOnline")でオンライン/オフラインのモードを切り替えられるので、オフラインモードにしてから受信済のアイテムを操作してみたらどうかな
439デフォルトの名無しさん (ワッチョイ ff42-CM8p)
2019/10/24(木) 23:23:46.93ID:Asf3hx3R0440デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/24(木) 23:31:06.94ID:0B+H0gI/x >>439
438をポストした者だけど、共有メールボックスではコマンドバー操作を試していないので、うまくいかなかったら申し訳ない
438をポストした者だけど、共有メールボックスではコマンドバー操作を試していないので、うまくいかなかったら申し訳ない
441デフォルトの名無しさん (ワッチョイ c31a-hRK6)
2019/10/25(金) 11:05:50.13ID:dGLThU1d0 >>434
どういう事?
どういう事?
442デフォルトの名無しさん (ワッチョイ 6f68-7KPZ)
2019/10/25(金) 11:29:44.18ID:cKRHja930 選択されてる範囲に勝手に入力されるのは困ると捉えるか
使う側が指定した範囲に効果を適用したいと捉えるかの違いでは
使う側が指定した範囲に効果を適用したいと捉えるかの違いでは
443デフォルトの名無しさん (ワッチョイ e301-X3cA)
2019/10/25(金) 22:22:49.14ID:l2RnHcFL0 >>429
むしろ遇奇なら一行ifを使ったほうが簡潔だよ
If r.Row Mod 2 Then r.Interior.ColorIndex = 6 Else r.Interior.ColorIndex = 1
また、「colorNum」を「r.Row Mod 2」の関数とみなせば
Dim colorNum(): colorNum = Array(1, 6) '配列で代用
(中略)
r.Interior.ColorIndex = colorNum(r.Row Mod 2)
という形になる。
また、「r.Row Mod *」の除数は「colorNum」の要素数なので
Dim modSecond as Long : modSecond = Ubound(colorNum) - Lbound(colorNum) + 1
r.Interior.ColorIndex = colorNum(r.Row Mod modSecond)
と一般化できる。
これはIf文やSelect文と違い、colorNumを与えれば三色以上にも動的に対応出来る。
>>441
Selectメソッド使わなくてもセルに入力できるよっていう話だと思う
マクロを記録すると当然セル選択(Select)も全部記録するし、「選択してから操作する」は直感的にも正しいから、
初めてVBAを触る人はSelect必須だと勘違いしやすい
実際は「マクロが動いてる様子が見れないと不安だ」っていう人も少なからずいて、わざとSelectすることはよくある
むしろ遇奇なら一行ifを使ったほうが簡潔だよ
If r.Row Mod 2 Then r.Interior.ColorIndex = 6 Else r.Interior.ColorIndex = 1
また、「colorNum」を「r.Row Mod 2」の関数とみなせば
Dim colorNum(): colorNum = Array(1, 6) '配列で代用
(中略)
r.Interior.ColorIndex = colorNum(r.Row Mod 2)
という形になる。
また、「r.Row Mod *」の除数は「colorNum」の要素数なので
Dim modSecond as Long : modSecond = Ubound(colorNum) - Lbound(colorNum) + 1
r.Interior.ColorIndex = colorNum(r.Row Mod modSecond)
と一般化できる。
これはIf文やSelect文と違い、colorNumを与えれば三色以上にも動的に対応出来る。
>>441
Selectメソッド使わなくてもセルに入力できるよっていう話だと思う
マクロを記録すると当然セル選択(Select)も全部記録するし、「選択してから操作する」は直感的にも正しいから、
初めてVBAを触る人はSelect必須だと勘違いしやすい
実際は「マクロが動いてる様子が見れないと不安だ」っていう人も少なからずいて、わざとSelectすることはよくある
444デフォルトの名無しさん (ブーイモ MM1f-FIMf)
2019/10/26(土) 12:54:04.66ID:eBBCRY7lM このまえ職場のITの人が
「サーバがコケた」と言ってました。
「コケた」とはなんですか?
サーバに足が二本あってその足がもつれてサーバが倒れた?
「サーバがコケた」と言ってました。
「コケた」とはなんですか?
サーバに足が二本あってその足がもつれてサーバが倒れた?
445デフォルトの名無しさん (ワッチョイ ff38-RFIa)
2019/10/26(土) 15:23:13.25ID:ByENxD/q0 すいません
「いま選択しているセル(1セルのみ選択します)の中心に、
[行の先頭(Aの左端)]から[設定されている印刷範囲の右まで]
オートシェイプの罫線を引く」
、というマクロを作成し始めているのですが、
[印刷範囲の右まで] という指定はどのように記述したらよいでしょうか?
いまのところ検索しつつ手習いでこんな記述になったのですが、
Sub マクロ名()
Dim R As Range
Set R = Selection
With ActiveSheet.Shapes.AddLine(R.Left - R.Left, R.Top + R.Height / 2, [ ], R.Top + R.Height / 2).Line
End With
End Sub
[ ]の中に[印刷範囲の右まで]という意味合いを
挿入すればできるのかしらと思っています
[Aの左端]を指定するのに
[選択範囲の右までの距離から、選択範囲の右までの距離を引いたもの]で
距離がゼロになったはウフフ としているのも
「・・・他にビシッとした命令文があるんじゃないかね」と思っているので
ここもご教示いただければ幸いです
「いま選択しているセル(1セルのみ選択します)の中心に、
[行の先頭(Aの左端)]から[設定されている印刷範囲の右まで]
オートシェイプの罫線を引く」
、というマクロを作成し始めているのですが、
[印刷範囲の右まで] という指定はどのように記述したらよいでしょうか?
いまのところ検索しつつ手習いでこんな記述になったのですが、
Sub マクロ名()
Dim R As Range
Set R = Selection
With ActiveSheet.Shapes.AddLine(R.Left - R.Left, R.Top + R.Height / 2, [ ], R.Top + R.Height / 2).Line
End With
End Sub
[ ]の中に[印刷範囲の右まで]という意味合いを
挿入すればできるのかしらと思っています
[Aの左端]を指定するのに
[選択範囲の右までの距離から、選択範囲の右までの距離を引いたもの]で
距離がゼロになったはウフフ としているのも
「・・・他にビシッとした命令文があるんじゃないかね」と思っているので
ここもご教示いただければ幸いです
446デフォルトの名無しさん (ワッチョイ ff95-mjLV)
2019/10/26(土) 15:26:44.03ID:a/Ne+y1n0 >>374
殿堂入りのコピペにしよう
殿堂入りのコピペにしよう
447デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 15:51:51.18ID:LZqRDs7Rx >>445
印刷範囲はActiveSheet.PageSetup.PrintAreaで取得できる
印刷範囲の右端列のうち選択セルRと同じ行にあるセル範囲を取得するならば、こんな感じになるかな
試してないのでうまくいかなかったらごめん
With ActiveSheet
.Cells(R.Row, .PageSetup.PrintArea.Columns(.PageSetup.PrintArea.Columns.Count).Column)
End With
印刷範囲はActiveSheet.PageSetup.PrintAreaで取得できる
印刷範囲の右端列のうち選択セルRと同じ行にあるセル範囲を取得するならば、こんな感じになるかな
試してないのでうまくいかなかったらごめん
With ActiveSheet
.Cells(R.Row, .PageSetup.PrintArea.Columns(.PageSetup.PrintArea.Columns.Count).Column)
End With
448デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/26(土) 17:22:53.91ID:gStMXt400 列の右端左端の値を取ろうとxltoright/xltoleftを使ったやり方したんだけど、普通に値が入ってるのは大丈夫だったのだけど、計算式が入っているのはダメだった…
どうしたら計算式でも値が入ってる最終、最初の列の値を取れるのでしょう…
一応値貼り付けをしてみたけどダメでした。
どうしたら計算式でも値が入ってる最終、最初の列の値を取れるのでしょう…
一応値貼り付けをしてみたけどダメでした。
449デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 17:42:49.95ID:r1v5ZtYZx >>448
RangeオブジェクトのCurrentRegionプロパティで解決できる
RangeオブジェクトのCurrentRegionプロパティで解決できる
450デフォルトの名無しさん (ワッチョイ b39e-KT7O)
2019/10/26(土) 18:39:46.37ID:iVpeMUgw0 listviewが使えない状態でフルパスをドラッグドロップで取得したいんですが可能ですか。
vbsでバッチファイル経由でも良いのですが
excel上にマクロボタンを設置し
listviewのようにバッチファイル自体にドラッグドロップするのではなく
エクセル内にドラッグドロップしフルパスを取得したいです。
ご教示お願いします。
vbsでバッチファイル経由でも良いのですが
excel上にマクロボタンを設置し
listviewのようにバッチファイル自体にドラッグドロップするのではなく
エクセル内にドラッグドロップしフルパスを取得したいです。
ご教示お願いします。
451デフォルトの名無しさん (スップ Sd1f-mumX)
2019/10/26(土) 19:02:55.77ID:fijtr2QZd OutlookとかVBAとかいつの時代を生きてんの?
そろそろ進もうよ
そろそろ進もうよ
452デフォルトの名無しさん (スフッ Sd1f-omNk)
2019/10/26(土) 19:12:27.63ID:KoMfhOgAd うちもOutlook。しかも2007
453デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 19:24:57.11ID:2Jq8ZMU0x >>451
Office365でOutlookクライアントネイティブでマクロ実行するときもOutlook VBAが使えて便利だぞ
Excel VBAでもPowerPivotや PowerQueryみたいなモダンな機能を扱えるし何かと便利
あとVBAは古くて癖があるけど、やっぱりMS Office自体は有用だし、他言語でCOM生成したりMS Office Interopを使ったりする手間を考えたらVBAを使う手間と大差ない
Office365でOutlookクライアントネイティブでマクロ実行するときもOutlook VBAが使えて便利だぞ
Excel VBAでもPowerPivotや PowerQueryみたいなモダンな機能を扱えるし何かと便利
あとVBAは古くて癖があるけど、やっぱりMS Office自体は有用だし、他言語でCOM生成したりMS Office Interopを使ったりする手間を考えたらVBAを使う手間と大差ない
454デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/26(土) 21:43:16.86ID:3NuDJQUH0 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
ちょっと頭のおかしい感じにしてみたんですけど、どうでしょう?
Sub 猿()
'@@@@@@@@@@@@@@@@@@
Dim 日本脳炎, 邪教, 脳梗塞
'@@@@@@@@@@@@@@@@@@
End Sub
Sub 呪呪呪呪呪呪呪呪()
'死死死死死死死死死死死死
Dim あああああああああああ
'死死死死死死死死死死死死
End Sub
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
ちょっと頭のおかしい感じにしてみたんですけど、どうでしょう?
Sub 猿()
'@@@@@@@@@@@@@@@@@@
Dim 日本脳炎, 邪教, 脳梗塞
'@@@@@@@@@@@@@@@@@@
End Sub
Sub 呪呪呪呪呪呪呪呪()
'死死死死死死死死死死死死
Dim あああああああああああ
'死死死死死死死死死死死死
End Sub
455デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/26(土) 21:44:56.09ID:w2sb5QGz0 >>454
ここはExcelスレじゃない
ここはExcelスレじゃない
456デフォルトの名無しさん (ワッチョイ 43c3-nkui)
2019/10/27(日) 04:54:35.83ID:iIC7Qe/E0 33sands's blog: VBAでpushやpopができる配列クラスを実装しました
http://33sands.blogspot.com/2012/03/vbapushpop.html
このブログで、VBA自作配列クラスが公開されていたようですが、ファイルが消えていました。
ここで公開されていたファイルをお持ちの方はいませんでしょうか?
http://33sands.blogspot.com/2012/03/vbapushpop.html
このブログで、VBA自作配列クラスが公開されていたようですが、ファイルが消えていました。
ここで公開されていたファイルをお持ちの方はいませんでしょうか?
457デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/27(日) 07:39:28.03ID:LP8uAzFd0 いないよw
458デフォルトの名無しさん (ワッチョイ 53ce-mjLV)
2019/10/27(日) 07:48:21.99ID:5kDmbxH+0 WebArchive
459デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 08:55:23.11ID:1nxyxlWe0460デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/27(日) 09:08:45.25ID:7A1wEn3c0 >>456
そこに書いてある Ubound(配列) + 1 ってのは、よく見かける見る例で、
ループ内で使うと思うんだけど、毎回配列の最大数調べてたら遅くならんかなぁ。
俺は a = a + 1 にしちゃうけど、変わらんか?
そこに書いてある Ubound(配列) + 1 ってのは、よく見かける見る例で、
ループ内で使うと思うんだけど、毎回配列の最大数調べてたら遅くならんかなぁ。
俺は a = a + 1 にしちゃうけど、変わらんか?
461デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/27(日) 10:16:44.42ID:LP8uAzFd0 >>460
VBAでpushを実装しようと思うとこうするしかないぞ
VBAでpushを実装しようと思うとこうするしかないぞ
462デフォルトの名無しさん (ワッチョイ ff01-3qLD)
2019/10/27(日) 11:21:18.40ID:vcUKQgsd0463デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 11:24:16.68ID:1nxyxlWe0 >>449
currentregionプロパティで下記のは可能でしょうか?
ABCDEFGHI(列名)
q 12 33 q
A〜I列の内、B〜H列内で数字がある最初と最後の列番号を取得したいと思ってます。
通常では448に書いたようにB〜H列を指定して.ENDでxltoleft/rightを使い2行と2つの変数に結果を入れる事でできたのですが、計算式だとNGだったので(どちらもH列が帰ってきました)
currentregionプロパティで下記のは可能でしょうか?
ABCDEFGHI(列名)
q 12 33 q
A〜I列の内、B〜H列内で数字がある最初と最後の列番号を取得したいと思ってます。
通常では448に書いたようにB〜H列を指定して.ENDでxltoleft/rightを使い2行と2つの変数に結果を入れる事でできたのですが、計算式だとNGだったので(どちらもH列が帰ってきました)
464デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 12:19:45.36ID:jv/fzOi30 >>456
なんで作者本人に連絡取らんの
なんで作者本人に連絡取らんの
465デフォルトの名無しさん (ワッチョイ cfdd-MdJ4)
2019/10/27(日) 13:19:15.84ID:5V6/K/A10 >>463
計算結果が数値の最初と最後の列ってこと?
xlToLeft; xlToRight; はセルが空かどうかでしか判断できないから使えないでしょ?
開始列と終了列からそれぞれなめて、IsNumeric(.value) で判定しないとダメじゃないかな。
なんかいい方法あるけ?
計算結果が数値の最初と最後の列ってこと?
xlToLeft; xlToRight; はセルが空かどうかでしか判断できないから使えないでしょ?
開始列と終了列からそれぞれなめて、IsNumeric(.value) で判定しないとダメじゃないかな。
なんかいい方法あるけ?
466デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 14:10:23.14ID:lm+G5EAgx >>456
よく見てないけど計算量最適化できてなさそうだね
よく見てないけど計算量最適化できてなさそうだね
467デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 14:42:36.79ID:lm+G5EAgx >>463
CurrentRegionでは恐らく無理
下のようにループを左右両側から回して調べるしかないんじゃないかな
列番号をチェックする行に含まれるセルを選択している状態という前提です
Dim RngA2I As Range 'チェック対象行のA列からI列までの範囲
Dim i As Long 'ループ用インデックス
Dim LMost As Long '左端列の列番号
Dim RMost As Long '右端列の列番号
With ActiveSheet
Set RngA2I = .Cells(.Cells(Selection.Row, 1), .Cells(Selection.Row, 9))
End With
For i = 2 To 8
If IsNumeric(RngA2I.Item(i).Value) Then
LMost = i
Exit For
End If
Next
For i = 8 To 2 Step - 1
If IsNumeric(RngA2I.Item(i).Value) Then
RMost = i
Exit For
End If
Next
CurrentRegionでは恐らく無理
下のようにループを左右両側から回して調べるしかないんじゃないかな
列番号をチェックする行に含まれるセルを選択している状態という前提です
Dim RngA2I As Range 'チェック対象行のA列からI列までの範囲
Dim i As Long 'ループ用インデックス
Dim LMost As Long '左端列の列番号
Dim RMost As Long '右端列の列番号
With ActiveSheet
Set RngA2I = .Cells(.Cells(Selection.Row, 1), .Cells(Selection.Row, 9))
End With
For i = 2 To 8
If IsNumeric(RngA2I.Item(i).Value) Then
LMost = i
Exit For
End If
Next
For i = 8 To 2 Step - 1
If IsNumeric(RngA2I.Item(i).Value) Then
RMost = i
Exit For
End If
Next
468デフォルトの名無しさん (ワッチョイ ff01-3qLD)
2019/10/27(日) 14:55:15.64ID:vcUKQgsd0 >>466
中身わからんのに計算量を推定できるとかエスパーかよw
中身わからんのに計算量を推定できるとかエスパーかよw
469デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 16:12:11.26ID:jv/fzOi30 >>463
With Range("B:H")
'最初
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
'最後
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
End With
値が入ってるセルが1つも無いとエラーになるから事前にチェックしておく
With Range("B:H")
'最初
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
'最後
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
End With
値が入ってるセルが1つも無いとエラーになるから事前にチェックしておく
470デフォルトの名無しさん (ワッチョイ cfdd-MdJ4)
2019/10/27(日) 16:59:16.22ID:5V6/K/A10471デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 17:02:26.90ID:jv/fzOi30 数字限定?なら>>469は忘れて
472デフォルトの名無しさん (スプッッ Sd1f-mumX)
2019/10/27(日) 17:36:39.44ID:aJJKs/ARd 今の時代でマルチスレッドが使えない時点で終わってる
>>472
マルチスレッドプログラミングは難しいので、なにか適切な抽象化方策が言語でとられるべきかと
マルチスレッドプログラミングは難しいので、なにか適切な抽象化方策が言語でとられるべきかと
474デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 20:13:15.91ID:lm+G5EAgx >>468
Redimで連続アドレス領域を都度確保するのが効率悪いって言いたいだけなんだが
Redimで連続アドレス領域を都度確保するのが効率悪いって言いたいだけなんだが
475デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 20:14:07.93ID:1nxyxlWe0 >>467
やはり両方から確認しにいくのが確実ですよね。
他の部署から来るデータで2シートだけは単純に空白と数値だけなのですが、他のファイルにある1シートだけは計算式入ってたので…
まぁ、最初と最後だけ確認してから他の作業をさせればいいので、これ参考にさせていただきます。
ありがとうございました。
やはり両方から確認しにいくのが確実ですよね。
他の部署から来るデータで2シートだけは単純に空白と数値だけなのですが、他のファイルにある1シートだけは計算式入ってたので…
まぁ、最初と最後だけ確認してから他の作業をさせればいいので、これ参考にさせていただきます。
ありがとうございました。
476デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 20:16:11.25ID:1nxyxlWe0477デフォルトの名無しさん (ドコグロ MMc7-3qLD)
2019/10/27(日) 21:21:01.09ID:rrcAfXPkM478デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 23:13:53.49ID:lm+G5EAgx479デフォルトの名無しさん (ワッチョイ 7f4b-9ZKN)
2019/10/27(日) 23:43:54.17ID:qu9l82Nk0 面倒臭いからVBA使うんだろ
480デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 23:53:42.61ID:lm+G5EAgx AccessやPowerQueryを知らずに言ってるんだろうがテーブルへのクエリをExcel VBAでスクラッチする方が遥かに面倒だぞ
481デフォルトの名無しさん (ワッチョイ 7f4b-9ZKN)
2019/10/27(日) 23:55:56.34ID:qu9l82Nk0 448のどこがaccess、powerquery向きなのか理解出来ない
482デフォルトの名無しさん (アウアウウー Sa27-wnNP)
2019/10/28(月) 01:11:50.89ID:DN6aA2bKa 最初からデータをDBへ入れて扱っていれば「端の値を取る」などというトンデモ要件はそもそも出てこないということだろう
業務ロジックの中でシートの右だの左だの何列目だのとシート上でのレイアウトに依存したコードが散乱するのは典型的な悪夢
業務ロジックの中でシートの右だの左だの何列目だのとシート上でのレイアウトに依存したコードが散乱するのは典型的な悪夢
483デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/28(月) 08:44:07.27ID:ECOvCBlTM 448です。
元は手作業でやっていたのを自動化?したいとかで外の会社とかも関わってるので、DB化とかそういう話になるとメンドクサイ事になるらしいです。
自分は他から来ているので、あまり口出しできない状態。
あと、作業の行にカレンダーがあって、そのカレンダーに数字が入力されてる感じです。
なので月ごとに場所が変わったりするので…
そんなのが数百行あるので、少しでもその作業の先頭列が分かれば…と思っていたのですが…
元は手作業でやっていたのを自動化?したいとかで外の会社とかも関わってるので、DB化とかそういう話になるとメンドクサイ事になるらしいです。
自分は他から来ているので、あまり口出しできない状態。
あと、作業の行にカレンダーがあって、そのカレンダーに数字が入力されてる感じです。
なので月ごとに場所が変わったりするので…
そんなのが数百行あるので、少しでもその作業の先頭列が分かれば…と思っていたのですが…
484デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/28(月) 08:46:00.28ID:ECOvCBlTM >>482
確かに…
Excelで手作業だったって事もあって、項目によっては行が結合されていたりとかもあってさらにメンドクサイ状態。
そのへんなんとかしてほしいのだが、そうなると外の会社との折衝にもなるらしいのでNGっぽい…orz
確かに…
Excelで手作業だったって事もあって、項目によっては行が結合されていたりとかもあってさらにメンドクサイ状態。
そのへんなんとかしてほしいのだが、そうなると外の会社との折衝にもなるらしいのでNGっぽい…orz
485デフォルトの名無しさん (ワッチョイ cfd2-Z4kd)
2019/10/28(月) 11:38:38.31ID:aHKY+muw0 プログラミングスレで聞くのが妥当か分からないけど
マクロの記録を使って「データ分析」ツールをSheet1、Sheet2....Sheet13と起動していくマクロを作ろうとしてるんだけど、どういうわけか「データ分析」で生成された表が現れるSheetと現れないシートにムラがある
規則性はないように思われる
なにかわかることありますかね
マクロの記録を使って「データ分析」ツールをSheet1、Sheet2....Sheet13と起動していくマクロを作ろうとしてるんだけど、どういうわけか「データ分析」で生成された表が現れるSheetと現れないシートにムラがある
規則性はないように思われる
なにかわかることありますかね
486デフォルトの名無しさん (ワッチョイ c3b0-OGTw)
2019/10/28(月) 12:42:09.32ID:w6LeaWY50 Mac版でcontrol+Shift+5で%が付くようにしたのですがこの設定を元に戻すショートカットってありますか?
487デフォルトの名無しさん (ブーイモ MM1f-DyET)
2019/10/29(火) 04:42:35.22ID:pjDEMxXCM userformの選択されているcheckboxのcaptionを変数にまとめてautofilterでデータ抽出しようとしているのですがうまくいきません
ちなみにそのような方法でautofilterをかけることは可能でしょうか?
よくわかんない質問ですいませんがよろしくお願いします
ちなみにそのような方法でautofilterをかけることは可能でしょうか?
よくわかんない質問ですいませんがよろしくお願いします
488デフォルトの名無しさん (ワッチョイ ffea-/P2k)
2019/10/29(火) 05:23:49.56ID:5vXI5Cgx0489デフォルトの名無しさん (ワッチョイ ffd2-hRK6)
2019/10/29(火) 17:33:39.24ID:VP7O6DBE0 看護師の勤務表を作りたいけど何からやればいいか分からないです。教えてください
490デフォルトの名無しさん (ワッチョイ ff42-cmPQ)
2019/10/29(火) 17:46:30.71ID:/hC7c7vt0 単純に勤務表ってだけなら表計算でできることなのでエクセルスレへどうぞ(厳密には表計算ですら無いけど)
VBAは大雑把に言うと表計算だけでは実現でいないことをやるための技術です
VBAは大雑把に言うと表計算だけでは実現でいないことをやるための技術です
491デフォルトの名無しさん (ワッチョイ ffd2-hRK6)
2019/10/29(火) 17:51:20.57ID:VP7O6DBE0 VBA使わずに自動で1ヶ月分作れるんですか?
492デフォルトの名無しさん (スフッ Sd1f-omNk)
2019/10/29(火) 18:01:49.00ID:489rbQ/pd Office365のカレンダーがいいよ
493デフォルトの名無しさん (ワッチョイ ff42-cmPQ)
2019/10/29(火) 18:03:40.61ID:/hC7c7vt0 その場合は必要
後出しで条件を追加すると話が長くなるし回答も二度手間になるので最初にやりたいことをきっちり説明すべし
後出しで条件を追加すると話が長くなるし回答も二度手間になるので最初にやりたいことをきっちり説明すべし
494デフォルトの名無しさん (スッップ Sd1f-Z4kd)
2019/10/29(火) 18:11:33.96ID:NgUa+H/Id 配列に入ってる値をセルに一個ずつ入れたいのですが、
for i = LBound(配列) to UBound(配列)
Cells(i.1).value = 配列(i)
Next i
こう書くと型が違いますとエラーになります
どうすればいいですか?
for i = LBound(配列) to UBound(配列)
Cells(i.1).value = 配列(i)
Next i
こう書くと型が違いますとエラーになります
どうすればいいですか?
495デフォルトの名無しさん (アウアウクー MM47-M947)
2019/10/29(火) 18:12:54.47ID:xRagZ8fLM 勤務表を自動で作成したいとなれば、アルゴリズムの知識がないと実装できないと思う。ナース・スケジューリング問題とか調べてみるといい。参考になる文献が出てくる。ただ、いっそのこと有料ソフトを買った方が早い気がする。
496デフォルトの名無しさん (ワッチョイ 6ff7-I5l6)
2019/10/29(火) 18:23:00.38ID:nykYL9OH0 >>494
そらi=0から始まるけどセルに座標0はないんで
そらi=0から始まるけどセルに座標0はないんで
497デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/29(火) 18:26:41.51ID:cRJ9A2Q6r498デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/29(火) 18:28:33.17ID:cRJ9A2Q6r 訂正
transpose
transpose
499デフォルトの名無しさん (ワッチョイ 6ff7-I5l6)
2019/10/29(火) 18:35:46.74ID:nykYL9OH0 Cells(i+1,1).valueかCells(1,1).Offset(i,0).valueにする
500デフォルトの名無しさん (ワッチョイ cf8e-FPtM)
2019/10/29(火) 18:36:33.04ID:CZCLEAoQ0 >>489
馬鹿は死ね
馬鹿は死ね
501デフォルトの名無しさん (スップ Sd1f-mumX)
2019/10/29(火) 18:41:35.33ID:VPqdpMYqd エクセル以外のソフトをインストール出来ないってアホみたいな環境はソッコーで辞めた方が良い
VBAなんて将来性もないクソ言語を覚える意味は全くない
本当に他の開発環境は無理なの?
冗談だよね?
VBAなんて将来性もないクソ言語を覚える意味は全くない
本当に他の開発環境は無理なの?
冗談だよね?
502デフォルトの名無しさん (ワッチョイ ffd2-hRK6)
2019/10/29(火) 19:27:11.79ID:VP7O6DBE0 >>500
おう。お前が死んどけ
おう。お前が死んどけ
503デフォルトの名無しさん (ササクッテロル Sp47-YkOl)
2019/10/29(火) 19:48:08.52ID:+Y5A9Qhrp >>494
取り敢えずみんなが言ってる通り配列のインデックスは0から始まるし
Cellは行にしても列にしても1から始まるのでそこんとこ気をつけなければいけません。
後はセル指定する際にはブック、シートも指定しておく癖をつけておくことをお勧めします。
取り敢えずみんなが言ってる通り配列のインデックスは0から始まるし
Cellは行にしても列にしても1から始まるのでそこんとこ気をつけなければいけません。
後はセル指定する際にはブック、シートも指定しておく癖をつけておくことをお勧めします。
504デフォルトの名無しさん (ササクッテロル Sp47-YkOl)
2019/10/29(火) 19:57:54.69ID:+Y5A9Qhrp >>501
仕事場によっては、特に銀行系は
使うもの以外勝手にインストールしてはいけないところが多々有ります。
例えばJavascriptだけ使ってればいいのに
勝手にVisualStudoやTOMCATとかをインストールすると怒られるどころか
コンプライアンスの面から仕事場を退場させられる場合もあります。
EXCELは大概どこの仕事場にも入っているから
インストールしなくても使えるだけで、
当然入れてはいけないと言われたら勝手に入れるべきではありません。
むしろ「勝手にどんどん何でもインストールしていいですよ〜」なんて仕事場があったら
そこのセキュリティはどうなってるのか疑うべきと思われます。
仕事場によっては、特に銀行系は
使うもの以外勝手にインストールしてはいけないところが多々有ります。
例えばJavascriptだけ使ってればいいのに
勝手にVisualStudoやTOMCATとかをインストールすると怒られるどころか
コンプライアンスの面から仕事場を退場させられる場合もあります。
EXCELは大概どこの仕事場にも入っているから
インストールしなくても使えるだけで、
当然入れてはいけないと言われたら勝手に入れるべきではありません。
むしろ「勝手にどんどん何でもインストールしていいですよ〜」なんて仕事場があったら
そこのセキュリティはどうなってるのか疑うべきと思われます。
505デフォルトの名無しさん (ワッチョイ e394-mumX)
2019/10/29(火) 20:03:23.90ID:tCyp/No90 マクロを許可してる方がセキュリティ意識ゼロ
506デフォルトの名無しさん (ワッチョイ d363-mjLV)
2019/10/29(火) 20:06:27.60ID:b5zWL0uJ0 開発メンバーは基本何でもできるからしょうがないだろ
Excelマクロがだめなら開発環境の言語使うわ
Excelマクロがだめなら開発環境の言語使うわ
507デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/29(火) 20:10:23.13ID:zvctnIdZ0 cmdとか使える時点でセキュリティも何も合ったもんじゃないと思うけどね
508デフォルトの名無しさん (ワッチョイ 6f01-Z4kd)
2019/10/29(火) 20:22:40.07ID:OodB9NB80509デフォルトの名無しさん (ワッチョイ 6f01-Z4kd)
2019/10/29(火) 20:28:16.99ID:OodB9NB80510デフォルトの名無しさん (ワッチョイ ff59-cL2I)
2019/10/29(火) 23:06:14.03ID:G3O8ZbaI0 鱗付いてるとか爬虫類かよ
511デフォルトの名無しさん (ワッチョイ cf8e-FPtM)
2019/10/29(火) 23:35:46.46ID:CZCLEAoQ0 >>502
死ね、クズ
死ね、クズ
512デフォルトの名無しさん (ワッチョイ d3da-MdJ4)
2019/10/30(水) 10:46:19.82ID:YBm8xQnu0 >>510
爬虫類のわけないだろ
爬虫類のわけないだろ
513デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 10:55:31.55ID:YKBvUaHsd514デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 11:02:18.69ID:YKBvUaHsd >>501
結構多いし、そもそもExcelだけでどうとでもなるから。
能力の低い奴はExcelのせいにするけど、こっちは君が対応出来ないことも出来るんだよ。
確かにどうにもならないことならその時にはじめて他のソフトを検討するけどね。
結構多いし、そもそもExcelだけでどうとでもなるから。
能力の低い奴はExcelのせいにするけど、こっちは君が対応出来ないことも出来るんだよ。
確かにどうにもならないことならその時にはじめて他のソフトを検討するけどね。
515デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 11:04:17.20ID:YKBvUaHsd516デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 11:07:13.09ID:YKBvUaHsd >>504
勝手に入れる奴はそもそも居ないでしょ。
Excelは大概どこの仕事場にも入っているのは事実だけど、それが理由ではない。
入っていなければ最初から選択肢に無いし、このスレに書き込んでもいない。
勝手に入れる奴はそもそも居ないでしょ。
Excelは大概どこの仕事場にも入っているのは事実だけど、それが理由ではない。
入っていなければ最初から選択肢に無いし、このスレに書き込んでもいない。
517デフォルトの名無しさん (ブーイモ MMe7-DyET)
2019/10/30(水) 17:43:14.91ID:qmgosQ7XM >>487
>>488
Dim i As Integer
Dim n As Integer
Dim 検索値(0 To 3) As String
n = 1
For i = 1 To 4
If Me.Controls("CheckBox" & i).Value = True Then
検索値(n) = Me.Controls("CheckBox" & i).Caption
n = n + 1
End If
Next i
ActiveSheet.Range("$A$1:$J$41").AutoFilter Field:=2, Criteria1:=Array(検索値), Operator:=xlFilterValues
素人ながらにこんな感じで書いてみたのですが、こうするとチェックした項目だけでなく空白セルもautofilterもかけてしまいます。
どうしたら空白セルを除外することができますか?
>>488
Dim i As Integer
Dim n As Integer
Dim 検索値(0 To 3) As String
n = 1
For i = 1 To 4
If Me.Controls("CheckBox" & i).Value = True Then
検索値(n) = Me.Controls("CheckBox" & i).Caption
n = n + 1
End If
Next i
ActiveSheet.Range("$A$1:$J$41").AutoFilter Field:=2, Criteria1:=Array(検索値), Operator:=xlFilterValues
素人ながらにこんな感じで書いてみたのですが、こうするとチェックした項目だけでなく空白セルもautofilterもかけてしまいます。
どうしたら空白セルを除外することができますか?
518デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/30(水) 20:32:13.04ID:xO9FzZTbr end ifの前にredim preserve 検索値(i)は?
519デフォルトの名無しさん (ワッチョイ e394-mumX)
2019/10/30(水) 20:57:54.67ID:LQeJyD4+0 VBAのユーザーフォームはWindows98の時代で止まったまま
あれじゃあ恥ずかしいよね
あれじゃあ恥ずかしいよね
520デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:12:32.09ID:q2N5Gpbg0 2019でファイルを開いた時に、勝手にコンボボックスのクリックイベントが発動するんだけど、何で?
もちろん、ワークブックのクラスには何も書いてない状態。
2013ではそんな事なかったと思うんだけど。
このせいで、一切編集せずに閉じようとしても、いちいち保存するか聞いてくる。
もちろん、ワークブックのクラスには何も書いてない状態。
2013ではそんな事なかったと思うんだけど。
このせいで、一切編集せずに閉じようとしても、いちいち保存するか聞いてくる。
521デフォルトの名無しさん (ワッチョイ 53ea-roNU)
2019/10/30(水) 21:15:30.81ID:CYvJIfr60 >>517
だいたいそんな感じですね。
以下で行けました。(Dim文、略)
Control名いじるのが面倒なので、FrameにChkBox
つっこんで回しています。
iCnt = UserForm1.Frame1.Controls.Count - 1
ReDim ARR(iCnt)
i = -1
For Each vBuf In UserForm1.Frame1.Controls
With vBuf
If .Value = True Then
i = i + 1
ARR(i) = .Caption
End If
End With
Next
ActiveSheet.Range("範囲").AutoFilter _
Field:=1, _
Criteria1:=ARR, _
Operator:=xlFilterValues
だいたいそんな感じですね。
以下で行けました。(Dim文、略)
Control名いじるのが面倒なので、FrameにChkBox
つっこんで回しています。
iCnt = UserForm1.Frame1.Controls.Count - 1
ReDim ARR(iCnt)
i = -1
For Each vBuf In UserForm1.Frame1.Controls
With vBuf
If .Value = True Then
i = i + 1
ARR(i) = .Caption
End If
End With
Next
ActiveSheet.Range("範囲").AutoFilter _
Field:=1, _
Criteria1:=ARR, _
Operator:=xlFilterValues
522デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 21:19:32.90ID:JfXI2Ieyx >>520
アドインでアプリケーションレベルのイベントハンドラ動かしてるとかじゃないの
アドインでアプリケーションレベルのイベントハンドラ動かしてるとかじゃないの
523デフォルトの名無しさん (ワッチョイ 6f10-NvbF)
2019/10/30(水) 21:22:06.27ID:naugAKCN0 ワークブッククラスの話までできるなら切り分ければいいのに。
524デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:37:14.35ID:q2N5Gpbg0525デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:39:34.26ID:q2N5Gpbg0 ↑ワークブックオープンイベントの最初にEndって、アドインの方ね。
526デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:45:25.88ID:q2N5Gpbg0 ↑クリックイベントだけじゃなくて、チェンジイベントもだった。
何もチェンジしてないっての。
何もチェンジしてないっての。
527デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 21:54:49.68ID:JfXI2Ieyx528デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/30(水) 21:55:52.89ID:gwpyZLjKM ある数値が範囲(***-***)や、範囲と単体の組み合わせを、カンマで区切っているのを降順に配列に格納したいけど、なんか上手くいかないです。
全部VBAでやろうとしているから…なのかな?と思い始めてます。
それ用のシートを作って、そこに1つずつ入れてソートさせた方が簡単…なのでしょうか?
全部VBAでやろうとしているから…なのかな?と思い始めてます。
それ用のシートを作って、そこに1つずつ入れてソートさせた方が簡単…なのでしょうか?
529デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 22:06:31.14ID:JfXI2Ieyx530デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 22:18:54.50ID:q2N5Gpbg0 >>527
それも見たけど、ないなぁ。
ていうか、コンボボックスが置いてあるシートがアクティブじゃなくても発動するし。
2013では、VBAでオブジェクトにフォーカスを移すと、
初回のみカーソルが見えなくなる現象が起きたと思うけど、
その対策として何かやってたりして。
それも見たけど、ないなぁ。
ていうか、コンボボックスが置いてあるシートがアクティブじゃなくても発動するし。
2013では、VBAでオブジェクトにフォーカスを移すと、
初回のみカーソルが見えなくなる現象が起きたと思うけど、
その対策として何かやってたりして。
531デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/30(水) 22:21:08.45ID:TIjegGw30 >>528
VBAでもシートに書き出してからでもどっちも大した手間は無いよ
まず範囲を1-3なら1,2,3と展開して全体をカンマ区切りだけにしてから、
前者なら配列に格納→配列の中身を降順でソート
後者ならシートに貼り付け→ソート機能使えばいい
VBAでもシートに書き出してからでもどっちも大した手間は無いよ
まず範囲を1-3なら1,2,3と展開して全体をカンマ区切りだけにしてから、
前者なら配列に格納→配列の中身を降順でソート
後者ならシートに貼り付け→ソート機能使えばいい
532デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 22:34:12.92ID:JfXI2Ieyx■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- トランプ、G7に代わるcore 5を発表 [805596214]
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
- (´・ω・`)ペンギンが好きなんだが
