!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
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (スププ Sdaa-x2SP)
2021/07/18(日) 08:42:15.37ID:KskL7bEXd856デフォルトの名無しさん (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
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 三角形はカッコいい
- 【画像】大人気Vtuber宝鐘マリンさん、115円…
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 今緊急でコマを回しています
- 俺はヤンキーだから
- 【速報】高市早苗、起床 [779938112]
