!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part72
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スププ Sdaa-x2SP)
2021/07/18(日) 08:42:15.37ID:KskL7bEXd442デフォルトの名無しさん (ワッチョイ 9b68-uW5m)
2021/08/12(木) 00:44:37.62ID:BTMS1DN70443デフォルトの名無しさん (ブーイモ MM8b-3gcB)
2021/08/12(木) 00:46:04.06ID:XfbSLdwiM いや、それも
「をいる」
より
「をえる」
のほうが言いやすいからと解釈できますよ
「い」は口を横に広げないといけないかど
「え」ならそれほど広げる必要もなくその後の「る」にも移行しやすいからね
「をいる」
より
「をえる」
のほうが言いやすいからと解釈できますよ
「い」は口を横に広げないといけないかど
「え」ならそれほど広げる必要もなくその後の「る」にも移行しやすいからね
444デフォルトの名無しさん (スプッッ Sda3-Z6Ah)
2021/08/12(木) 01:26:40.50ID:YbO1i5Cqd 「こんにちは」と書いて「こんにちわ」と発音するのも、knifeをナイフと読むのも、言いやすいように変化しただけ
言葉ってのはそういうもん
言葉ってのはそういうもん
445デフォルトの名無しさん (スプッッ Sda3-Z6Ah)
2021/08/12(木) 01:30:00.55ID:jC6xQX8qd >>438
世界中の言語、習慣、伝統や文化のほとんどは、教養のないやつが作り上げた物なんだぜ
世界中の言語、習慣、伝統や文化のほとんどは、教養のないやつが作り上げた物なんだぜ
446デフォルトの名無しさん (JP 0H73-tV31)
2021/08/12(木) 02:58:07.28ID:aOGRiEATH 的もらえたとして、もらうやついるの?
447デフォルトの名無しさん (ワッチョイ 9b68-uW5m)
2021/08/12(木) 07:17:08.83ID:BTMS1DN70 >>446
縁日の射的
縁日の射的
448デフォルトの名無しさん (オイコラミネオ MMed-lHUs)
2021/08/12(木) 08:25:03.59ID:F2ZBInFgM じゃあknifeは昔
クゥナイフとか言われてたのか
クゥナイフとか言われてたのか
449デフォルトの名無しさん (JP 0H85-NW/4)
2021/08/12(木) 09:03:50.69ID:KOJd5FjgH450デフォルトの名無しさん (スフッ Sd33-Lto6)
2021/08/12(木) 09:08:47.23ID:6jf0e9cQd 「延々と」を「永遠と」と書いたり言ったりする間違いが増えてて気になる
451デフォルトの名無しさん (アウアウウー Sa55-FoHg)
2021/08/12(木) 10:25:30.66ID:8wOIyJEba スレと全く関係ない話で
452デフォルトの名無しさん (ワッチョイ b168-Z6Ah)
2021/08/12(木) 10:31:28.13ID:JfgsXMu40 fightとかどう読んでたんだよ
ファイグフトかよ
ハードルが敷居に変わりつつある
フンイキがフインキに変わりつつある
ファイグフトかよ
ハードルが敷居に変わりつつある
フンイキがフインキに変わりつつある
453デフォルトの名無しさん (ワッチョイ 9b68-uW5m)
2021/08/12(木) 11:06:43.36ID:BTMS1DN70 >>452
そのとおり。昔は全て表記通りの発音だった。
欧米圏内は色々な言語が複雑に混じり合った経緯があるので、「なんで?」と考えるとキリないぞ
更に言うとネットやテレビが台頭してからは言語は固定されるだろう、と学者は予想していたけどあんまりそうでもないようだ
そのとおり。昔は全て表記通りの発音だった。
欧米圏内は色々な言語が複雑に混じり合った経緯があるので、「なんで?」と考えるとキリないぞ
更に言うとネットやテレビが台頭してからは言語は固定されるだろう、と学者は予想していたけどあんまりそうでもないようだ
454デフォルトの名無しさん (スフッ Sd33-Z6Ah)
2021/08/12(木) 11:29:35.78ID:cpovNsRqd ネットで声の大きいバカが目立てるようになったおかげで、間違いの広がる速度がむしろ加速してる
ウィルスやワクチンの誤解もひどいもんだし
ウィルスやワクチンの誤解もひどいもんだし
455デフォルトの名無しさん (アウアウウー Sa55-TjhZ)
2021/08/12(木) 11:32:55.00ID:stPdQEKya あの…VBA…
456デフォルトの名無しさん (ブーイモ MMeb-NW/4)
2021/08/12(木) 11:37:28.29ID:3EGHE4wmM 言葉の変化を認めないやつはRight関数も500年前の発音でアルァイギーエッテー関数と読めよ
457デフォルトの名無しさん (JP 0H85-Z6Ah)
2021/08/12(木) 11:39:34.06ID:KOJd5FjgH 次の質問どうぞ
458デフォルトの名無しさん (ラクッペペ MM8b-IWqQ)
2021/08/12(木) 12:31:29.35ID:uGYsB1RKM ファンクション(Function)
↓
ファンスウ
↓
ハンスウ(函数)
↓
カンスウ(関数)
↓
ファンスウ
↓
ハンスウ(函数)
↓
カンスウ(関数)
459デフォルトの名無しさん (JP 0H73-tV31)
2021/08/12(木) 14:58:41.40ID:wFbxLk6vH 万葉仮名も太古の昔はそのまま読んでたらしいしな
460デフォルトの名無しさん (ワッチョイ d101-lHUs)
2021/08/12(木) 15:14:57.51ID:4wn9NucC0 ナイフはそのうち
「ナイ」になるのかな
「ナイ」になるのかな
461デフォルトの名無しさん (ワッチョイ b168-Z6Ah)
2021/08/12(木) 15:16:18.65ID:JfgsXMu40 サイフはサイか
日本語やんけー
日本語やんけー
462デフォルトの名無しさん (ワッチョイ 9b68-uW5m)
2021/08/12(木) 15:21:53.11ID:BTMS1DN70 >>454
ネットは大分マシ。すぐにそれは変ですよって指摘できるからな
昔は大名が変な言い間違いをしていたらそれが臣下に広まって、地域一体のおかしな方言になった
ワクチンの誤情報もネットがなかったらもっとひどいことになっていただろう
ネットは大分マシ。すぐにそれは変ですよって指摘できるからな
昔は大名が変な言い間違いをしていたらそれが臣下に広まって、地域一体のおかしな方言になった
ワクチンの誤情報もネットがなかったらもっとひどいことになっていただろう
463デフォルトの名無しさん (アウアウウー Sa55-FoHg)
2021/08/12(木) 17:42:00.13ID:Fj2kkZVUa ひとのコードにケチをつけるつもりはまったくないけど
上にあった「名前分解=split(名前,"\")(ubound(split(名前,"\"))」ってのを実際に書きたい場合
自分は他人が見る見ないにかかわらず「a = split(名前,"\")」と「名前分解=a(ubound(a))」の
2行に分けるような感じで書いてるけど1行にする人がおおいのかね?
上にあった「名前分解=split(名前,"\")(ubound(split(名前,"\"))」ってのを実際に書きたい場合
自分は他人が見る見ないにかかわらず「a = split(名前,"\")」と「名前分解=a(ubound(a))」の
2行に分けるような感じで書いてるけど1行にする人がおおいのかね?
464デフォルトの名無しさん (オイコラミネオ MMed-lHUs)
2021/08/12(木) 17:53:53.44ID:XQI2fayvM そっちのほうがいいね
465デフォルトの名無しさん (アウアウウー Sa55-TjhZ)
2021/08/12(木) 18:01:08.04ID:tY2of2ova 1ヵ月後の自分は他人なので…
丁寧に書けるなら絶対その方がいい
丁寧に書けるなら絶対その方がいい
466289 (スフッ Sd33-RGvM)
2021/08/12(木) 18:29:35.92ID:FVU2afn4d 前スレ848です
最後の報告です
スレ汚しすいませんでした
その後
マクロ廃止後業務量が増えまくってあほがヒステリーを起こし
スラックで延々とケンカを売られ続けた
あまりにもブーメランを投げてくるので華麗に避けてたらあほ激怒
仕事を辞めると言い出した
課長はその言葉お嬉々として受け止めていた
結局のところ仕事が終わらず、マクロを使うことになったよ
あほが辞めるのは嬉しいけど、本当に自分が正しいのかよくわからなくなり
ちょっと鬱気味になっている
結論はマクロお人に共有すべきじゃなかったと思う
最後の報告です
スレ汚しすいませんでした
その後
マクロ廃止後業務量が増えまくってあほがヒステリーを起こし
スラックで延々とケンカを売られ続けた
あまりにもブーメランを投げてくるので華麗に避けてたらあほ激怒
仕事を辞めると言い出した
課長はその言葉お嬉々として受け止めていた
結局のところ仕事が終わらず、マクロを使うことになったよ
あほが辞めるのは嬉しいけど、本当に自分が正しいのかよくわからなくなり
ちょっと鬱気味になっている
結論はマクロお人に共有すべきじゃなかったと思う
467デフォルトの名無しさん (アウアウウー Sa55-r06d)
2021/08/12(木) 18:58:40.91ID:Fj2kkZVUa468デフォルトの名無しさん (ワッチョイ b168-Z6Ah)
2021/08/12(木) 19:09:35.66ID:JfgsXMu40469デフォルトの名無しさん (ブーイモ MM33-52IO)
2021/08/12(木) 19:30:26.41ID:J6mXolxSM470デフォルトの名無しさん (ワッチョイ 618e-effB)
2021/08/12(木) 19:36:16.05ID:Gdq8XFU10 >>466
死ねよ
死ねよ
471デフォルトの名無しさん (アウアウウー Sa55-FoHg)
2021/08/12(木) 19:43:55.65ID:Fj2kkZVUa472デフォルトの名無しさん (ワッチョイ 9b68-uW5m)
2021/08/12(木) 23:17:39.27ID:BTMS1DN70 >>466
いつもの流れだから気にすんな
いつもの流れだから気にすんな
473デフォルトの名無しさん (ワッチョイ 6eda-oCel)
2021/08/13(金) 02:15:07.67ID:fQVKfGt/0 >>466
まだ終わってない
まだ終わってない
474デフォルトの名無しさん (ワンミングク MM92-4yzW)
2021/08/13(金) 03:37:00.81ID:NVit/nDVM >>466
こういう人ってたかがマクロを少し作れるだけで自分が会社を経営してると思い込む馬鹿ばっかだよ
こういう人ってたかがマクロを少し作れるだけで自分が会社を経営してると思い込む馬鹿ばっかだよ
475デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/13(金) 09:23:59.80ID:Dh6ZDsQC0 すみません
VBA初心者です
下記プログラムはB1とB2に任意の数値を入れると
A5〜A100に数値から数値の間の数字が打ちあがります
一度入力したら2回目はA5からA100の数値を手動で削除
しなければなりません
B1に数値を新たに入力したら自動でクリアされれば
手動で削除しなくていいのですがコードが書けないで困ってます
どなたか詳しい方いましたらご教授ください
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address <> "$B$2" Then Exit Sub
If Range("B1").Value = "" Then
Exit Sub
End If
Range("A5:A100").Clear
Dim cnt As Long
Dim i As Long, j As Long
j = 0
cnt = Target.Value - Target.Offset(-1).Value
For i = 5 To cnt + 5
Cells(i, 1) = Target.Offset(-1).Value + j
Cells(i, 1).NumberFormatLocal = "@"
j = j + 1
Next i
End Sub
VBA初心者です
下記プログラムはB1とB2に任意の数値を入れると
A5〜A100に数値から数値の間の数字が打ちあがります
一度入力したら2回目はA5からA100の数値を手動で削除
しなければなりません
B1に数値を新たに入力したら自動でクリアされれば
手動で削除しなくていいのですがコードが書けないで困ってます
どなたか詳しい方いましたらご教授ください
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address <> "$B$2" Then Exit Sub
If Range("B1").Value = "" Then
Exit Sub
End If
Range("A5:A100").Clear
Dim cnt As Long
Dim i As Long, j As Long
j = 0
cnt = Target.Value - Target.Offset(-1).Value
For i = 5 To cnt + 5
Cells(i, 1) = Target.Offset(-1).Value + j
Cells(i, 1).NumberFormatLocal = "@"
j = j + 1
Next i
End Sub
476デフォルトの名無しさん (オイコラミネオ MM49-AL+r)
2021/08/13(金) 09:29:56.69ID:7J82GjQPM >>474
噂の同僚もこんなこと言ってそうだな
噂の同僚もこんなこと言ってそうだな
477デフォルトの名無しさん (ワッチョイ 9901-ic7f)
2021/08/13(金) 09:40:28.79ID:IVydqk9y0 VBAで数値計算をやらないといけないから、VBAの仕様を一通り学ぼうと思って書籍で勉強しているんだけど、
VBAで数値計算する意味がわからんわ
VBAで数値計算するメリットってファイルの入出力くらいしかないだろ・・・
VBAで数値計算する意味がわからんわ
VBAで数値計算するメリットってファイルの入出力くらいしかないだろ・・・
478デフォルトの名無しさん (ワッチョイ 7168-NTPF)
2021/08/13(金) 09:57:08.98ID:lG5axGIx0479デフォルトの名無しさん (オイコラミネオ MM49-AL+r)
2021/08/13(金) 10:08:41.85ID:7J82GjQPM >>477
逆に少し複雑になったら
並べ替えやvlookup用に変な数字が所狭しと並んだり
式もシートもぐちゃぐちゃになったり
行を増やすごとに式をいちいちコピペしないといけなかったり式のコピペ漏れの危険もある関数でやるメリットのほうがよくわからん
関数使っても問題ないのはマジで足し算掛け算レベルの簡単なものだけだろ
逆に少し複雑になったら
並べ替えやvlookup用に変な数字が所狭しと並んだり
式もシートもぐちゃぐちゃになったり
行を増やすごとに式をいちいちコピペしないといけなかったり式のコピペ漏れの危険もある関数でやるメリットのほうがよくわからん
関数使っても問題ないのはマジで足し算掛け算レベルの簡単なものだけだろ
480デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/13(金) 10:09:11.78ID:zvWaH7NU0 >>475
b1かb2以外で終了、に変更
Excel入ってないPCだから試してないけど、多分動くと思う
If Target.Address <> "$B$2" Then Exit Sub
↓
If not(Target.Address = "$B$2" or Target.Address = "$B$1") Then Exit Sub
b1かb2以外で終了、に変更
Excel入ってないPCだから試してないけど、多分動くと思う
If Target.Address <> "$B$2" Then Exit Sub
↓
If not(Target.Address = "$B$2" or Target.Address = "$B$1") Then Exit Sub
481デフォルトの名無しさん (ブーイモ MM6d-H+bG)
2021/08/13(金) 10:14:40.50ID:/ejQKQyrM482デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/13(金) 10:23:05.89ID:zvWaH7NU0483デフォルトの名無しさん (アウアウウー Saa5-/KFf)
2021/08/13(金) 10:37:15.01ID:5J5GXzoka テーブル機能は関数、VBAともに相性いいからとりあえずテーブルにするところから始めればいいんじゃないかな
484デフォルトの名無しさん (アウアウウー Saa5-++7W)
2021/08/13(金) 11:50:40.69ID:c6dMXYo0a >>475
判定をなおしてみました。こんな感じはどうでしょう。
If Target.Address = "$B$1" Then
Range("A5:A100").Clear
Exit Sub
ElseIf Target.Address = "$B$2" Then
If Range("B1").Value = "" Then
Exit Sub
End If
Else
Exit Sub
End If
判定をなおしてみました。こんな感じはどうでしょう。
If Target.Address = "$B$1" Then
Range("A5:A100").Clear
Exit Sub
ElseIf Target.Address = "$B$2" Then
If Range("B1").Value = "" Then
Exit Sub
End If
Else
Exit Sub
End If
485デフォルトの名無しさん (ワッチョイ 9901-2/6I)
2021/08/13(金) 14:43:20.07ID:MQNa+Oeo0 >>475
「B1が変更」かつ「B2が入力済み」の場合にも処理されるようにするのはどうでしょうか。
後、B1B2が数値である保証がないのも気になりました。
冒頭(Early Returnの部分)を
If Target.Address <> "$B$2" and Target.Address <> "$B$1" Then Exit Sub
If (VarType(Range("B1").Value) <> vbDouble) Then Exit Sub
If (VarType(Range("B2").Value) <> vbDouble) Then Exit Sub
に修正し、
Target.Value - Target.Offset(-1).Value
等の部分を具体的にRange("B1")の様にしてみて下さい。
「B1が変更」かつ「B2が入力済み」の場合にも処理されるようにするのはどうでしょうか。
後、B1B2が数値である保証がないのも気になりました。
冒頭(Early Returnの部分)を
If Target.Address <> "$B$2" and Target.Address <> "$B$1" Then Exit Sub
If (VarType(Range("B1").Value) <> vbDouble) Then Exit Sub
If (VarType(Range("B2").Value) <> vbDouble) Then Exit Sub
に修正し、
Target.Value - Target.Offset(-1).Value
等の部分を具体的にRange("B1")の様にしてみて下さい。
486デフォルトの名無しさん (ワッチョイ c2da-oCel)
2021/08/13(金) 16:54:07.44ID:HPpKMPwN0 いまだにテーブル機能を表のレイアウトの見栄えよくする機能だと思っている人いるんだなマジで。
興味ないとそんなもんだよね
興味ないとそんなもんだよね
487デフォルトの名無しさん (アウアウウー Saa5-/KFf)
2021/08/13(金) 17:27:51.79ID:Ko30HHoCa Vlookupなんてテーブルありきの仕様(範囲可変対応、速度、列指定等…)だし、
VBA使う時はForで範囲の中の値をループ処理するのはテーブル使うのが1番完結かつ読み手に伝わりやすい(と思う)
興味ない人は触れることもないんだろうなぁと思うと寂しいね
VBA使う時はForで範囲の中の値をループ処理するのはテーブル使うのが1番完結かつ読み手に伝わりやすい(と思う)
興味ない人は触れることもないんだろうなぁと思うと寂しいね
488デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/13(金) 18:51:34.24ID:Dh6ZDsQC0 VBA達人の皆さんありがとうございます
早速試してみます
皆さんはどのように勉強されたのですか?
VBA2年目ですがまだまだ初心者から脱却できません
早速試してみます
皆さんはどのように勉強されたのですか?
VBA2年目ですがまだまだ初心者から脱却できません
489デフォルトの名無しさん (ワッチョイ c2da-oCel)
2021/08/13(金) 18:51:53.98ID:HPpKMPwN0 まだ良いよ
見栄えよくすると思い込んでいて、何でもかんでもテーブルに変換する同僚がいるから
出力でそれやられると見辛い
見栄えよくすると思い込んでいて、何でもかんでもテーブルに変換する同僚がいるから
出力でそれやられると見辛い
490デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/13(金) 19:17:27.00ID:zvWaH7NU0491デフォルトの名無しさん (ワッチョイ 8101-AL+r)
2021/08/13(金) 20:37:12.04ID:fD7XP3Na0 変数を日本語にすると頭に入りやすい
492デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/13(金) 20:55:03.16ID:Dh6ZDsQC0493デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/13(金) 20:57:12.23ID:Dh6ZDsQC0494デフォルトの名無しさん (ワッチョイ 9901-ic7f)
2021/08/13(金) 21:57:30.74ID:IVydqk9y0 >>479
やっぱりどう考えてもVBAで数値計算って無理がありそうですよね
数値計算自体も偏微分方程式の解を求めたり、モンテカルロで期待値を求めたりするので、結構重いです・・・
学生なんで確信を持って言えないのですが、恐らく就職希望している業界がVBAとc++がメインなのでVBAで数値計算をできるようになっておく必要があると思います。
とりあえずまだ時間があるので、一度自分でVBAで書いてみてからデメリットを実感して見ようかと思います
やっぱりどう考えてもVBAで数値計算って無理がありそうですよね
数値計算自体も偏微分方程式の解を求めたり、モンテカルロで期待値を求めたりするので、結構重いです・・・
学生なんで確信を持って言えないのですが、恐らく就職希望している業界がVBAとc++がメインなのでVBAで数値計算をできるようになっておく必要があると思います。
とりあえずまだ時間があるので、一度自分でVBAで書いてみてからデメリットを実感して見ようかと思います
495デフォルトの名無しさん (ワッチョイ 9901-ic7f)
2021/08/13(金) 21:59:38.88ID:IVydqk9y0496デフォルトの名無しさん (ワッチョイ 71e4-gilQ)
2021/08/13(金) 22:15:24.05ID:al2VsHhL0 その分野には詳しくないんだが、不向きなのに何故VBAを数値計算に使うんだ?
エクセルならVBA使わずとも関数とかソルバーで出来るんじゃない?
エクセルならVBA使わずとも関数とかソルバーで出来るんじゃない?
497デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/13(金) 22:24:34.19ID:zvWaH7NU0498デフォルトの名無しさん (オイコラミネオ MMd6-Lo6P)
2021/08/13(金) 23:20:47.22ID:WIfN9845M 賑わってるね
499デフォルトの名無しさん (ワッチョイ 8101-AL+r)
2021/08/14(土) 00:11:33.82ID:p2FjIi+P0 >>497
あっ…なるほど(察し
あっ…なるほど(察し
500デフォルトの名無しさん (ワッチョイ 8232-/m/d)
2021/08/14(土) 00:32:25.73ID:8xoU1q0D0 夏季休暇に突入したぜウェーイ!
501デフォルトの名無しさん (アウアウウー Saa5-5/Wf)
2021/08/14(土) 03:50:50.70ID:2+Zp3qYIa c++とvbaを両方とも使うのありますよ
ターボファンの3次元ブレード図面の自動生成をする為に
autoCAD用APIをc++使ってdirectXのシェーダーでやり
流体計算はcudaの並列計算する一方で
ユーザーインターフェースはExcelVBAで寸法入力させるんですよ
ターボファンの3次元ブレード図面の自動生成をする為に
autoCAD用APIをc++使ってdirectXのシェーダーでやり
流体計算はcudaの並列計算する一方で
ユーザーインターフェースはExcelVBAで寸法入力させるんですよ
502デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 07:34:08.52ID:olTKpvXL0 何度も申し訳ありません
期間の日付をA5〜A100に自動で打ちあがるようにしたいのですが
例えばB1に整数3が入りB2に整数5が入った場合
A5〜A7に3、4、5
と自動で打ちあがるようにしたいです
B2に整数以外が文字などが入る場合は
例えばB1に3B2に英字のKが入った場合
A5に3A6にK
が打ち上がるようにしたいのですが
下記コードだと2回目以降はB1の値が変わっただけでは発火しないので
B2も変更しなければなりません
B1の値が変更されたら即発火させるにはどのようなコードで記述したらいいのでしょうか?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address <> "$B$2" And Target.Address <> "$B$1" Then Exit Sub
Range("A5:A100").Clear
Dim cnt As Long
Dim i As Long, j As Long
j = 0
cnt = Target.Value - Target.Offset(-1).Value
For i = 5 To cnt + 5
Cells(i, 1) = Target.Offset(-1).Value + j
Cells(i, 1).NumberFormatLocal = "@"
j = j + 1
Next i
End Sub
期間の日付をA5〜A100に自動で打ちあがるようにしたいのですが
例えばB1に整数3が入りB2に整数5が入った場合
A5〜A7に3、4、5
と自動で打ちあがるようにしたいです
B2に整数以外が文字などが入る場合は
例えばB1に3B2に英字のKが入った場合
A5に3A6にK
が打ち上がるようにしたいのですが
下記コードだと2回目以降はB1の値が変わっただけでは発火しないので
B2も変更しなければなりません
B1の値が変更されたら即発火させるにはどのようなコードで記述したらいいのでしょうか?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address <> "$B$2" And Target.Address <> "$B$1" Then Exit Sub
Range("A5:A100").Clear
Dim cnt As Long
Dim i As Long, j As Long
j = 0
cnt = Target.Value - Target.Offset(-1).Value
For i = 5 To cnt + 5
Cells(i, 1) = Target.Offset(-1).Value + j
Cells(i, 1).NumberFormatLocal = "@"
j = j + 1
Next i
End Sub
503デフォルトの名無しさん (ブーイモ MMb6-usf7)
2021/08/14(土) 07:41:00.78ID:X5b04eQGM 打ちあがるって何?
504デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 07:49:40.96ID:WRC7pvXs0505デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 08:01:31.03ID:olTKpvXL0506デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 08:04:36.53ID:olTKpvXL0507デフォルトの名無しさん (ブーイモ MM62-GUjw)
2021/08/14(土) 08:16:43.15ID:FeW4uPBDM IsNumericでB2を判定してTrueならFor文を走らせて、FalseならB2をA6へ
508デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 08:16:49.28ID:WRC7pvXs0 >>502
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err
'B1B2じゃなければ終了
If Intersect(Target, Range("B1:b2")) Is Nothing Then Exit Sub
'とりあえずクリア
Range("A5:A100").Clear
'メイン。整数じゃなければerrに飛んでコピーして終わり。trycacheみたいな事がしたかった
最初 = Cells(1, 2)
最後 = Cells(2, 2)
'
If (Int(最初) = 最初 And Int(最後) = 最後) Then
行 = 5
For i = 最初 To 最後
Cells(行, 1) = i
行 = 行 + 1
Next
Exit Sub
End If
'整数以外
err:
Range("a5:a6").Value = Range("B1:b2").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err
'B1B2じゃなければ終了
If Intersect(Target, Range("B1:b2")) Is Nothing Then Exit Sub
'とりあえずクリア
Range("A5:A100").Clear
'メイン。整数じゃなければerrに飛んでコピーして終わり。trycacheみたいな事がしたかった
最初 = Cells(1, 2)
最後 = Cells(2, 2)
'
If (Int(最初) = 最初 And Int(最後) = 最後) Then
行 = 5
For i = 最初 To 最後
Cells(行, 1) = i
行 = 行 + 1
Next
Exit Sub
End If
'整数以外
err:
Range("a5:a6").Value = Range("B1:b2").Value
End Sub
509デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 08:17:31.92ID:WRC7pvXs0510デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 08:32:21.96ID:olTKpvXL0511デフォルトの名無しさん (ブーイモ MM62-GUjw)
2021/08/14(土) 08:34:31.28ID:FeW4uPBDM あぁそうか整数の時だけなのか
でもOnErrorResumeNextはバグを見逃しやすくなるから個人的にはあんまり使いたくねぇなぁ
lsNumenic(B2)の後にB2=CLng(B2)で整数判定かけるのってどう?……見辛くなるか
でもOnErrorResumeNextはバグを見逃しやすくなるから個人的にはあんまり使いたくねぇなぁ
lsNumenic(B2)の後にB2=CLng(B2)で整数判定かけるのってどう?……見辛くなるか
512デフォルトの名無しさん (アウアウウー Saa5-++7W)
2021/08/14(土) 09:09:38.05ID:LMRL1zmta >>502がそもそも何で質問の様な動作になるかがわかってないとこれからも簡単なことでつまずくと思うよ
当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
B2→Target.ValueはB2、Target.Offset(-1)はB1
B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
B2→Target.ValueはB2、Target.Offset(-1)はB1
B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
513デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 09:17:38.32ID:WRC7pvXs0514デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 09:25:22.77ID:olTKpvXL0 >>512
> >>502がそもそも何で質問の様な動作になるかがわかってないとこれからも簡単なことでつまずくと思うよ
> 当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
> 「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
> B2→Target.ValueはB2、Target.Offset(-1)はB1
> B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
> ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
> ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
ネットで拾ったコードにOn Error Resume Nextを
加えたりして動くように自分なりにやってみたのですが
cnt = Target.Value - Target.Offset(-1).Value
の意味が理解できなくて・・・
少々自分にはレベルの高いコードでした
仕事でどうしてもエクセル使わないといけなかったので無理しましたw
ご教授ありがとうございます!
> >>502がそもそも何で質問の様な動作になるかがわかってないとこれからも簡単なことでつまずくと思うよ
> 当初と違って最初のif分に「Target.Address <> "$B$1"」が含まれたことでB1でも下のロジックが動くようになったけど
> 「cnt = Target.Value - Target.Offset(-1).Value」これがB1がTargetだと右のOffsetが存在しないから以降のコードが正しく動作しない状態になってる
> B2→Target.ValueはB2、Target.Offset(-1)はB1
> B1→Target.ValueはB1、Target.Offset(-1)は存在しないセルなのでエラー
> ここをB1でもB2でも正しくセルの値を参照できるようにすればいいのでは
> ちなみに「On Error Resume Next」のせいでエラーになっているのを無視して動作するようになってるので外したほうがいいのでは
ネットで拾ったコードにOn Error Resume Nextを
加えたりして動くように自分なりにやってみたのですが
cnt = Target.Value - Target.Offset(-1).Value
の意味が理解できなくて・・・
少々自分にはレベルの高いコードでした
仕事でどうしてもエクセル使わないといけなかったので無理しましたw
ご教授ありがとうございます!
515デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/14(土) 09:28:14.25ID:olTKpvXL0516デフォルトの名無しさん (ワッチョイ c2da-oCel)
2021/08/14(土) 10:58:30.72ID:UIvxBUgE0 Excelの関数とか覚える必要ないでしょ
全部マクロでやれば済むはずだし。
全部マクロで処理している人が職場にいる。
全部マクロでやれば済むはずだし。
全部マクロで処理している人が職場にいる。
517デフォルトの名無しさん (ワッチョイ 7168-NTPF)
2021/08/14(土) 11:02:58.83ID:WZYuRp6L0 適材適所
518デフォルトの名無しさん (ワッチョイ 9901-ic7f)
2021/08/14(土) 11:11:37.37ID:Wd8wuOU/0 >>496
使う理由は確かにわからないんですよね・・・
ただ、日本語以外の本でもその業界の数値計算のコード例がC++かVBAかMATLABなので恐らく業界のデファクトスタンダード
になっているんだと思います。
VBA以外にも使えそうなエクセルの機能があるなら使っていこうかと思います
使う理由は確かにわからないんですよね・・・
ただ、日本語以外の本でもその業界の数値計算のコード例がC++かVBAかMATLABなので恐らく業界のデファクトスタンダード
になっているんだと思います。
VBA以外にも使えそうなエクセルの機能があるなら使っていこうかと思います
519デフォルトの名無しさん (ワッチョイ 9901-ic7f)
2021/08/14(土) 11:13:11.03ID:Wd8wuOU/0520デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/14(土) 11:22:28.35ID:WRC7pvXs0521デフォルトの名無しさん (アウアウウー Saa5-oCel)
2021/08/14(土) 11:37:23.70ID:WNZYUSqEa たまになのによくみる?
522デフォルトの名無しさん (エムゾネ FF62-BgPC)
2021/08/14(土) 12:03:40.37ID:MjnqNUAdF >>515
5ちゃんを観るのを止めると綺麗なコード描けるようになる
5ちゃんを観るのを止めると綺麗なコード描けるようになる
523デフォルトの名無しさん (ブーイモ MMb6-aBRF)
2021/08/14(土) 12:21:33.89ID:r4eiaXelM524デフォルトの名無しさん (ワッチョイ 3d28-/KFf)
2021/08/14(土) 12:31:49.92ID:egxXCzK30 if,and,orと変数の使い方を覚える
Functionの使い方を覚える(Byval,ByRef)
Range(”A2”)みたいな書き方から、Worksheet.Cells(2,1)の様な書き方に変える
配列、Dictionary,Collectionの使い方を覚える
ユーザーフォームを作れるようになる
(クラスの使い方を覚える)
こんな流れで順々にやれることを増やしていくといいよ
Functionの使い方を覚える(Byval,ByRef)
Range(”A2”)みたいな書き方から、Worksheet.Cells(2,1)の様な書き方に変える
配列、Dictionary,Collectionの使い方を覚える
ユーザーフォームを作れるようになる
(クラスの使い方を覚える)
こんな流れで順々にやれることを増やしていくといいよ
525デフォルトの名無しさん (ワッチョイ 7168-NTPF)
2021/08/14(土) 12:35:39.31ID:WZYuRp6L0526デフォルトの名無しさん (ワッチョイ 498e-JtI+)
2021/08/14(土) 16:05:31.07ID:9rufdIX60 ID:olTKpvXL0
いつものあいつ
いつものあいつ
527デフォルトの名無しさん (ブーイモ MM62-GUjw)
2021/08/14(土) 16:13:08.42ID:FeW4uPBDM いつものあいつって言いたいだけの例の人
528デフォルトの名無しさん (ワッチョイ 7168-NTPF)
2021/08/14(土) 16:13:36.00ID:WZYuRp6L0 いつものあいつに粘着してるやつ
529デフォルトの名無しさん (ワッチョイ 8101-AL+r)
2021/08/14(土) 16:16:12.93ID:p2FjIi+P0 Rubyの人だっけ
530デフォルトの名無しさん (ワントンキン MM92-4yzW)
2021/08/14(土) 19:17:04.70ID:QQrfTJ+jM またも引っ掛かる間抜けな人達
531デフォルトの名無しさん (ワッチョイ 9901-pBez)
2021/08/14(土) 23:40:30.92ID:0AEpqYcN0 VBAはビジネスソフト板でやれ。
ム板でVBAの話する奴は全員荒らし。
ム板でVBAの話する奴は全員荒らし。
532デフォルトの名無しさん (ワッチョイ 42ad-NTPF)
2021/08/15(日) 01:41:34.07ID:Ab4oMS/u0 ListBoxAに複数行の内容を表示し、その行数をラベルに表示させている。
RemoveItemで行を削除した後、ラベルの表示内容を更新したい。
といった場合に、
RemoveItemの後でラベルの数字を1マイナスする、という手動処理ではなくて、
ListBoxAの内容が変更されたことをトリガーとして行数を再計算する、という自動処理にしたいんですが、
どのイベントプロシージャを使えばいいですか?
RemoveItemで行を削除した後、ラベルの表示内容を更新したい。
といった場合に、
RemoveItemの後でラベルの数字を1マイナスする、という手動処理ではなくて、
ListBoxAの内容が変更されたことをトリガーとして行数を再計算する、という自動処理にしたいんですが、
どのイベントプロシージャを使えばいいですか?
533デフォルトの名無しさん (ワッチョイ 8101-AL+r)
2021/08/15(日) 09:02:47.73ID:Vp1mNkx00 またでたー
534デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/15(日) 10:47:47.12ID:FNsj8xWN0 >>532
無いっぽい
>RemoveItemの後でラベルの数字を1マイナスする
例えばcommandbuttonでRemoveItemしてるなら、
以下のようにするしか
Private Sub CommandButton1_Click()
'removeitemの処理がここに
Debug.Print ListBox1.ListCount
End Sub
無いっぽい
>RemoveItemの後でラベルの数字を1マイナスする
例えばcommandbuttonでRemoveItemしてるなら、
以下のようにするしか
Private Sub CommandButton1_Click()
'removeitemの処理がここに
Debug.Print ListBox1.ListCount
End Sub
535デフォルトの名無しさん (ワッチョイ 0668-MFFZ)
2021/08/15(日) 10:48:11.05ID:FNsj8xWN0 RemoveItemにevent追加するほうが綺麗だけどねぇ
vbaじゃ無理だねぇ
vbaじゃ無理だねぇ
536デフォルトの名無しさん (ワッチョイ c242-rA07)
2021/08/15(日) 11:06:26.14ID:47f+T2dk0 仮にイベントがあったとしてもremoveitemのあとに再計算の処理を書いたほうがスッキリしていいと思うが
537デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/15(日) 11:24:14.03ID:U+FsjVqC0 >>536
RemoveItemしてるのが1箇所ならいいかも知れんが複数あったら面倒だろ
RemoveItemしてるのが1箇所ならいいかも知れんが複数あったら面倒だろ
538デフォルトの名無しさん (アウアウウー Saa5-oCel)
2021/08/15(日) 11:44:01.29ID:PuWX92Pra 一ヶ所にまとめればいいだけだし
539デフォルトの名無しさん (ワッチョイ 4201-VYeI)
2021/08/15(日) 11:48:45.57ID:U+FsjVqC0 イベントに書ければ1箇所にまとめる手間もないし1年後に改修した時に1箇所にまとめたのを忘れてRemoveItem単体で使ってバグることもないし…
まあVBAでは夢物語なんだけどね
まあVBAでは夢物語なんだけどね
540532 (ワッチョイ 42ad-NTPF)
2021/08/15(日) 12:12:51.35ID:Ab4oMS/u0 ありがとうございます。
その後、試してみたこととして、
ListBoxのChangeイベントに再計算の処理を書いておき、
RemoveItemの後で.listIndex=0の処理を入れたところ、
一発目のRemoveItem後は、期待どおりChangeイベントが発生してくれましたが、
二発目以降は、.listIndexが0→0と変化なしのせいか、イベントは発生しませんでした。
行数を再計算したい、と書きましたが、
単純に全体の行数であれば、RemoveItemの後で.listCountをラベルに代入するだけの一行で済みますが、
実際は、リストの1カラム目(ID欄として使用)が100未満の場合と100以上の場合で分けてカウントしており、
FOR文で、ID100未満までの間でヒットするIDがあるたびに対象のカウントをインクリメントし、
2つ目のFOR文で、ID100以上について同様の処理を行う、
という風にしようとした時に、これが冗長に思えました。
もし、使えるイベントがあれば、
そのイベントプロシージャの中で、
それぞれのカウンタラベルのうち対象となる方のみマイナスした値に変更する、
という処理を入れるだけでOKになりそう、と考えました。
結論としては、
イベントに頼らず、
指定したIDの行を.RemoveItemする処理のところで、
そのIDが100未満か100以上かで分岐させて、
その分岐の中で、対象となるカウンタをマイナスする、
という処理にしました。
その後、試してみたこととして、
ListBoxのChangeイベントに再計算の処理を書いておき、
RemoveItemの後で.listIndex=0の処理を入れたところ、
一発目のRemoveItem後は、期待どおりChangeイベントが発生してくれましたが、
二発目以降は、.listIndexが0→0と変化なしのせいか、イベントは発生しませんでした。
行数を再計算したい、と書きましたが、
単純に全体の行数であれば、RemoveItemの後で.listCountをラベルに代入するだけの一行で済みますが、
実際は、リストの1カラム目(ID欄として使用)が100未満の場合と100以上の場合で分けてカウントしており、
FOR文で、ID100未満までの間でヒットするIDがあるたびに対象のカウントをインクリメントし、
2つ目のFOR文で、ID100以上について同様の処理を行う、
という風にしようとした時に、これが冗長に思えました。
もし、使えるイベントがあれば、
そのイベントプロシージャの中で、
それぞれのカウンタラベルのうち対象となる方のみマイナスした値に変更する、
という処理を入れるだけでOKになりそう、と考えました。
結論としては、
イベントに頼らず、
指定したIDの行を.RemoveItemする処理のところで、
そのIDが100未満か100以上かで分岐させて、
その分岐の中で、対象となるカウンタをマイナスする、
という処理にしました。
541デフォルトの名無しさん (ワッチョイ 62f0-/m/d)
2021/08/15(日) 14:06:03.01ID:Q1u7LxQ80■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 ★2 [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 高市首相「多様なコメの増産を進める」 方針転換への懸念払拭狙いか ★2 [どどん★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 初めて顔パックしたけど凄いなこれ
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 巨大地震 [957955821]
- 胃腸弱い奴は社会的弱者←ガチ
- 【🏡】岩手ビックウェーブ🏄うおおおおおおおおおおお🌊
- 千晴の住所教えてよ!
