!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
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (スププ Sdaa-x2SP)
2021/07/18(日) 08:42:15.37ID:KskL7bEXd782デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/01(水) 04:48:15.65ID:vx5cHFWE0 ユーザーフォームから
A1に数字が入力され
B1からB7まで同じく数字が入力され
A1が月で、B1〜B7を日として
C1〜C7に月日として表示したいのですが
A B C D E ・ ・ ・
1 8 12 8/12
2 13 8/13
3 14 8/14
4
5
・
・
・
上記、票のようにA1とB列に分割された月日を
C列に日付にできるでしょうか?
いつも質問ばかりで恐縮ですが
ご教授おねがいします
A1に数字が入力され
B1からB7まで同じく数字が入力され
A1が月で、B1〜B7を日として
C1〜C7に月日として表示したいのですが
A B C D E ・ ・ ・
1 8 12 8/12
2 13 8/13
3 14 8/14
4
5
・
・
・
上記、票のようにA1とB列に分割された月日を
C列に日付にできるでしょうか?
いつも質問ばかりで恐縮ですが
ご教授おねがいします
783デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/01(水) 07:48:40.08ID:QyYX1GEf0784デフォルトの名無しさん (ブーイモ MM65-dU6Z)
2021/09/01(水) 09:23:39.06ID:Uj8mUWALM 12月ぐらいに来年の1月のデータを入力しようとして日付だけ入力して今年の1月になっちゃってたってのは割りとあるある
785デフォルトの名無しさん (スプッッ Sd82-0q/m)
2021/09/01(水) 10:18:49.87ID:uNhFH8V1d786デフォルトの名無しさん (ワッチョイ ae68-U7Lh)
2021/09/01(水) 10:20:20.08ID:ufGoj8xi0 年には言及無いし
C1に「= A$1 & "/" & B1」これ入力して下へずらっとでいいんじゃないの
C1に「= A$1 & "/" & B1」これ入力して下へずらっとでいいんじゃないの
787デフォルトの名無しさん (ワッチョイ ae68-U7Lh)
2021/09/01(水) 10:22:29.22ID:ufGoj8xi0788デフォルトの名無しさん (アウアウウー Sa85-7Bq0)
2021/09/01(水) 10:56:06.92ID:RCZPpxX+a 月かわるんかい
じゃ新しい月になった時にどういう処理してるかも書かにゃ答えようがないぞ
じゃ新しい月になった時にどういう処理してるかも書かにゃ答えようがないぞ
789デフォルトの名無しさん (スプッッ Sd82-0q/m)
2021/09/01(水) 12:13:19.29ID:uNhFH8V1d 月をまたぐ事はないので
790デフォルトの名無しさん (スプッッ Sd82-0q/m)
2021/09/01(水) 12:15:18.01ID:uNhFH8V1d 今出先なので家に帰ったら皆さんが
わかりやすいようにご説明したいと思います
言葉足らずなご説明で大変申し訳ありません
わかりやすいようにご説明したいと思います
言葉足らずなご説明で大変申し訳ありません
791デフォルトの名無しさん (ワッチョイ 112f-q8ax)
2021/09/01(水) 13:29:51.12ID:MIZAw2OB0 なにがやりたいかよくわからんが、日付として取り扱わないほうがいい気がするなぁ
単純に文字列として連結しといたほうがいいかもしれん
単純に文字列として連結しといたほうがいいかもしれん
792698 (ワッチョイ c95f-K0XX)
2021/09/01(水) 16:29:17.25ID:zi3lAKaz0 698です お礼が遅くなってすみません
>>718さんの内容でほぼほぼ実現出来ました
その節はありがとうございました
Selectionを使っていた時に比べスピードもかなり上がりました
データ数100万程で5秒くらいです
ただ一部のファイルで元々設定していた表示形式が数値へ置き換わってしまい悩んでいます
例えば0010→10など
浅知恵でTextやCStrを使えばどうにかなるかと思いましたがダメでした
>>718さんの内容でほぼほぼ実現出来ました
その節はありがとうございました
Selectionを使っていた時に比べスピードもかなり上がりました
データ数100万程で5秒くらいです
ただ一部のファイルで元々設定していた表示形式が数値へ置き換わってしまい悩んでいます
例えば0010→10など
浅知恵でTextやCStrを使えばどうにかなるかと思いましたがダメでした
793デフォルトの名無しさん (テテンテンテン MM66-xCK4)
2021/09/01(水) 17:31:57.00ID:xpLasvJBM VBAからIEを操作するプログラムが
Windows11にしたら動きません
というのは周知の事実ですか?
Windows11にしたら動きません
というのは周知の事実ですか?
794デフォルトの名無しさん (テテンテンテン MM66-xCK4)
2021/09/01(水) 17:40:04.10ID:xpLasvJBM ひとまずNavigateでURLを開くのはイケますが
Document.readyStateを上手く拾えないので操作しようがないですね
Document.readyStateを上手く拾えないので操作しようがないですね
795デフォルトの名無しさん (ワッチョイ aeda-HBgv)
2021/09/01(水) 17:43:07.67ID:AF6jYwWs0 >>793
セキュリティーを考えればそれが普通じゃね
セキュリティーを考えればそれが普通じゃね
796デフォルトの名無しさん (スップ Sd82-Hm2x)
2021/09/01(水) 17:43:57.36ID:oM9EKr7Vd797デフォルトの名無しさん (テテンテンテン MM66-xCK4)
2021/09/01(水) 17:46:56.00ID:xpLasvJBM >>795
互換モードをedgeは載せているのだから動くものかと
互換モードをedgeは載せているのだから動くものかと
798デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/01(水) 18:08:06.29ID:vx5cHFWE0 下記のように反映された後
A B C D E ・ ・ ・
1 8 12 8/12
2 13 8/13
3 14 8/14
4
5
・
・
・
2回目以降、B2〜B3を消去して出力すると
A B C D E ・ ・ ・
1 8 12 8/12
2 4/30
3 4/30
4
5
・
・
・
4/30と出力されます
4/30を自動でクリアして空白にしたいのですが
いい方法が思いつきません
ご教授おねがいします
A B C D E ・ ・ ・
1 8 12 8/12
2 13 8/13
3 14 8/14
4
5
・
・
・
2回目以降、B2〜B3を消去して出力すると
A B C D E ・ ・ ・
1 8 12 8/12
2 4/30
3 4/30
4
5
・
・
・
4/30と出力されます
4/30を自動でクリアして空白にしたいのですが
いい方法が思いつきません
ご教授おねがいします
799デフォルトの名無しさん (ワッチョイ 4510-jtj7)
2021/09/01(水) 18:09:47.36ID:kYWyELeA0 >>798
いい加減にしろ
いい加減にしろ
800デフォルトの名無しさん (ブーイモ MMf6-dU6Z)
2021/09/01(水) 18:34:36.51ID:rcR5Gl32M >>798
クリアしたあとDoループでB列が空白の場合はループを抜けるとかじゃダメかい?
クリアしたあとDoループでB列が空白の場合はループを抜けるとかじゃダメかい?
801デフォルトの名無しさん (テテンテンテン MM66-xCK4)
2021/09/01(水) 18:59:14.96ID:sD7Rqgd1M じゃあ現実的な代替案はどうですか?
ユーザー様にSeleniumドライバーのインストールと逐次更新をお願いするのは避けたいです
ユーザー様にSeleniumドライバーのインストールと逐次更新をお願いするのは避けたいです
802デフォルトの名無しさん (テテンテンテン MM66-q9XR)
2021/09/01(水) 19:08:28.99ID:n24W6MuYM803デフォルトの名無しさん (ブーイモ MM4d-hkn+)
2021/09/01(水) 19:09:36.61ID:V21gvc28M B列が空ならC列も空にする
804デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/01(水) 19:36:37.25ID:QyYX1GEf0 >>792
>>721を改造
Sub Macro6()
Application.Calculation = xlManual
Application.ScreenUpdating = False
myAddress = Split(Selection.SpecialCells(xlCellTypeFormulas, 23).Address, ",")
For Each EE In myAddress
Range(EE) = Range(EE)
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
変えたのは
Range(EE) = Range(EE)
だけ。これで多分いけるとおもうけど、どうだろう
>>721を改造
Sub Macro6()
Application.Calculation = xlManual
Application.ScreenUpdating = False
myAddress = Split(Selection.SpecialCells(xlCellTypeFormulas, 23).Address, ",")
For Each EE In myAddress
Range(EE) = Range(EE)
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
変えたのは
Range(EE) = Range(EE)
だけ。これで多分いけるとおもうけど、どうだろう
805デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/01(水) 19:38:47.95ID:QyYX1GEf0 cells(1,1)=cells(1,1)
って暗黙の型変換で
cells(1,1).value=cells(1,1).value
になっているとおもったけど違うのね
って暗黙の型変換で
cells(1,1).value=cells(1,1).value
になっているとおもったけど違うのね
807デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/01(水) 20:21:01.01ID:QyYX1GEf0808デフォルトの名無しさん (ワッチョイ 22f0-0q/m)
2021/09/01(水) 20:25:24.16ID:vx5cHFWE0809デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/01(水) 20:53:46.87ID:vx5cHFWE0 C1: = IF(B1 = "", "", A$1 & "/" & B1)
B列に文字が入力された場合
文字がそのままC列に表示されれば
完璧なんですが
難しいでしょうか?
B列に文字が入力された場合
文字がそのままC列に表示されれば
完璧なんですが
難しいでしょうか?
810デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/01(水) 20:56:51.38ID:QyYX1GEf0811698 (ワッチョイ c95f-K0XX)
2021/09/01(水) 20:58:57.68ID:zi3lAKaz0 >>807
別のシートからマスタのコードをTEXT関数、表示形式指定(例えば"00000")で表示させてるような状態です
計算結果→02010に>>721を実行すると2010(数値)、>>804を実行すると空白になってしまいます
今使っているのは2016ですが365環境もあるので後ほど試してみます
.Copyと.PasteSpecial xlPasteValuesで高速化できる方法があったりするのでしょうか
こちらに書き込む前に
For Each SC In Selection
SC.Copy.
SC.PasteSpecial xlPasteValues
で試した際は自力コピペしたほうがよっぽど早くてどうしようもありませんでした
別のシートからマスタのコードをTEXT関数、表示形式指定(例えば"00000")で表示させてるような状態です
計算結果→02010に>>721を実行すると2010(数値)、>>804を実行すると空白になってしまいます
今使っているのは2016ですが365環境もあるので後ほど試してみます
.Copyと.PasteSpecial xlPasteValuesで高速化できる方法があったりするのでしょうか
こちらに書き込む前に
For Each SC In Selection
SC.Copy.
SC.PasteSpecial xlPasteValues
で試した際は自力コピペしたほうがよっぽど早くてどうしようもありませんでした
812698 (ワッチョイ c95f-K0XX)
2021/09/01(水) 21:28:52.21ID:zi3lAKaz0 >>807>>811
例えば、
="0"&1
だと
01
別シートに打ち込んで実行したところたしかに空白にならず文字列で表示されました
ただ
="0"&1
="0"&2
="0"&3
の3行で実行すると全て消えて空白です…
例えば、
="0"&1
だと
01
別シートに打ち込んで実行したところたしかに空白にならず文字列で表示されました
ただ
="0"&1
="0"&2
="0"&3
の3行で実行すると全て消えて空白です…
813デフォルトの名無しさん (ワッチョイ 3d5f-9Am5)
2021/09/01(水) 21:42:45.23ID:WLDLOoPA0814698 (ワッチョイ c95f-K0XX)
2021/09/01(水) 21:44:13.89ID:zi3lAKaz0 >>812
連投すみません
3セルのうち
="0"&1
と
="0"&3
を選択すると文字列表示になりました
="0"&1
="0"&2
と
="0"&4を選択すると1と2は消えて4だけ文字列で残ります…
連投すみません
3セルのうち
="0"&1
と
="0"&3
を選択すると文字列表示になりました
="0"&1
="0"&2
と
="0"&4を選択すると1と2は消えて4だけ文字列で残ります…
815デフォルトの名無しさん (テテンテンテン MM66-q9XR)
2021/09/01(水) 21:45:19.70ID:RPMibrUxM >>809
C1: = IF(ISTEXT(B1), B1, A$1 & "/" & B1)
C1: = IF(ISTEXT(B1), B1, A$1 & "/" & B1)
816デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/01(水) 22:25:27.20ID:QyYX1GEf0 >>812>>814
Sub foo2()
Application.Calculation = xlCalculationManual ' 手動計算にする
Application.ScreenUpdating = False ' 描画を停止する
For Each sc In Selection.SpecialCells(xlCellTypeFormulas, 23)
sc.Value = sc
Next sc
Application.Calculation = xlCalculationManual ' 手動計算にする
Application.ScreenUpdating = False ' 描画を停止する
End Sub
これの
sc.Value = sc
の部分を
sc.Value = sc.value
や
sc=sc
など色々試したが、上記がうまくいった
なお一体どういう型変換が行われているのかまるでわからない模様
Sub foo2()
Application.Calculation = xlCalculationManual ' 手動計算にする
Application.ScreenUpdating = False ' 描画を停止する
For Each sc In Selection.SpecialCells(xlCellTypeFormulas, 23)
sc.Value = sc
Next sc
Application.Calculation = xlCalculationManual ' 手動計算にする
Application.ScreenUpdating = False ' 描画を停止する
End Sub
これの
sc.Value = sc
の部分を
sc.Value = sc.value
や
sc=sc
など色々試したが、上記がうまくいった
なお一体どういう型変換が行われているのかまるでわからない模様
817デフォルトの名無しさん (ワッチョイ 3d5f-RMdL)
2021/09/01(水) 22:52:06.46ID:h29OAeAi0 >>816
型指定宣言していないため、Forで指定するSCがVariant型
なので、SCはVariant(Rangeとは限らない…配列の1要素目みたいなイメージ)
ただ、SC.ValueとするとSCはRangeと明示されるのでそういう動きになる
んじゃないかなぁ
型指定宣言していないため、Forで指定するSCがVariant型
なので、SCはVariant(Rangeとは限らない…配列の1要素目みたいなイメージ)
ただ、SC.ValueとするとSCはRangeと明示されるのでそういう動きになる
んじゃないかなぁ
818デフォルトの名無しさん (ワッチョイ c170-hbzi)
2021/09/01(水) 23:29:26.76ID:2gcT+4EJ0 IE問題どうするかなぁ
819デフォルトの名無しさん (ワッチョイ 7901-xepr)
2021/09/01(水) 23:36:24.86ID:zknSVFy00 VBA止めるいいきっかけじゃん
820デフォルトの名無しさん (スフッ Sd22-U7Lh)
2021/09/01(水) 23:42:06.70ID:KwKwZOB6d821デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/01(水) 23:55:13.89ID:QyYX1GEf0 >>818
まあlそのうち誰かがなんとかするやろ
まあlそのうち誰かがなんとかするやろ
822デフォルトの名無しさん (ワッチョイ b1ac-e5Hg)
2021/09/01(水) 23:58:40.93ID:lmopnPTl0 ちゃんとしたシステム入れればいいだけ
823デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/02(木) 00:17:40.36ID:vUCj94gS0 ちゃんとしたシステム(爆笑)
824705 (ワッチョイ 868c-ylpg)
2021/09/02(木) 00:50:02.40ID:PlnEFAD30 >>814
まとめるとこういうこと?
Sub Macro7()
Application.Calculation = xlManual
Application.ScreenUpdating = False
myAddress = Split(Selection.SpecialCells(xlCellTypeFormulas, 23).Address, ",")
For Each EE In myAddress
Range(EE).Copy
Range(EE).PasteSpecial xlPasteValues
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
まとめるとこういうこと?
Sub Macro7()
Application.Calculation = xlManual
Application.ScreenUpdating = False
myAddress = Split(Selection.SpecialCells(xlCellTypeFormulas, 23).Address, ",")
For Each EE In myAddress
Range(EE).Copy
Range(EE).PasteSpecial xlPasteValues
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
825デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/02(木) 06:01:59.22ID:pGyB2U1O0826デフォルトの名無しさん (ワッチョイ 2dfd-dU6Z)
2021/09/02(木) 06:17:15.44ID:8TUhFQ840 >>825
「○○であれば○○としたい」って言語化出来ているのであればあとはIf文で判定するだけでどうにかなるはずだよ
一回自分がやりたい事を頭からケツまでしっかり書いてフローチャートを作ってみた方がいい
○○であれば○○としたいの時には当てはまらない場合はどうするかもしっかり書くことを忘れずにね
「○○であれば○○としたい」って言語化出来ているのであればあとはIf文で判定するだけでどうにかなるはずだよ
一回自分がやりたい事を頭からケツまでしっかり書いてフローチャートを作ってみた方がいい
○○であれば○○としたいの時には当てはまらない場合はどうするかもしっかり書くことを忘れずにね
827デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/02(木) 06:20:57.63ID:pGyB2U1O0 連投で申し訳ありません!
言葉たらづですいません。結局わたしがやりたいと思ってるのは
A1に数字を入力
B1〜B2に数字を入力するとC列に結合た日付を表示しされる下記のような表です
A B C
1 9 2 9/2
2 5 9/3
3 9/4
4 9/5
ただB2に文字列が入力されたらC2に文字列が表示され
C3以降は空白になってくれればいいのですが
言葉たらづですいません。結局わたしがやりたいと思ってるのは
A1に数字を入力
B1〜B2に数字を入力するとC列に結合た日付を表示しされる下記のような表です
A B C
1 9 2 9/2
2 5 9/3
3 9/4
4 9/5
ただB2に文字列が入力されたらC2に文字列が表示され
C3以降は空白になってくれればいいのですが
828デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/02(木) 06:25:01.18ID:pGyB2U1O0 下記コードをここでお教えいただきもう少しで出来そうなのですがわたしにはむずかしすぎて
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("C1:C100").Clear
'メイン。整数じゃなければerrに飛んでコピーして終わり。trycacheみたいな事がしたかった
最初 = Cells(1, 2)
最後 = Cells(2, 2)
'
If (Int(最初) = 最初 And Int(最後) = 最後) Then
行 = 1
For i = 最初 To 最後
Cells(行, 3) = i
行 = 行 + 1
Next
Exit Sub
End If
'整数以外
err:
Range("C1:C7").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("C1:C100").Clear
'メイン。整数じゃなければerrに飛んでコピーして終わり。trycacheみたいな事がしたかった
最初 = Cells(1, 2)
最後 = Cells(2, 2)
'
If (Int(最初) = 最初 And Int(最後) = 最後) Then
行 = 1
For i = 最初 To 最後
Cells(行, 3) = i
行 = 行 + 1
Next
Exit Sub
End If
'整数以外
err:
Range("C1:C7").Value = Range("B1:b2").Value
End Sub
829デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/02(木) 06:57:24.18ID:pGyB2U1O0 間違いました!
A1に数字を入力
B1〜B2に数字を入力するとD列に結合た日付を表示しされる下記のような表です
A B C D
1 9 2 2 9/2
2 5 3 9/3
3 4 9/4
4 5 9/5
ただB2に文字列が入力されたらC2に文字列が表示され
C3とD3以降は空白になってくれればいいのですが
A1に数字を入力
B1〜B2に数字を入力するとD列に結合た日付を表示しされる下記のような表です
A B C D
1 9 2 2 9/2
2 5 3 9/3
3 4 9/4
4 5 9/5
ただB2に文字列が入力されたらC2に文字列が表示され
C3とD3以降は空白になってくれればいいのですが
830デフォルトの名無しさん (テテンテンテン MM66-xCK4)
2021/09/02(木) 07:37:19.92ID:O3nuwBcWM >>818
何か面白いことがわかったら教えて
何か面白いことがわかったら教えて
831デフォルトの名無しさん (ワッチョイ 2dfd-dU6Z)
2021/09/02(木) 07:53:36.77ID:8TUhFQ840 >>829
(クリア処理)
If IsNumeric(Range(″B1”).Value) And IsNumeric(Range(“B2″).Value) Then
Dim TgtAry() As String
ReDim TgtAry(0 to Range(”B2”).Value - Range(”B1”).Value, 3 to 4)
Dim AryCnt As Long
For AryCnt = 0 to Ubound(TgtAry, 1)
TgtAry(AryCnt, 3) = CLng(Range(”B1”).Value) + AryCnt
TgtAry(AryCnt, 4) = Range(”A1”).Value & ″/″ & TgtAry(AryCnt, 3)
Next
Range(Cells(1, 3), Cells(1 + Ubound(TgtAry, 1), 4).Value = TgtAry
End If
(クリア処理)
If IsNumeric(Range(″B1”).Value) And IsNumeric(Range(“B2″).Value) Then
Dim TgtAry() As String
ReDim TgtAry(0 to Range(”B2”).Value - Range(”B1”).Value, 3 to 4)
Dim AryCnt As Long
For AryCnt = 0 to Ubound(TgtAry, 1)
TgtAry(AryCnt, 3) = CLng(Range(”B1”).Value) + AryCnt
TgtAry(AryCnt, 4) = Range(”A1”).Value & ″/″ & TgtAry(AryCnt, 3)
Next
Range(Cells(1, 3), Cells(1 + Ubound(TgtAry, 1), 4).Value = TgtAry
End If
832デフォルトの名無しさん (アウアウウー Sa85-HBgv)
2021/09/02(木) 09:40:00.71ID:lpxNteAka もうあきた
833デフォルトの名無しさん (スプッッ Sdc1-0q/m)
2021/09/02(木) 09:50:07.01ID:S+z0tXCPd834デフォルトの名無しさん (ワッチョイ ae68-U7Lh)
2021/09/02(木) 10:17:54.51ID:61uHr+ZW0835デフォルトの名無しさん (ワッチョイ ae68-U7Lh)
2021/09/02(木) 10:23:41.27ID:61uHr+ZW0836デフォルトの名無しさん (スプッッ Sdc1-0q/m)
2021/09/02(木) 11:39:09.52ID:S+z0tXCPd837デフォルトの名無しさん (アウアウウー Sa85-7Bq0)
2021/09/02(木) 12:26:07.30ID:Lpp+cK/ya もおお面倒くせええ
最初ユーザーフォームがどうとか言ってたろ? そっちの管理者に言うのが手っ取り早いんじゃないの、まさか自作じゃあるまいし
最初ユーザーフォームがどうとか言ってたろ? そっちの管理者に言うのが手っ取り早いんじゃないの、まさか自作じゃあるまいし
838デフォルトの名無しさん (スッップ Sd22-U7Lh)
2021/09/02(木) 12:47:54.81ID:jQ7od4vmd 月と日の範囲らしき値をいれるようだが日だけチェックするとかが意味わからないんだよね
それと今まで教えてもらったコードが実際に何ができるかわかならければ今後も同じような質問ずっとするのかな
それと今まで教えてもらったコードが実際に何ができるかわかならければ今後も同じような質問ずっとするのかな
839名無し募集中。。。 (ワッチョイ 868c-ylpg)
2021/09/02(木) 13:06:30.53ID:PlnEFAD30 質問者は分散して書き込まれたわけのわからん条件を再度まとめて書いてくれないかな
文章力がないようだから番号を振って箇条書きがいいと思うよ
そこから仕切り直し
文章力がないようだから番号を振って箇条書きがいいと思うよ
そこから仕切り直し
840デフォルトの名無しさん (スプッッ Sdc1-0q/m)
2021/09/02(木) 13:44:53.64ID:S+z0tXCPd わかりました!
すみません
すみません
841デフォルトの名無しさん (スッップ Sd22-U7Lh)
2021/09/02(木) 14:04:46.60ID:jQ7od4vmd >>840
今までの経緯を見た感じだと単純な要件は
・A1には月、B1には開始日、B2には終了日が設定される
・C列には設定された開始日と終了日を使って開始日〜終了日の値が列挙される
・D列には設定された月とC列の値を使って日付が列挙される ※単純に月/日の文字列でよいのか(年を考慮した日付でなくてよいのか)
まずこれだけの要件であれば
>>828で関数などを使わずにD列の設定を追加すればよい(Cells(行, 4) = CStr(Cells(1, 1))&"/"&Cells(行, 3))
初期化の検討も関数がなくなれば「とりあえずクリア」の範囲をC1:D100にでもすればよい
エラーについては関数がなくなれば今のままでも要件を満たすのでは
今までの経緯を見た感じだと単純な要件は
・A1には月、B1には開始日、B2には終了日が設定される
・C列には設定された開始日と終了日を使って開始日〜終了日の値が列挙される
・D列には設定された月とC列の値を使って日付が列挙される ※単純に月/日の文字列でよいのか(年を考慮した日付でなくてよいのか)
まずこれだけの要件であれば
>>828で関数などを使わずにD列の設定を追加すればよい(Cells(行, 4) = CStr(Cells(1, 1))&"/"&Cells(行, 3))
初期化の検討も関数がなくなれば「とりあえずクリア」の範囲をC1:D100にでもすればよい
エラーについては関数がなくなれば今のままでも要件を満たすのでは
842デフォルトの名無しさん (ワッチョイ 6e8e-CEQY)
2021/09/02(木) 16:20:28.02ID:tb5mIgdu0 >>840
お前、いい加減にしろや
お前、いい加減にしろや
843デフォルトの名無しさん (ワッチョイ ae68-U7Lh)
2021/09/02(木) 16:37:31.01ID:61uHr+ZW0 >>829で
B2に文字列が入力された時D2がどうなるかが無い
B2に文字列が入力された時D2がどうなるかが無い
844デフォルトの名無しさん (ワッチョイ ae68-U7Lh)
2021/09/02(木) 16:56:20.51ID:61uHr+ZW0 >>840
A1 月
B1 開始日
B2 終了日 (文字列の時もある)
C列 B1からB2の連番 C1は常にB1 (B2が文字列ならそれをC2へ、以降空白)
D列 月/日 D1は常に開始月/日 (C2が文字列ならそれをD2へ?、以降空白)
でいいなら
C1 = B1
C2 = IF(ISTEXT(B2), B2, IF(ISTEXT(C1), "", IF(C1 + 1 <= B$2, C1 + 1, "")))
D1 = A1 & "/" & C1
D2 = IF(ISTEXT(C2), C2, A$1 & "/" & C2)
C2とD2は下にずらっとね
A1 月
B1 開始日
B2 終了日 (文字列の時もある)
C列 B1からB2の連番 C1は常にB1 (B2が文字列ならそれをC2へ、以降空白)
D列 月/日 D1は常に開始月/日 (C2が文字列ならそれをD2へ?、以降空白)
でいいなら
C1 = B1
C2 = IF(ISTEXT(B2), B2, IF(ISTEXT(C1), "", IF(C1 + 1 <= B$2, C1 + 1, "")))
D1 = A1 & "/" & C1
D2 = IF(ISTEXT(C2), C2, A$1 & "/" & C2)
C2とD2は下にずらっとね
845デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/02(木) 17:33:27.50ID:pGyB2U1O0846デフォルトの名無しさん (ワッチョイ 22f0-Ctl7)
2021/09/02(木) 17:40:30.06ID:pGyB2U1O0847デフォルトの名無しさん (スッップ Sd22-U7Lh)
2021/09/02(木) 18:06:17.19ID:jQ7od4vmd >>846
こんな感じでいいんじゃないの?
Private Sub Worksheet_Change(ByVal Target As Range)
'B1B2以外は終了
If Intersect(Target, Range("B1:B2")) Is Nothing Then
Exit Sub
End If
'クリア
Range("C1:D100").Clear
'開始日のチェック
If CheckValue(Cells(1, 2)) = False Then
Cells(1, 3) = Cells(1, 2)
Cells(2, 3) = Cells(2, 2)
Exit Sub
End If
'終了日のチェック
If CheckValue(Cells(2, 2)) = False Then
Cells(1, 3) = Cells(1, 2)
Cells(2, 3) = Cells(2, 2)
Exit Sub
End If
'開始日から終了日を設定
nRow = 1
For nValue = Cells(1, 2) To Cells(2, 2)
Cells(nRow, 3) = nValue
Cells(nRow, 4) = Cells(1, 1) & "/" & nValue
nRow = nRow + 1
Next
End Sub
こんな感じでいいんじゃないの?
Private Sub Worksheet_Change(ByVal Target As Range)
'B1B2以外は終了
If Intersect(Target, Range("B1:B2")) Is Nothing Then
Exit Sub
End If
'クリア
Range("C1:D100").Clear
'開始日のチェック
If CheckValue(Cells(1, 2)) = False Then
Cells(1, 3) = Cells(1, 2)
Cells(2, 3) = Cells(2, 2)
Exit Sub
End If
'終了日のチェック
If CheckValue(Cells(2, 2)) = False Then
Cells(1, 3) = Cells(1, 2)
Cells(2, 3) = Cells(2, 2)
Exit Sub
End If
'開始日から終了日を設定
nRow = 1
For nValue = Cells(1, 2) To Cells(2, 2)
Cells(nRow, 3) = nValue
Cells(nRow, 4) = Cells(1, 1) & "/" & nValue
nRow = nRow + 1
Next
End Sub
848デフォルトの名無しさん (スッップ Sd22-U7Lh)
2021/09/02(木) 18:06:38.29ID:jQ7od4vmd Private Function CheckValue(ByVal aValue As String) As Boolean
For nLoc = 1 To Len(aValue)
If InStr("0123456789", Mid(aValue, nLoc, 1)) = 0 Then
CheckValue = False
Exit Function
End If
Next
CheckValue = True
End Function
For nLoc = 1 To Len(aValue)
If InStr("0123456789", Mid(aValue, nLoc, 1)) = 0 Then
CheckValue = False
Exit Function
End If
Next
CheckValue = True
End Function
849デフォルトの名無しさん (ワッチョイ aeda-U7Lh)
2021/09/02(木) 18:06:56.77ID:1Fx06KPw0 まじでこんな仕様を業務で使ってんの?
850デフォルトの名無しさん (ワッチョイ 3d5f-RMdL)
2021/09/02(木) 18:13:18.91ID:24Y/Debo0 Range型に入れられるものを変数に入れず処理するのほんと嫌い
Cells(1,1)=2 とか
せめて行と列をLong型の変数にしてやってあげて
Cells(1,1)=2 とか
せめて行と列をLong型の変数にしてやってあげて
851デフォルトの名無しさん (ラクッペペ MM66-sNgg)
2021/09/02(木) 18:40:44.69ID:95p8ZRX9M852デフォルトの名無しさん (ワッチョイ 4668-bRsM)
2021/09/02(木) 19:39:27.31ID:vUCj94gS0 >>849
ここは日本やぞ
ここは日本やぞ
853デフォルトの名無しさん (ワッチョイ eebb-74/o)
2021/09/02(木) 20:22:46.11ID:JA6Fm57Z0 散布図において、点と点を結ぶ直線の色を、その系列の系列名参照先セルの背景色と同じ色に一括で変えるコードを教えてください。
背景色が設定されてない場合は色は変更しなくて良いです。
例えば下記画像のデータと散布図があるとします。
B1:E1セルの背景色を赤色に塗って、F1:G1セルの背景色を青色に塗ってマクロを実行すると、散布図の直線のうち、#1から#4が赤色に変わり、#5、#6が青色に変わり、#7以降はそのままの色を維持するようにしたいです。
https://i.imgur.com/lLWaKl2.jpg
https://i.imgur.com/Pdf7drp.jpg
系列が莫大な数のグラフだと設定から一つずつ色を変えるのは大変なので自動化したいです。
よろしくお願いします。
背景色が設定されてない場合は色は変更しなくて良いです。
例えば下記画像のデータと散布図があるとします。
B1:E1セルの背景色を赤色に塗って、F1:G1セルの背景色を青色に塗ってマクロを実行すると、散布図の直線のうち、#1から#4が赤色に変わり、#5、#6が青色に変わり、#7以降はそのままの色を維持するようにしたいです。
https://i.imgur.com/lLWaKl2.jpg
https://i.imgur.com/Pdf7drp.jpg
系列が莫大な数のグラフだと設定から一つずつ色を変えるのは大変なので自動化したいです。
よろしくお願いします。
854デフォルトの名無しさん (ワッチョイ 3d5f-9Am5)
2021/09/02(木) 21:07:03.00ID:pxeaKQvs0 質問スレなのにコード全てを教えてもらおうとするのはいかがなものかね
ある程度自分コード書いてここが分からないとかならわかるが
ある程度自分コード書いてここが分からないとかならわかるが
855デフォルトの名無しさん (ワッチョイ 8242-vQ3w)
2021/09/02(木) 21:24:04.85ID:DFz3pANA0 でも>>1で作成依頼もOKって書いてるしなあ
856デフォルトの名無しさん (JP 0H4d-U7Lh)
2021/09/02(木) 21:26:06.23ID:LsFuz3WEH >>853
ほい
ワークシートの中にグラフが1つしかないこと、全データがグラフに使われていることが条件
Sub Macro1()
ActiveSheet.ChartObjects("グラフ 1").Activate
For k = 1 To Cells(1, Columns.Count).End(xlToLeft).Column - 1
c = Cells(1, k + 1).Interior.Color
If c <> &HFFFFFF Then ActiveChart.FullSeriesCollection(k).Format.Line.ForeColor.RGB = _
RGB(c Mod 256, Int(c / 256) Mod 256, Int(c / 65536))
Next
End Sub
ほい
ワークシートの中にグラフが1つしかないこと、全データがグラフに使われていることが条件
Sub Macro1()
ActiveSheet.ChartObjects("グラフ 1").Activate
For k = 1 To Cells(1, Columns.Count).End(xlToLeft).Column - 1
c = Cells(1, k + 1).Interior.Color
If c <> &HFFFFFF Then ActiveChart.FullSeriesCollection(k).Format.Line.ForeColor.RGB = _
RGB(c Mod 256, Int(c / 256) Mod 256, Int(c / 65536))
Next
End Sub
857デフォルトの名無しさん (ワッチョイ 3d5f-9Am5)
2021/09/02(木) 21:38:11.49ID:pxeaKQvs0 >>855
それはすまない
それはすまない
858デフォルトの名無しさん (ワッチョイ eebb-74/o)
2021/09/02(木) 23:50:56.62ID:JA6Fm57Z0859デフォルトの名無しさん (ワッチョイ bf8c-4O+w)
2021/09/03(金) 00:34:19.18ID:7VSa3gcD0 FullSeriesCollectionってなんだよ
動かねーw
動かねーw
860デフォルトの名無しさん (ワッチョイ dfbd-EdY5)
2021/09/03(金) 04:25:34.03ID:kuvugUtS0861デフォルトの名無しさん (ワッチョイ 5ff0-/op0)
2021/09/03(金) 06:02:06.71ID:1mYCibIj0862デフォルトの名無しさん (ワッチョイ bf68-vUzR)
2021/09/03(金) 07:17:18.60ID:staQfXFI0 >859
検索した方が早いぞ
俺も知らないけど検索したら内容は秒で理解できた
https://docs.microsoft.com/ja-jp/office/vba/api/excel.fullseriescollection
検索した方が早いぞ
俺も知らないけど検索したら内容は秒で理解できた
https://docs.microsoft.com/ja-jp/office/vba/api/excel.fullseriescollection
863デフォルトの名無しさん (ワッチョイ 5f28-KrGZ)
2021/09/03(金) 13:32:27.55ID:LfmEXbOQ0 Bookを別名保存して配布用データを作成する場合に、.xlsx にしてそのファイルにVBAコードは存在しない状態にする方法はあるのでしょうか?
864698 (ワッチョイ 875f-LnQh)
2021/09/03(金) 14:03:11.01ID:XbDGKeUz0 >>816>>824
どちらも求めている結果になりました
824は自分でも試してもエラーになっていたので助かりました
型変換でこんなにつまづくは思わなかった(未だに原理は理解出来ていない…)
ありがとうございました!
どちらも求めている結果になりました
824は自分でも試してもエラーになっていたので助かりました
型変換でこんなにつまづくは思わなかった(未だに原理は理解出来ていない…)
ありがとうございました!
865デフォルトの名無しさん (ワッチョイ 878e-m4tS)
2021/09/03(金) 15:55:21.72ID:yaNRzQx30 >>863
全角文字の拡張子だからテキストファイルか何かにするのか?それとも単なる馬鹿か?
全角文字の拡張子だからテキストファイルか何かにするのか?それとも単なる馬鹿か?
866デフォルトの名無しさん (ワッチョイ 7f68-nTGN)
2021/09/03(金) 15:59:38.52ID:FrRqokaz0 >>865
寂しいの?
寂しいの?
867デフォルトの名無しさん (ワッチョイ 471d-FHff)
2021/09/03(金) 16:58:35.16ID:w5919iNp0 フリーランスエンジニアになってからの年収推移を公開【現在年収1000万】
https://dev-memo.net/fleelance_1000/
【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由
https://off.tokyo/blog/shinsotu-engineer-free-lancer/
フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説
https://flytech.work/blog/8142/
フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?
https://shikin-pro.com/guide/18633
【コラム】フリーランスは本当に自由なのだろうか?
https://zenn.dev/cat2pgm/articles/42bb40bf121342
「月100万円」稼ぐ猛者も、副業を始めるIT人材が急増している真の理由
https://xtech.nikkei.com/atcl/nxt/column/18/01572/021900001/
フリーランスエンジニアになって月100万稼いだ話
https://comblog.net/2020/07/06/freelance-100/
素人からでも「まずは月収50万以上」を目指したい方向け【フリーエンジニア・コンサル】
https://aruto.org/freelance-consulting
フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説
http://uma66.hateblo.jp/entry/2019/04/07/153119
https://dev-memo.net/fleelance_1000/
【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由
https://off.tokyo/blog/shinsotu-engineer-free-lancer/
フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説
https://flytech.work/blog/8142/
フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?
https://shikin-pro.com/guide/18633
【コラム】フリーランスは本当に自由なのだろうか?
https://zenn.dev/cat2pgm/articles/42bb40bf121342
「月100万円」稼ぐ猛者も、副業を始めるIT人材が急増している真の理由
https://xtech.nikkei.com/atcl/nxt/column/18/01572/021900001/
フリーランスエンジニアになって月100万稼いだ話
https://comblog.net/2020/07/06/freelance-100/
素人からでも「まずは月収50万以上」を目指したい方向け【フリーエンジニア・コンサル】
https://aruto.org/freelance-consulting
フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説
http://uma66.hateblo.jp/entry/2019/04/07/153119
868デフォルトの名無しさん (ワッチョイ bf8c-4O+w)
2021/09/04(土) 00:30:43.37ID:HdS4X7vy0869デフォルトの名無しさん (ワッチョイ 27da-4qC4)
2021/09/06(月) 00:46:52.30ID:bCHQ7Kl80 そこそこできるんだけど、これ中学生辺り相手に家庭教師したらいい小遣い稼ぎになるんでね
870デフォルトの名無しさん (スップ Sdff-nTGN)
2021/09/06(月) 00:51:02.10ID:4OUEmuPid 家庭教師なんて大学生の仕事だぞ
オヤジは採用されない
オヤジは採用されない
871デフォルトの名無しさん (ワッチョイ 27da-nTGN)
2021/09/06(月) 20:55:48.09ID:NYbUbMGR0 ハイパーリンクを絶対参照で設定しているのだけど(ファイル移動に備えて)表示文字列がフルパスだと
表示しきれないのでここだけ相対参照で表示したい.
絶対参照から相対参照文字列を取得する関数はないでしょうか?
表示しきれないのでここだけ相対参照で表示したい.
絶対参照から相対参照文字列を取得する関数はないでしょうか?
872デフォルトの名無しさん (ワッチョイ 5fda-qMED)
2021/09/06(月) 22:01:27.65ID:6VddzRoR0 。。。ラムダ関数の件どうなったの?
873デフォルトの名無しさん (アウアウウー Sa8b-AvaG)
2021/09/07(火) 01:09:39.85ID:fgpBZKKDa >>871
Perlで自作
Perlで自作
874デフォルトの名無しさん (ブーイモ MMcf-6D6a)
2021/09/07(火) 10:00:10.71ID:wW3S0zCbM >>871
split
split
875デフォルトの名無しさん (ワッチョイ 27da-nTGN)
2021/09/07(火) 10:23:08.20ID:LRYELwZL0 >>874
ヒントありがとう.
1,リンク元とリンク先のフィアル名以外のフルパスを区切り文字¥で分割する.
2,共通部分を除いたリンク元の文字列数の個数だけ”.\”を共通部分を除いたリンク先の文字列&ファイル名
であっていますか?
2の部分で個数を数える処理とかをスマートのやる方法ありますか?思いつくのが文字列を一つずつ比較して
異なると抜けるみたいみたいな処理がしか思いつかないんで.
ヒントありがとう.
1,リンク元とリンク先のフィアル名以外のフルパスを区切り文字¥で分割する.
2,共通部分を除いたリンク元の文字列数の個数だけ”.\”を共通部分を除いたリンク先の文字列&ファイル名
であっていますか?
2の部分で個数を数える処理とかをスマートのやる方法ありますか?思いつくのが文字列を一つずつ比較して
異なると抜けるみたいみたいな処理がしか思いつかないんで.
876デフォルトの名無しさん (ワッチョイ 7fda-nTGN)
2021/09/07(火) 10:23:56.54ID:p7djLIgl0 >>871
相対参照でも表示しきれないものはどうする気だ?
相対参照でも表示しきれないものはどうする気だ?
877デフォルトの名無しさん (ワッチョイ 27da-nTGN)
2021/09/07(火) 10:24:49.55ID:LRYELwZL0 間違えた
1,リンク元とリンク先のフルパスを区切り文字¥で分割する.
2,共通部分を除いたリンク先の文字列&ファイル名に共通部分を除いたリンク元の文字列数の個数-1だけ”.\”をつける
1,リンク元とリンク先のフルパスを区切り文字¥で分割する.
2,共通部分を除いたリンク先の文字列&ファイル名に共通部分を除いたリンク元の文字列数の個数-1だけ”.\”をつける
878デフォルトの名無しさん (ワッチョイ 27da-nTGN)
2021/09/07(火) 10:25:31.04ID:LRYELwZL0 >>876
そこまで深くないんで.
そこまで深くないんで.
879デフォルトの名無しさん (ワッチョイ 7fda-nTGN)
2021/09/07(火) 10:31:48.41ID:p7djLIgl0 相対参照への変換は動作が変わるので
表示だけ工夫することを勧めるよ
表示だけ工夫することを勧めるよ
880デフォルトの名無しさん (ワッチョイ 27da-nTGN)
2021/09/07(火) 10:43:18.05ID:LRYELwZL0881デフォルトの名無しさん (ワッチョイ 7fda-nTGN)
2021/09/07(火) 11:37:34.66ID:p7djLIgl0882デフォルトの名無しさん (ワッチョイ df2f-8qru)
2021/09/07(火) 13:38:20.09ID:7P2mUzTw0 それ、どこからの相対パスが欲しいんだよ?
自分自身から自分自身への相対パスなら、全部.\だから
たんにファイル名だけ表示させればいいんじゃね
汎用的に真面目な相対パスに変換しようと思ったら結構邪魔くさいな
まあこういうのは大概すでに誰かがやってる
VB.NETだが
https://dobon.net/vb/dotnet/file/getabsolutepath.html#pathrelativepathto
とか。API呼び出しでやる方法もそこにある
自分自身から自分自身への相対パスなら、全部.\だから
たんにファイル名だけ表示させればいいんじゃね
汎用的に真面目な相対パスに変換しようと思ったら結構邪魔くさいな
まあこういうのは大概すでに誰かがやってる
VB.NETだが
https://dobon.net/vb/dotnet/file/getabsolutepath.html#pathrelativepathto
とか。API呼び出しでやる方法もそこにある
883デフォルトの名無しさん (ワッチョイ 27da-KOX5)
2021/09/07(火) 15:24:56.80ID:LRYELwZL0 >>881
表示だけでは絶対パスがわからないのでTooltipは必要ですよね。
表示をファイル名だけにするか、C のようにするかですけど、表示だけである程度場所が分かりそうな情報が表示されていると便利なので、相対パスもしくはそのファイルがあるフォルダー名のどちらかにします。フォルダーは存在位置をだいたい覚えてるもんですから。
表示だけでは絶対パスがわからないのでTooltipは必要ですよね。
表示をファイル名だけにするか、C のようにするかですけど、表示だけである程度場所が分かりそうな情報が表示されていると便利なので、相対パスもしくはそのファイルがあるフォルダー名のどちらかにします。フォルダーは存在位置をだいたい覚えてるもんですから。
884デフォルトの名無しさん (ワッチョイ 5ff2-nzYM)
2021/09/08(水) 14:22:30.46ID:pb/a0YKS0 D列〜H列の各4項目を印刷エリアのA列に配置して
それぞれ印刷がしたいのですが、下記でも出力されますが、
もっと簡略な書き方あったら教えてください。
Sub PrintOut()
Range("A1").Value = Range("D1").Value
Range("A2").Value = Range("D2").Value
Range("A3").Value = Range("D3").Value
Range("A4").Value = Range("D4").Value
ActiveWindow.SelectedSheets.PrintOut
Range("A1").Value = Range("E1").Value
Range("A2").Value = Range("E2").Value
Range("A3").Value = Range("E3").Value
Range("A4").Value = Range("E4").Value
ActiveWindow.SelectedSheets.PrintOut
(以下F列分〜H列分まで繰り返している)
End Sub
それぞれ印刷がしたいのですが、下記でも出力されますが、
もっと簡略な書き方あったら教えてください。
Sub PrintOut()
Range("A1").Value = Range("D1").Value
Range("A2").Value = Range("D2").Value
Range("A3").Value = Range("D3").Value
Range("A4").Value = Range("D4").Value
ActiveWindow.SelectedSheets.PrintOut
Range("A1").Value = Range("E1").Value
Range("A2").Value = Range("E2").Value
Range("A3").Value = Range("E3").Value
Range("A4").Value = Range("E4").Value
ActiveWindow.SelectedSheets.PrintOut
(以下F列分〜H列分まで繰り返している)
End Sub
885デフォルトの名無しさん (ワッチョイ 27da-zGwr)
2021/09/08(水) 15:21:04.14ID:75/i6xmb0 >>884
offset 関数を使って I と J のループで回せば?
offset 関数を使って I と J のループで回せば?
886デフォルトの名無しさん (JP 0Hab-nTGN)
2021/09/08(水) 15:22:28.05ID:XlNVU0UMH >>884
Sub PrintOut()
Dim a
For c = 4 To 8
a = Cells(1, c).Resize(4, 1)
Range("A1:A4") = a
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
Sub PrintOut()
Dim a
For c = 4 To 8
a = Cells(1, c).Resize(4, 1)
Range("A1:A4") = a
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
887デフォルトの名無しさん (JP 0Hab-nTGN)
2021/09/08(水) 16:25:02.09ID:XlNVU0UMH 処理する範囲をわかりやすくしてみた
Sub PrintOut()
Dim a
For Each c In Range("D1:H1") 'DからHまで
a = c.Resize(4, 1) '縦4行
Range("A1").Resize(4, 1) = a
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
Sub PrintOut()
Dim a
For Each c In Range("D1:H1") 'DからHまで
a = c.Resize(4, 1) '縦4行
Range("A1").Resize(4, 1) = a
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
888デフォルトの名無しさん (スッップ Sd7f-aNuU)
2021/09/08(水) 16:25:12.58ID:W4cHTvUwd すげー!凄い短くなってる!
ありがとうございます。
後で試してみます。
まだVBA初めて間もないのですが、しっかり勉行すれば、
繰り返し作業簡素化の可能性を非常に感じました。
ありがとうございました。
ありがとうございます。
後で試してみます。
まだVBA初めて間もないのですが、しっかり勉行すれば、
繰り返し作業簡素化の可能性を非常に感じました。
ありがとうございました。
889デフォルトの名無しさん (ワッチョイ 7f8e-m4tS)
2021/09/08(水) 16:48:49.57ID:q+ZxDcv00 またいつものあいつに引っ掛かる馬鹿ども
890デフォルトの名無しさん (ブーイモ MMab-Esde)
2021/09/08(水) 17:49:01.52ID:I0eTwbNOM って言いたいだけの自尊心の擬人化さん
891デフォルトの名無しさん (アウアウウー Sa8b-AvaG)
2021/09/08(水) 18:05:21.93ID:ehctv71ga ねぇねぇワクチンが足りないとか余って捨ててるとかなんなの?
Excelでさえ1億2千万人のデータぐらい余裕で作れるんじゃないの?
Excelでさえ1億2千万人のデータぐらい余裕で作れるんじゃないの?
892デフォルトの名無しさん (ワッチョイ 5fda-qMED)
2021/09/08(水) 18:33:49.98ID:lGj0x8DT0 with派は?
893デフォルトの名無しさん (アウアウウー Sa8b-AvaG)
2021/09/08(水) 18:39:36.93ID:wkgfp7fUa Excelの印象派はちょっと困るねぇ
セル結合じゃなくてシェイプでやってよ
セル結合じゃなくてシェイプでやってよ
894デフォルトの名無しさん (ワッチョイ 5f42-3UkT)
2021/09/08(水) 19:58:14.37ID:y8J9pOw20 Excelではどうにも出来ないたぐいのヒューマンエラーが多いからな
895デフォルトの名無しさん (アウアウクー MMbb-pQFE)
2021/09/09(木) 09:38:25.14ID:foh10V2pM たとえば5000行もある住所録(一人一行使う)で、左端(つまりA列)にチェックボックスをつけるって出来ます?
5000個もチェックボックスオブジェクトを作るって現実にやってる方います?これは現実的でしょうか?
今考えてるのはA列に正方形(□)とレ点付きの□の二択プルダウンを用意することなんだけど、
それだとマウスのダブルクリックで表示を切り替えることは出来なくなる。
良い方法ありますか?
5000個もチェックボックスオブジェクトを作るって現実にやってる方います?これは現実的でしょうか?
今考えてるのはA列に正方形(□)とレ点付きの□の二択プルダウンを用意することなんだけど、
それだとマウスのダブルクリックで表示を切り替えることは出来なくなる。
良い方法ありますか?
896デフォルトの名無しさん (JP 0Hab-nTGN)
2021/09/09(木) 09:59:04.73ID:4tB32NIbH >>895
チェックボックスを5000個作るぐらい簡単だが?
けど、そういう一覧表を作る意味がないだろ
5000件も手作業でチェックなんか入れてたら絶対にミスが起きるし
次の作業のことまで考えて表を作れよ
チェックボックスを5000個作るぐらい簡単だが?
けど、そういう一覧表を作る意味がないだろ
5000件も手作業でチェックなんか入れてたら絶対にミスが起きるし
次の作業のことまで考えて表を作れよ
897デフォルトの名無しさん (ブーイモ MMcf-6D6a)
2021/09/09(木) 10:11:27.57ID:zJmTPnJXM >>895
チェックボックスみたいなテキストでやる
チェックボックスみたいなテキストでやる
898デフォルトの名無しさん (スップ Sd7f-nTGN)
2021/09/09(木) 10:12:10.09ID:FIynLA9Dd899デフォルトの名無しさん (スフッ Sd7f-nTGN)
2021/09/09(木) 10:25:59.17ID:4jr1qQtOd 参考 チェックボックスの絵文字 使用は推奨しない
☑
✅
☑
✅
900デフォルトの名無しさん (ブーイモ MMcf-Esde)
2021/09/09(木) 10:27:08.70ID:2Kg/wmz7M >>895
ダブルクリックかライトクリックイベントで背景色変えるとかなんか印を付けるとかした方が楽そう
ダブルクリックかライトクリックイベントで背景色変えるとかなんか印を付けるとかした方が楽そう
901デフォルトの名無しさん (ワッチョイ e749-fMWa)
2021/09/09(木) 10:32:22.27ID:IpCo+OYQ0 >>895
普通にその方法でいいじゃんと思うけど、ダブルクリック必須なの?
チェックボックスの操作ならせめてシングルクリックだと思うけど。
マウス必須ならA列にハイパーリンクを仕込んでおいて、イベント
ハンドラの中でどこが押されたかを判断して状態を反転させるという
方法もある。
ただこの場合A列は自由に入力可能なのでシートの保護を掛けることに
なると思うし、どの部分をどこまで編集可能とするかということとの
兼ね合いになると思う。
普通にその方法でいいじゃんと思うけど、ダブルクリック必須なの?
チェックボックスの操作ならせめてシングルクリックだと思うけど。
マウス必須ならA列にハイパーリンクを仕込んでおいて、イベント
ハンドラの中でどこが押されたかを判断して状態を反転させるという
方法もある。
ただこの場合A列は自由に入力可能なのでシートの保護を掛けることに
なると思うし、どの部分をどこまで編集可能とするかということとの
兼ね合いになると思う。
902デフォルトの名無しさん (ワッチョイ 27da-zGwr)
2021/09/09(木) 10:42:39.73ID:9k5sY4oP0 >>895
あなたの言ってることはダブルクリックとかチェックボックスとプルダウンとか意味不明なんだけど、やりたいことさえはっきりしてなら VBA でオブジェクトの追加コマンドを追加場所を1行から5000行まで変えながら回せばいい。
あなたの言ってることはダブルクリックとかチェックボックスとプルダウンとか意味不明なんだけど、やりたいことさえはっきりしてなら VBA でオブジェクトの追加コマンドを追加場所を1行から5000行まで変えながら回せばいい。
903デフォルトの名無しさん (JP 0Hab-nTGN)
2021/09/09(木) 10:48:23.02ID:4tB32NIbH904デフォルトの名無しさん (アウアウクー MMbb-pQFE)
2021/09/09(木) 10:50:53.75ID:foh10V2pM シングルクリックと間違えてました。
自動的に5000個作ると30分待っても終わらないので、ダメなのだと思ってました
自動的に5000個作ると30分待っても終わらないので、ダメなのだと思ってました
905デフォルトの名無しさん (アウアウクー MMbb-pQFE)
2021/09/09(木) 10:53:21.37ID:foh10V2pM906デフォルトの名無しさん (JP 0Hab-nTGN)
2021/09/09(木) 11:01:26.77ID:4tB32NIbH 試しにやってみたけど、チェックボックス5000個コピペだけなら20秒ぐらいで終わったぞ
https://i.imgur.com/4Bo9Yvp.png
https://i.imgur.com/4Bo9Yvp.png
907デフォルトの名無しさん (アウアウクー MMbb-pQFE)
2021/09/09(木) 11:03:58.28ID:foh10V2pM908デフォルトの名無しさん (アウアウクー MMbb-pQFE)
2021/09/09(木) 11:07:12.46ID:foh10V2pM909デフォルトの名無しさん (ワッチョイ 7fda-nTGN)
2021/09/09(木) 11:21:19.40ID:37zPgm1s0 >>907
ちなみにどんなふうに削除してる?
ちなみにどんなふうに削除してる?
910デフォルトの名無しさん (アウアウウー Sa8b-bFZP)
2021/09/09(木) 14:10:09.39ID:m7/bNtYYa クラスモジュールの引数に可変長引数を渡したくて、呼び出し側でその引数に変数をぶち込んで渡したいんだけど、これってやっぱりできないの?
911デフォルトの名無しさん (ワッチョイ bf68-vUzR)
2021/09/09(木) 19:38:24.58ID:7gPjCFSp0 >>895
sheetモジュールに記述
※ただ、選択済みのセルをクリックしてon/offができない
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
d = WorksheetFunction.Unicode(Cells(1, 1).Value)
Debug.Print (d) ' 38960
If Target.Column = 1 Then
Target.NumberFormatLocal = WorksheetFunction.Unichar(10004) & ";□;0;@"
If Target.Value = 0 Then Target.Value = -1
Target.Value = Target.Value * -1
End If
End Sub
sheetモジュールに記述
※ただ、選択済みのセルをクリックしてon/offができない
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
d = WorksheetFunction.Unicode(Cells(1, 1).Value)
Debug.Print (d) ' 38960
If Target.Column = 1 Then
Target.NumberFormatLocal = WorksheetFunction.Unichar(10004) & ";□;0;@"
If Target.Value = 0 Then Target.Value = -1
Target.Value = Target.Value * -1
End If
End Sub
912デフォルトの名無しさん (ワッチョイ bf68-vUzR)
2021/09/09(木) 19:39:38.73ID:7gPjCFSp0 デバッグ残ってたわ。こっちで
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'A列のみ
If Target.Column = 1 Then
'書式設定を設定
Target.NumberFormatLocal = WorksheetFunction.Unichar(10004) & ";□;0;@"
'-1かけて反転させる
If Target.Value = 0 Then Target.Value = -1
Target.Value = Target.Value * -1
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'A列のみ
If Target.Column = 1 Then
'書式設定を設定
Target.NumberFormatLocal = WorksheetFunction.Unichar(10004) & ";□;0;@"
'-1かけて反転させる
If Target.Value = 0 Then Target.Value = -1
Target.Value = Target.Value * -1
End If
End Sub
913デフォルトの名無しさん (ワッチョイ c77c-oynR)
2021/09/09(木) 19:55:23.82ID:zfiF925t0914デフォルトの名無しさん (ブーイモ MMcf-6D6a)
2021/09/09(木) 23:48:42.23ID:ULMewu8MM916デフォルトの名無しさん (ワッチョイ 3a2f-aIS6)
2021/09/10(金) 00:57:16.66ID:cGWG4Dd90917デフォルトの名無しさん (ワッチョイ b501-BHRH)
2021/09/10(金) 01:37:01.01ID:k/ICsAd30918デフォルトの名無しさん (スプッッ Sd12-dGLa)
2021/09/10(金) 06:29:18.76ID:SjJWgB1Wd エスパーしてみるとオーバーロードしたいってこと?
919デフォルトの名無しさん (ワッチョイ 5e68-gxqX)
2021/09/10(金) 07:09:26.44ID:LHgBQKs+0 >>910てParamArrayでいいじゃん(いいじゃん)
920910 (アウアウウー Sa21-zdR4)
2021/09/10(金) 12:04:43.32ID:9zsJDEjAa 言葉足らずで申し訳ない
・クラスモジュールでtestSubを作る
・testSubには引数として複数の文字列(パス)を入れたいが、場合によってはいれる数が変わるので可変長引数として渡したい→paramArrayを使った
・標準モジュールでtestSubを呼び出すときに引数に文字列直打ちで入力→これは呼び出せた
例 class.testSub(“a”, “b”, ”c”) →OK
・一方で引数に参照渡し?で変数を入れることができなかった
例
Dim a as string:a = “a”
Dim b as string:a = “b”
Dim c as string:a = “c”
class.testSub(a, b, c) →エラー
まとめ:参照渡し+可変長引数を実現する方法はありますか?という質問です
・クラスモジュールでtestSubを作る
・testSubには引数として複数の文字列(パス)を入れたいが、場合によってはいれる数が変わるので可変長引数として渡したい→paramArrayを使った
・標準モジュールでtestSubを呼び出すときに引数に文字列直打ちで入力→これは呼び出せた
例 class.testSub(“a”, “b”, ”c”) →OK
・一方で引数に参照渡し?で変数を入れることができなかった
例
Dim a as string:a = “a”
Dim b as string:a = “b”
Dim c as string:a = “c”
class.testSub(a, b, c) →エラー
まとめ:参照渡し+可変長引数を実現する方法はありますか?という質問です
921デフォルトの名無しさん (ラクッペペ MM3e-oWuh)
2021/09/10(金) 12:33:58.83ID:LPBZaVhNM へー、どんなエラーメッセージが出るんだい?
922デフォルトの名無しさん (スップ Sdea-5vIl)
2021/09/10(金) 12:41:02.44ID:s5UDpNf0d bとcに代入されてないように見えるんだけど…
923910 (アウアウウー Sa21-zdR4)
2021/09/10(金) 12:44:45.11ID:9zsJDEjAa >>922
誤字りました
>例
>Dim a as string:a = “a”
>Dim b as string:b = “b”
>Dim c as string:c = “c”
>
>class.testSub(a, b, c) →エラー
誤字りました
>例
>Dim a as string:a = “a”
>Dim b as string:b = “b”
>Dim c as string:c = “c”
>
>class.testSub(a, b, c) →エラー
924デフォルトの名無しさん (スッップ Sd0a-agYY)
2021/09/10(金) 12:44:47.75ID:Wgizc1rOd paramarrayは使ったことないからなんでエラーになるか知らないけど
optional byrefをいっぱい作れば解決か?
optional byrefをいっぱい作れば解決か?
925デフォルトの名無しさん (ワッチョイ 5949-MUqd)
2021/09/10(金) 12:57:26.48ID:3anmc9lr0 うちではエラーにならないので、ParamArray以外のところで何か起きていると思う
926デフォルトの名無しさん (ワッチョイ 3a2f-aIS6)
2021/09/10(金) 13:42:46.46ID:cGWG4Dd90 とりあえずエラーメッセージぐらい書け
Call class.testSub(a, b, c) とかいうオチじゃないだろうな
Call class.testSub(a, b, c) とかいうオチじゃないだろうな
927デフォルトの名無しさん (ワッチョイ 3a2f-aIS6)
2021/09/10(金) 13:48:25.18ID:cGWG4Dd90 あと言っとくけど、参照型と参照渡しはちがうからな
その例でいくなら(受け取り側で何やりたいかによるが)参照渡しである必要性なんてないんじゃね
その例でいくなら(受け取り側で何やりたいかによるが)参照渡しである必要性なんてないんじゃね
928デフォルトの名無しさん (オッペケ Srbd-RhPI)
2021/09/10(金) 15:05:47.68ID:bX+CqFZ4r vbaの配列って絶対要素数がわかってないとだめなの?
他の言語のリストみたいにあとから追加とか削除したいんだけど
他の言語のリストみたいにあとから追加とか削除したいんだけど
929デフォルトの名無しさん (アウアウウー Sa21-DZpR)
2021/09/10(金) 15:09:49.67ID:kF1ZwEU6a930デフォルトの名無しさん (ワッチョイ a95f-73Hx)
2021/09/10(金) 15:16:50.98ID:tlapevkG0 二次元配列以外はコレクションでいいよな
931デフォルトの名無しさん (アウアウウー Sa21-DZpR)
2021/09/10(金) 15:22:02.18ID:kF1ZwEU6a Dictionaryも好きだけどね
用途によるね
用途によるね
932デフォルトの名無しさん (オッペケ Srbd-RhPI)
2021/09/10(金) 15:47:18.98ID:bX+CqFZ4r933デフォルトの名無しさん (オッペケ Srbd-RhPI)
2021/09/10(金) 16:10:25.64ID:bX+CqFZ4r 配列が可変だったら終わる作業が全く終わらん
マジでいらつくわ
マジでいらつくわ
934デフォルトの名無しさん (ワッチョイ eaf2-GwBl)
2021/09/10(金) 16:26:30.74ID:rHUFiRNt0 >>886>>887
コンパイルエラー
変数が定義されていません
とか出たのですが・・・。
c のトコがハイライトされています。
コンパイルエラー
変数が定義されていません
とか出たのですが・・・。
c のトコがハイライトされています。
935デフォルトの名無しさん (アウアウウー Sa21-DZpR)
2021/09/10(金) 16:31:21.74ID:8Iwa8KgHa >>934
変数が定義されてないなら定義すればいい
変数が定義されてないなら定義すればいい
936デフォルトの名無しさん (ワッチョイ a668-dGLa)
2021/09/10(金) 16:31:29.22ID:2Fxd4w670 Set range = ActiveSheet.Range("J10")
debug.print range.Cells(0, 0).address
この出力がI9になります
J10を期待したのですがどういう事ですか?
debug.print range.Cells(0, 0).address
この出力がI9になります
J10を期待したのですがどういう事ですか?
937デフォルトの名無しさん (アウアウウー Sa21-DZpR)
2021/09/10(金) 16:36:53.08ID:8Iwa8KgHa >>936
ActiveSheet.Cells(1,1).AddressはA1になるでしょ?
んで、ActiveSheet.Cells(0,0).Addressはオブジェクト定義エラーになるでしょ
つまり、ワークシートの起点はA1であり、Cells(1,1)なわけ
だから、それから今回の事象は推察できるでしょ
余談だけどその変数名は絶対にやめた方がいい
VBAには既にRangeって単語があるんだから
ActiveSheet.Cells(1,1).AddressはA1になるでしょ?
んで、ActiveSheet.Cells(0,0).Addressはオブジェクト定義エラーになるでしょ
つまり、ワークシートの起点はA1であり、Cells(1,1)なわけ
だから、それから今回の事象は推察できるでしょ
余談だけどその変数名は絶対にやめた方がいい
VBAには既にRangeって単語があるんだから
938デフォルトの名無しさん (アウアウウー Sa21-DZpR)
2021/09/10(金) 16:41:57.41ID:8Iwa8KgHa939デフォルトの名無しさん (ワッチョイ a95f-73Hx)
2021/09/10(金) 16:42:03.28ID:tlapevkG0940デフォルトの名無しさん (ワッチョイ a668-dGLa)
2021/09/10(金) 16:52:02.92ID:2Fxd4w670941デフォルトの名無しさん (ワッチョイ a95f-73Hx)
2021/09/10(金) 16:54:59.11ID:tlapevkG0 0から始まる配列なんかを入れたいという感じか
942デフォルトの名無しさん (ワッチョイ 3a2f-aIS6)
2021/09/10(金) 17:05:41.13ID:cGWG4Dd90943デフォルトの名無しさん (アウアウウー Sa21-DZpR)
2021/09/10(金) 17:13:14.83ID:8Iwa8KgHa >>942
cの宣言してないだけ
cの宣言してないだけ
944デフォルトの名無しさん (ワッチョイ b501-BHRH)
2021/09/10(金) 17:47:04.78ID:k/ICsAd30 >>920
下に書いたようにParamArrayを使ったメソッドが定義されたクラスモジュールを作って、
それに宣言した変数を渡してみたけどエラーは起きないよ。
後、「参照渡し」で有る事を気にしてるけど、ParamArrayが指定された引数は参照渡しになる。
例えばtestSub内でargs(0)に適当な値を割り当てると、呼び出し元のcaller関数のaの値も変わる。
クラスモジュール(class.cls)
Public Sub testSub(ParamArray args())
Dim arg
For Each arg In args
If VarType(arg) = vbString Then Debug.Print arg;
Next
End Sub
標準モジュール
Sub caller()
Dim a As String: a = "a"
Dim b As String: b = "b"
Dim c As String: c = "c"
Dim Class As New Class
Class.testSub a, b, c
'イミディエイトウインドウ: abc
End Sub
だからこっちが質問内容を取り違えてるんだと思うんだけど、どこが違う?
それとエラーメッセージを教えて欲しい
もし意味が分かるならコンパイルエラーか実行時エラーかも知りたい
下に書いたようにParamArrayを使ったメソッドが定義されたクラスモジュールを作って、
それに宣言した変数を渡してみたけどエラーは起きないよ。
後、「参照渡し」で有る事を気にしてるけど、ParamArrayが指定された引数は参照渡しになる。
例えばtestSub内でargs(0)に適当な値を割り当てると、呼び出し元のcaller関数のaの値も変わる。
クラスモジュール(class.cls)
Public Sub testSub(ParamArray args())
Dim arg
For Each arg In args
If VarType(arg) = vbString Then Debug.Print arg;
Next
End Sub
標準モジュール
Sub caller()
Dim a As String: a = "a"
Dim b As String: b = "b"
Dim c As String: c = "c"
Dim Class As New Class
Class.testSub a, b, c
'イミディエイトウインドウ: abc
End Sub
だからこっちが質問内容を取り違えてるんだと思うんだけど、どこが違う?
それとエラーメッセージを教えて欲しい
もし意味が分かるならコンパイルエラーか実行時エラーかも知りたい
945デフォルトの名無しさん (ワッチョイ b501-BHRH)
2021/09/10(金) 18:37:19.42ID:k/ICsAd30 >>934
Columnsで列ごとに取り出す方法で短く、分かりやすくしてみた
Sub PrintOut()
Dim Column As Range
For Each Column In Range("D1:H4").Columns '指定範囲を一列ごと取り出す
Range("A1:A4").Value = Column.Value '取り出した一列の値をA1:A4に張り付ける
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
ちなみにこういうのはActive***とセル番号指定じゃなくて、
シートモジュールとテーブル使った方がメンテしやすくなる。
A1:A4とD1:H4にそれぞれテーブルを作成(セルを選択して「ホーム」リボンの「テーブルとして書式設定」)し、
A1:A4のテーブル名を「コピー先」、D1:H4のテーブル名を「コピー元一覧」にする。
そのシートのシートモジュールに次の様なメソッドを定義する
Sub MyPrintOut()
Dim Column As ListColumn
For Each Column In ListObjects("コピー元一覧").ListColumns
ListObjects("コピー先").Value = Column.DataBodyRange.Value
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
やってることは一緒だけど、
・コピペする(される)セルの番地が変わっても動く
・D1:H4の範囲が増えてもテーブルを範囲を変更するだけで動く
・「コピー元一覧」から「コピー先」に張り付けてるのがソースを見ただけで分かる
とメリットだらけ
Columnsで列ごとに取り出す方法で短く、分かりやすくしてみた
Sub PrintOut()
Dim Column As Range
For Each Column In Range("D1:H4").Columns '指定範囲を一列ごと取り出す
Range("A1:A4").Value = Column.Value '取り出した一列の値をA1:A4に張り付ける
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
ちなみにこういうのはActive***とセル番号指定じゃなくて、
シートモジュールとテーブル使った方がメンテしやすくなる。
A1:A4とD1:H4にそれぞれテーブルを作成(セルを選択して「ホーム」リボンの「テーブルとして書式設定」)し、
A1:A4のテーブル名を「コピー先」、D1:H4のテーブル名を「コピー元一覧」にする。
そのシートのシートモジュールに次の様なメソッドを定義する
Sub MyPrintOut()
Dim Column As ListColumn
For Each Column In ListObjects("コピー元一覧").ListColumns
ListObjects("コピー先").Value = Column.DataBodyRange.Value
ActiveWindow.SelectedSheets.PrintOut
Next
End Sub
やってることは一緒だけど、
・コピペする(される)セルの番地が変わっても動く
・D1:H4の範囲が増えてもテーブルを範囲を変更するだけで動く
・「コピー元一覧」から「コピー先」に張り付けてるのがソースを見ただけで分かる
とメリットだらけ
946デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/10(金) 21:16:37.69ID:cbJJzriEM947デフォルトの名無しさん (ワッチョイ a668-dGLa)
2021/09/10(金) 21:38:37.34ID:2Fxd4w670 >>946
そういう問題じゃないんですよ
そういう問題じゃないんですよ
948デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/10(金) 21:40:05.19ID:TT1mfVcaM >>947
だからどういう問題かを書けないなら黙ってなよ
だからどういう問題かを書けないなら黙ってなよ
949デフォルトの名無しさん (ワッチョイ a668-dGLa)
2021/09/10(金) 21:43:02.76ID:2Fxd4w670 >>948
動くかどうかという話ではないので論点はそこではありません
動くかどうかという話ではないので論点はそこではありません
950デフォルトの名無しさん (ワッチョイ a6da-dGLa)
2021/09/10(金) 22:07:47.67ID:rk4qX9ha0 動かすだけならグローバルに配列つくればいいわな
951デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/10(金) 22:16:10.75ID:cbJJzriEM952デフォルトの名無しさん (ワッチョイ a95f-DZpR)
2021/09/10(金) 22:19:16.50ID:rrgK5Yqx0953デフォルトの名無しさん (ワッチョイ 66b0-FDYl)
2021/09/10(金) 22:20:43.81ID:oDrMz70O0 難癖つけててワロタ
954デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/10(金) 22:37:14.80ID:sbKq7iyBM >>952
> Rangeって書かれても、どんな目的で何のRangeを変数に入れたのかが分かるように書くのが綺麗なコード
例えば指定された範囲にいくつかの装飾を適用する
Private Sub 装飾(Range As Range)
With Range
...
End With
End Sub
君なら引数の名前をどうする?
> Rangeって書かれても、どんな目的で何のRangeを変数に入れたのかが分かるように書くのが綺麗なコード
例えば指定された範囲にいくつかの装飾を適用する
Private Sub 装飾(Range As Range)
With Range
...
End With
End Sub
君なら引数の名前をどうする?
955デフォルトの名無しさん (ワッチョイ a95f-DZpR)
2021/09/10(金) 22:56:49.10ID:rrgK5Yqx0 Excelの装飾ってのがよくわからんけど、書式のこと?
関数っぽい書き方してるからこんなんでいいんじゃないの
Private Sub SetFormat_to_TargetRange(ByVal TargetRange As Range)
With TargetRange
...
End With
End Sub
関数っぽい書き方してるからこんなんでいいんじゃないの
Private Sub SetFormat_to_TargetRange(ByVal TargetRange As Range)
With TargetRange
...
End With
End Sub
956デフォルトの名無しさん (ワッチョイ b501-BHRH)
2021/09/10(金) 23:04:12.45ID:k/ICsAd30 文脈的に明らかならRange As Rangeいいと思うけどね。
あと、「Rangeオブジェクト」である以上の情報がない変数や引数に対して無理やり名づけようとしても、
結局TargetRange的な抽象的な名前になっちゃう事もある。
あと、「Rangeオブジェクト」である以上の情報がない変数や引数に対して無理やり名づけようとしても、
結局TargetRange的な抽象的な名前になっちゃう事もある。
957デフォルトの名無しさん (ワッチョイ b501-BHRH)
2021/09/10(金) 23:06:14.39ID:k/ICsAd30 >>955
流石にそれは冗長すぎて逆に読みにくいだろ・・・
流石にそれは冗長すぎて逆に読みにくいだろ・・・
958デフォルトの名無しさん (ワッチョイ 5e68-gxqX)
2021/09/10(金) 23:11:20.56ID:LHgBQKs+0 >>954
そこはtarget as rangeでいいと思う
一番読みやすい
自分しか使わない場合でもrange as rangeは使わないかな
vbaの場合、引数なしの関数と変数って見分けが付きにくい
ってかなんだこれエラーになるぞ
Sub foo()
Dim Calculate As Long
Calculate
End Sub
これはエラーにならない
Sub foo()
Dim Calculate As Long
End Sub
これもエラーにならない
Sub foo()
Calculate
End Sub
変数名と関数名がかぶると変数が優先される?
まぁ何にしろ、こんな事は避けたいから俺はかぶらないようにするけどね
そこはtarget as rangeでいいと思う
一番読みやすい
自分しか使わない場合でもrange as rangeは使わないかな
vbaの場合、引数なしの関数と変数って見分けが付きにくい
ってかなんだこれエラーになるぞ
Sub foo()
Dim Calculate As Long
Calculate
End Sub
これはエラーにならない
Sub foo()
Dim Calculate As Long
End Sub
これもエラーにならない
Sub foo()
Calculate
End Sub
変数名と関数名がかぶると変数が優先される?
まぁ何にしろ、こんな事は避けたいから俺はかぶらないようにするけどね
959デフォルトの名無しさん (ワッチョイ a95f-DZpR)
2021/09/10(金) 23:15:36.34ID:rrgK5Yqx0 多少長くても要素要素は省いちゃメンテが大変になるから多少冗長でも構わないスタンスで
単語の簡素化はしてもいいなら関数名をSetFmt_TgtRngとかにするかもね
あとそもそも、挙げられた例は不適切では?
今回話題になってるのは呼び出し先の(汎用的に使える)関数での変数名ではなくて、呼び出し元での変数名かと
単語の簡素化はしてもいいなら関数名をSetFmt_TgtRngとかにするかもね
あとそもそも、挙げられた例は不適切では?
今回話題になってるのは呼び出し先の(汎用的に使える)関数での変数名ではなくて、呼び出し元での変数名かと
960デフォルトの名無しさん (ワッチョイ b501-BHRH)
2021/09/10(金) 23:25:05.99ID:k/ICsAd30 >>958
再定義(シャドーイング)されてるだけ。
親スコープから継承されてる宣言名(今回で言えばオブジェクト名.Calculate)を再定義すると、定義が上書きされる。
Calculateは整数として再定義されたので、そのスコープではCalculateだけなら暗黙的に整数になる。
明示的に「オブジェクト名.Calculate」とすればメソッドとしてのCalculateを使用できる
再定義(シャドーイング)されてるだけ。
親スコープから継承されてる宣言名(今回で言えばオブジェクト名.Calculate)を再定義すると、定義が上書きされる。
Calculateは整数として再定義されたので、そのスコープではCalculateだけなら暗黙的に整数になる。
明示的に「オブジェクト名.Calculate」とすればメソッドとしてのCalculateを使用できる
961デフォルトの名無しさん (ワッチョイ 11da-dGLa)
2021/09/11(土) 00:00:09.96ID:qqZDVqkP0 personal.xlsbを複数の端末で共有したいので共有フォルダーにおいています.
XLSTARTのpersonal.xlsbは削除して共有フォルダーのpersonal.xlsbへのショートカットをおいています.
エクセルが起動するときにpersonal.xlsbを開くかどうか毎回聞いてきます
(セキュリティのマクロの設定は「警告を表示して全てのマクロを無効にする」です)
毎回開くを押すのが面倒なので共有フォルダーのpersonal.xlsbだけ常時開くような設定はできないでしょうか?
XLSTARTのpersonal.xlsbは削除して共有フォルダーのpersonal.xlsbへのショートカットをおいています.
エクセルが起動するときにpersonal.xlsbを開くかどうか毎回聞いてきます
(セキュリティのマクロの設定は「警告を表示して全てのマクロを無効にする」です)
毎回開くを押すのが面倒なので共有フォルダーのpersonal.xlsbだけ常時開くような設定はできないでしょうか?
962デフォルトの名無しさん (ワッチョイ 5e68-gxqX)
2021/09/11(土) 07:08:07.40ID:M0KgNEQw0963デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/11(土) 08:32:29.27ID:uUbGGWZvM >>962
スコープを持った言語ではたいてい内側のスコープが優先されるよ
中にはあえてエラーにする言語もあるけど
https://docs.microsoft.com/ja-jp/dotnet/csharp/misc/cs0136
スコープを持った言語ではたいてい内側のスコープが優先されるよ
中にはあえてエラーにする言語もあるけど
https://docs.microsoft.com/ja-jp/dotnet/csharp/misc/cs0136
964デフォルトの名無しさん (ササクッテロレ Spbd-Eqy2)
2021/09/11(土) 09:37:25.87ID:3jGknNChp >>955
関数の大きさにもよるな
小さくてすぐ上に引数設定して
型が見えてるようなのはvalueでいいと思う
少しごちゃごちゃして見辛いのは
targetRangeでいいと思うし
更にもう少し大きくなって業務的な
意味を持つようになったらその名前付ければ
いいんじゃないかな
関数の大きさにもよるな
小さくてすぐ上に引数設定して
型が見えてるようなのはvalueでいいと思う
少しごちゃごちゃして見辛いのは
targetRangeでいいと思うし
更にもう少し大きくなって業務的な
意味を持つようになったらその名前付ければ
いいんじゃないかな
965デフォルトの名無しさん (ワッチョイ a668-dGLa)
2021/09/11(土) 10:18:08.93ID:JYcIgh+V0966デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/11(土) 10:49:48.68ID:eXg+YAmHM >>964
Valueはないわ…
Valueはないわ…
967デフォルトの名無しさん (ワッチョイ 11da-k7k8)
2021/09/11(土) 12:17:24.93ID:qqZDVqkP0 >>966
そうだよな。value指定ではフォーマット変更は無理だよな
そうだよな。value指定ではフォーマット変更は無理だよな
968デフォルトの名無しさん (アウアウウー Sa21-DZpR)
2021/09/11(土) 13:14:28.26ID:GnKWsobMa Valueだけはねぇわ
targetとtmpとi・j・kとrくらいしか意味の薄い変数は使わないようにしないと
targetとtmpとi・j・kとrくらいしか意味の薄い変数は使わないようにしないと
969デフォルトの名無しさん (ブーイモ MM8e-FDYl)
2021/09/11(土) 13:57:33.58ID:SrjYrNmNM m,nも
970デフォルトの名無しさん (ワッチョイ 5e68-gxqX)
2021/09/11(土) 14:37:20.09ID:M0KgNEQw0 i・j・k
顔文字かと思った
顔文字かと思った
971デフォルトの名無しさん (ササクッテロロ Spbd-Eqy2)
2021/09/12(日) 11:12:03.90ID:up1UF/mUp valueがダメだと言ってる奴は恐らくプロパティとか
プロパティの使えない他言語とか使ったことのない井の中の蛙という奴だな
VBAしかやってないジジイにはよくあること
プロパティの使えない他言語とか使ったことのない井の中の蛙という奴だな
VBAしかやってないジジイにはよくあること
972デフォルトの名無しさん (ワッチョイ 5e68-gxqX)
2021/09/12(日) 11:42:37.67ID:igJhGb/40 >>971
君、韓国人?
君、韓国人?
973デフォルトの名無しさん (ワッチョイ 11da-k7k8)
2021/09/12(日) 11:48:24.82ID:3Dv8YdNb0 韓国をばかにするな!ITに関しては日本より進んでいるぞ
974デフォルトの名無しさん (ワッチョイ a6da-dGLa)
2021/09/12(日) 12:10:04.57ID:tsfiI8be0 どこ見て言ってんだか
975デフォルトの名無しさん (ワッチョイ 11da-k7k8)
2021/09/12(日) 12:15:32.69ID:3Dv8YdNb0 ここ見ててんだよ
976デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/12(日) 12:55:49.25ID:xXC+mfefM977デフォルトの名無しさん (ワッチョイ a95f-DZpR)
2021/09/12(日) 13:36:49.25ID:5xdi3uAF0 オブジェクト型のRange型なのに、Valueを変数名にするのはVBAの常識的にNGなのは自明
978デフォルトの名無しさん (ワッチョイ 11da-k7k8)
2021/09/12(日) 14:09:17.30ID:3Dv8YdNb0979デフォルトの名無しさん (ワッチョイ 3a2f-Le98)
2021/09/12(日) 16:11:41.17ID:INS7ikYU0980デフォルトの名無しさん (ワッチョイ a668-dGLa)
2021/09/12(日) 16:21:24.92ID:aVK/EU7g0 元の元は>>936(私)でdim range as rangeに対してsetしたのですが
引数としてrange as rangeとされている状態でsetする事なんてあるのですか?
普通は無いなら途中から引数の話になるのもずれてません?
引数としてrange as rangeとされている状態でsetする事なんてあるのですか?
普通は無いなら途中から引数の話になるのもずれてません?
981デフォルトの名無しさん (ワッチョイ ea4f-Eqy2)
2021/09/12(日) 16:31:54.19ID:pHewVqE+0 そう言えばデコレーターパターンとかでは
valueはよく見るけどreferって見ないよね
なんでだろ?
valueはよく見るけどreferって見ないよね
なんでだろ?
982デフォルトの名無しさん (ワッチョイ 11da-k7k8)
2021/09/12(日) 16:37:26.61ID:3Dv8YdNb0983デフォルトの名無しさん (ササクッテロロ Spbd-Eqy2)
2021/09/12(日) 18:56:51.30ID:up1UF/mUp984デフォルトの名無しさん (テテンテンテン MM3e-h3Yj)
2021/09/12(日) 19:28:40.93ID:qUARoTjRM985デフォルトの名無しさん (ワッチョイ a6ba-WYzC)
2021/09/12(日) 21:17:53.40ID:K6Dv6PKH0 ttps://whois.nic.ad.jp/cgi-bin/whois_gw?key=182.22.16.251&codecheck-sjis=%E3%81%AB%E3%81%BB%E3%82%93%E3%81%AD%E3%81%A3%E3%81%A8%E3%82%8F%E3%83%BC%E3%81%8F%E3%81%84%E3%82%93%E3%81%B5%E3%81%89%E3%82%81%E3%83%BC%E3%81%97%E3%82%87%E3%82%93%E3%81%9B%E3%82%93%E3%81%9F%E3%83%BC&submit=
に表示されているネットワーク名「YAHOO-NET」を取得しようとしているのですが、
Cells(1, 2) = objIE.Document.getElementsByTagName("pre").innerText
ではメソッドがサポートされいないとエラー表示されます。
何がいけないのでしょうか?
に表示されているネットワーク名「YAHOO-NET」を取得しようとしているのですが、
Cells(1, 2) = objIE.Document.getElementsByTagName("pre").innerText
ではメソッドがサポートされいないとエラー表示されます。
何がいけないのでしょうか?
986名無し募集中。。。 (ワッチョイ 9e8c-xZL4)
2021/09/12(日) 21:29:23.70ID:Nc1wnmSN0 普段使ってないから問題点がこれ意外にもあるかわからないが
Cells(1, 2) = objIE.Document.getElementsByTagName("pre")(1).innerText
これでどう?
Cells(1, 2) = objIE.Document.getElementsByTagName("pre")(1).innerText
これでどう?
987デフォルトの名無しさん (ワッチョイ 66b0-FDYl)
2021/09/12(日) 21:29:29.14ID:wxf2x8Lb0 VBAとJavaScriptが、混ざっちゃった感じかな
988デフォルトの名無しさん (ワッチョイ 7935-xJJl)
2021/09/12(日) 22:10:03.90ID:UcZJH98c0 n時間後にエンターキーを押すプログラムってどう作るんだ?初心者にもわかりやすく誰か教えて
989デフォルトの名無しさん (ワッチョイ 66b0-FDYl)
2021/09/12(日) 22:16:01.50ID:wxf2x8Lb0 「n時間後にアラームを設定して、鳴ったらENTERを押せ!」
と、命令する
と、命令する
990デフォルトの名無しさん (ワッチョイ a6ba-WYzC)
2021/09/12(日) 22:27:13.14ID:K6Dv6PKH0 >>986
ありがとうございます。
「オブジェクト変数がセットされていません」というエラーメッセージが出ており、検証はできておりませんが、いけそうな気がします。
ページ遷移したらobjIE.Documentに遷移先の情報が自動で設定されないのかもしれません。
ありがとうございます。
「オブジェクト変数がセットされていません」というエラーメッセージが出ており、検証はできておりませんが、いけそうな気がします。
ページ遷移したらobjIE.Documentに遷移先の情報が自動で設定されないのかもしれません。
991デフォルトの名無しさん (JP 0Hc9-dGLa)
2021/09/12(日) 22:28:25.73ID:8PbYCWHKH >>988
基本はこうだけど、このままだとタイマーを仕掛けたのを忘れてて、ほかの作業をしてる時に急にEnterが押されてびっくりすると思うよ
Sub n時間後にEnterを押す()
n = 1 'n時間を指定
n時間後 = Now + TimeValue(n & ":00:00") 'n時間後が何時何分か計算する
Do
DoEvents
Loop Until Now >= n時間後 'n時間誤まで待つ
SendKeys "~" 'Enterを押す
End Sub
基本はこうだけど、このままだとタイマーを仕掛けたのを忘れてて、ほかの作業をしてる時に急にEnterが押されてびっくりすると思うよ
Sub n時間後にEnterを押す()
n = 1 'n時間を指定
n時間後 = Now + TimeValue(n & ":00:00") 'n時間後が何時何分か計算する
Do
DoEvents
Loop Until Now >= n時間後 'n時間誤まで待つ
SendKeys "~" 'Enterを押す
End Sub
992デフォルトの名無しさん (ワッチョイ 9e8c-xZL4)
2021/09/12(日) 23:27:46.85ID:Nc1wnmSN0993デフォルトの名無しさん (ワッチョイ 3a2f-Le98)
2021/09/13(月) 01:05:28.69ID:gLuGYsXi0 >>991
せめてOnTime使えよ
せめてOnTime使えよ
994デフォルトの名無しさん (スフッ Sd0a-dGLa)
2021/09/13(月) 01:09:51.01ID:DeEefxbAd OnTimeはあとからタイマーの設定を確認したり停始する方法がないから使い勝手が悪すぎるのがなあ
995デフォルトの名無しさん (ブーイモ MMc9-FDYl)
2021/09/13(月) 01:34:41.43ID:/cjB8lcQM 配列に保存しとくか
シートに書き出しておく
それを元に確認したりキャンセルする
シートに書き出しておく
それを元に確認したりキャンセルする
996デフォルトの名無しさん (スフッ Sd0a-dGLa)
2021/09/13(月) 02:28:08.29ID:SNtxNYpLd997デフォルトの名無しさん (ワッチョイ a6ba-WYzC)
2021/09/13(月) 07:15:43.89ID:oNrWMPyP0 >>992, 996
ありがとうございます!
ありがとうございます!
998デフォルトの名無しさん (ワッチョイ 5e68-gxqX)
2021/09/13(月) 07:30:13.42ID:GNx0xRRz0999デフォルトの名無しさん (ササクッテロロ Spbd-Eqy2)
2021/09/13(月) 07:41:47.37ID:KCvhkZmap >>998
うむ、ご苦労
うむ、ご苦労
1000デフォルトの名無しさん (エムゾネ FF0a-dgdc)
2021/09/13(月) 09:30:38.14ID:Kz73eSbEF 1000ならコロナ収束
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 57日 0時間 48分 23秒
新しいスレッドを立ててください。
life time: 57日 0時間 48分 23秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
