1 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 13:43:16.31 ID:6yf2E1Gz0.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること ExcelのVBAに関する質問スレ コード書き込みや作成依頼もOK 次スレは>>980 が立てること 無理なら細かく安価指定 ※前スレ Excel VBA 質問スレ Part77 https://mevius.5ch.net/test/read.cgi/tech/1658009255/ - VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
823 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 09:17:23.76 ID:Hx9JKMaXr.net] >>810 ありがとう 行か列を任意を指定してキーワードを見つければ良いんですね >>811 BASIC自体を知ってるのでは無く その当時、マイコンを買って 雑誌の記事を見て自分用にカスタマイズしただけ 主にカセットテープから20分くらいLoadしてゼビウスとかやってた
824 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 09:18:35.16 ID:Hx9JKMaXr.net] 適当に打つとsyntax errorが出てくる事は知ってる
825 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 13:00:42.70 ID:vQS42HbD0.net] 連想配列のコレクションを使いたいんだが、個別の要素が書き換えられない。 書き換えると全要素が書き関わってしまう??? これはどうしたらいい? Set Yukkuri = New Dictionary '「Microsoft Scripting Runtime」を参照設定 Dim timeline As New Collection Yukkuri.Add "Name", "霊夢" Yukkuri.Add "serif", "霊夢です" timeline.Add Yukkuri 'セリフを追加する timeline.Add Yukkuri Debug.Print "--before--" Debug.Print timeline.Item(1)("Name"), timeline.Item(1)("serif") Debug.Print timeline.Item(2)("Name"), timeline.Item(2)("serif") '追加したセリフの変更 timeline.Item(2)("Name") = "魔理沙" timeline.Item(2)("serif") = "魔理沙だぜ" Debug.Print "--after--" Debug.Print timeline.Item(1)("Name"), timeline.Item(1)("serif") Debug.Print timeline.Item(2)("Name"), timeline.Item(2)("serif") 実行すると --before-- 霊夢 霊夢です 霊夢 霊夢です --after-- 魔理沙 魔理沙だぜ ←こ
826 名前:チちも書き換わってる 魔理沙 魔理沙だぜ [] [ここ壊れてます]
827 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 13:08:27.56 ID:CdSwQQ4cd.net] >>806 自分が何もできないから100%他人任せにしてるような割りに態度が少し横柄なんじゃねと思わなくもないんだよね 少なくとも>>806 の月別の表が何か月分も同じシートにあるのであれば ・シートを2つコピーして>>807 用の2つのシートを作る ・それぞれのシートで1行目から最終行まで検索する ・月別の始点はA列?の「月売上高表」の文字列が含まれる行 終点は次の月の「月売上高表」の文字列が含まれる行の-1 ※ただし最終月は翌月の文字列が見つからないので最終行でよい これをもとにそれぞれのシートの行を非表示にしたり、列を非表示にして 印刷範囲決めたらいいだけなんじゃないの ここまでの説明はマクロで可能 俺はやる気のあるコードを見せてくれたりする人には付き合う気はあるけど 100%他人任せには構ってられないから以降は他の人が回答してくれることを祈るわ
828 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 13:23:01.10 ID:0592ee0wr.net] >>815 私ってサバサバしてるから
829 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 13:29:43.69 ID:5nd4WcY/0.net] >>814 そりゃ連想配列の実体は1つしか作ってないから書き換えたら変わるわな いまいちどういう結果を期待してるのかよくわからんけど片方が変わって欲しくないなら timeline.Add Yukkuri Dim Yukkuri1 As New Dictionary Dim Key As Variant For Each Key In Yukkuri.Keys Yukkuri1.Add Key, Yukkuri(Key) Next timeline.Add Yukkuri1 のように中身をコピーして作る
830 名前:デフォルトの名無しさん [2023/01/22(日) 14:10:36.46 ID:3khvOI6Qd.net] また零細企業の馬鹿が粘着してるのか しつこい馬鹿は迷惑
831 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 15:30:30.53 ID:DNm1kf3fH.net] >>749 Sub main() Dim arr() As Variant arr = dataArr End Sub Function dataArr() As Variant() Dim cel() As Long cel(0) = Cells(Rows.Count, 1).End(xlUp).Row cel(1) = Cells(1, Columns.Count).End(xlToLeft).Column Dim rw, col As Long Dim datas() As Variant ReDim datas(cel(0), cel(1)) For rw = 0 To cel(0) - 2 For cl = 0 To cel(1) - 1 datas(rw, cl) = Cells(rw + 2, cl + 1) Next cl Next rw dataArr = datas End Function
832 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 15:30:46.23 ID:DNm1kf3fH.net] これでmain関数の中のarrにすべてのデータが取り込めた arr(0,1)はヨソバ〇カメラ arr(1,5)は80000 2行目に、み〇なのさくら屋、売上金額、納品予定 3行目のE列に納品予定合計額を表示させたければ cells(2,1)=arr(1,1) cells(2,2)=arr(1,2) cells(2,3)=arr(1,4) と指定して表示し 合計はVBA内でfor分で合計値を算出するか シートに転記後にworksheetFunction.sum()で合計を算出して表示すればどうでしょう 製品テーブル(略称含む)や顧客テーブル(略称含む)をシートで作って置ければ さらに楽にできると思います
833 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:01:00.37 ID:PpuiymMq0.net] >>820 それはデータ取り込みのためのVBAですね? 印刷のための範囲指定は Sub tes() ' ' tes Macro ' ' Range("A1:I69").Select ←ここの部分を書き換えると ActiveSheet.PageSetup.PrintArea = "$A$1:$I$69" Application.PrintCommunication = False With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With Application.PrintCommunication = True ActiveSheet.PageSetup.PrintArea = "$A$1:$I$69" Application.PrintCommunication = False With ActiveSheet.PageSetup 途中省略 End With Application.PrintCommunication = True End Sub
834 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:06:26.01 ID:DNm1kf3fH.net] >>821 どの程度の大きさのデータを印刷したいのかわからないですが サンプル程度のデータ量でしたら配列を使って取り込みと出力をして 印刷設定はエクセル側で行えば十分かと思いましたけど
835 名前:それではあまり役立ちませんか? [] [ここ壊れてます]
836 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:17:39.68 ID:SHbanA0Dd.net] >>822 印刷設定をEXCEL側とは? 毎回手動で設定して印刷という話ですか? データ取り込みは苦労していないというか既に自動化は諦めてるので 未納品状態から納品済に変わった段階で 下から消して上に書き込む作業を行わないとならんので。。
837 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:24:05.21 ID:DNm1kf3fH.net] >>823 よく理解してなくてすみません rangeの範囲指定だけ指定できたらOKなのでしょうか? 例えば、 Range("A1:I69") printArea="$A$1:&i%69" を指定したいってことでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:27:55.16 ID:xRK/d49A0.net] >>819 1オリジンのRangeオブジェクトと0オリジンの配列のやり取りはどうやっても混乱するから セルを配列に取り込む場合は「array = Range(範囲).Value」のようにRange.Valueで取り込んだ方がいいよ これでRangeで指定した範囲の値が1オリジンの2次元配列として取得できる 逆に配列をセルに書き戻す場合も、Rangeとarrayの要素数が同じなら「Range(範囲).Value = array」で済む これはVBAでシートを配列で扱う場合の常識だと思うので一応
839 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:35:26.12 ID:DLw6jtzT0.net] おいおいおいおいw まーたハナシが変わって来てるw ま、それがこの人の個性っちゃあ個性だけどw パワークエリやパワーピボットを駆使してマクロで一発で取り込むのは出来てる とか、大法螺だったんだな 彼の目的はただ一つ 会議資料として用紙の横書き印刷と縦書き印刷をしてる、その縦書き印刷を自動化したい その一点 横書きとか縦書きとかは彼の独特な表現だからA4ヨコ印刷・A4タテ印刷に脳内変換してくれ A版かB版か、4か3かは定かでは無いが、まあそんな風 で、彼のとっ散らかった説明・解説をまとめると以下の通りだ 販売管理ソフトで売り上げを管理 → 売上データをExcelに吐き出し(もしくはExcelから引っ張る) → そのデータをパワークエリやパワーピボットを 駆使して集計し、会議用資料のテンプレートに落とし込む https://i.imgur.com/MNy37BM.jpg → https://i.imgur.com/JUP2t7B.jpg これはヨコ印刷で 問題無し https://i.imgur.com/LhkqS7p.jpg これのタテ印刷に苦心してる 何故なら : 1] 二列不要だから削除したいが、削除すると「関数」が無くなって違算(エラー)←?? 2] 毎月行数の増減があるので最終行が決まらない ←必要なら「※」なり「最終行」なりを手入力してでもマクロを走らせるのの役に立てたい←??? 3] 画像には無いが、この他に担当者別売上の表がある ←最初の画像の赤丸位置?それとも上下の表の中間? 4] これが1Sheetに1年12ヶ月分タテに並んでいるので各月自在に印刷するのは大変 ざっくりとこんな感じ
840 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:36:20.85 ID:zZKA7THFr.net] >>824 印刷したい印刷範囲の右下が毎回変わるので 例えばそこに 「END」という透明文字を書き入れておく場合にはどのような記述となりますか? これさえ出来れば自分のやりたい事が出来そうです
841 名前:デフォルトの名無しさん (オッペケ Src7-a63L) mailto:sage [2023/01/22(日) 16:43:18.47 ID:zZKA7THFr.net] >>826 同じ取引に対してデータ元が2つ有り パワークエリとパワーピボットで自動取込をするのは販売管理ソフトのデータからが1つ目 こちらは自動的に取り込まれていて 簡単に得意先別、担当者別、商品別の合計や詳細は把握出来る EXCELで報告資料を作る元データは、他の人が社内共有用に作っているEXCELファイルから この2つのデータが合っている事を確認する必要もある 最初の質問から有りとあらゆる事を書き出すなんて無理だよ 後から話が違うと言われようが 説明するために簡便化した資料でやってるんだし てゆーかあなたはVBAの技術は無いんだから無理に話に加わらなくても良いよ
842 名前:デフォルトの名無しさん (ワッチョイ 53da-Jpma) mailto:sage [2023/01/22(日) 16:47:09.62 ID:DLw6jtzT0.net] で、それはVBAで出来るならそれでもいいけど、普通の機能でも十分賄える作業 範囲に名前を付けて(例えば01y とか01t とか)印刷時にページ設定のダイアログにその名前を入れて印刷するだけ (もしくは、名前ボックスで選択して[印刷範囲に設定]でもいい ソッチのが楽かも) 範囲が重複しても名前付けは出来るんだし、せっかくの機能を使わない手は無い 11月に成ったら11yや11tを入れてやるだけで広範囲のうちそこだけをプレビューしてくれる 範囲が増減するってなら Offset使った範囲にしとけば行が増えても対応してくれる その名前付けを上手にできるかどうかがカギ
843 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:50:46.58 ID:zZKA7THFr.net] 販売管理ソフトに全ての詳細情報を付加する機能が無いから、会社に必要な付随情報をEXCELで付与して管理させている だから一つの取引に対して2つデータが存在してる
844 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:53:25.56 ID:DNm1kf3fH.net] >>827 Sub main() Dim rng As Range Set rng = Range(Cells(1, 1), Cells(2, 2)) '① ActiveSheet.PageSetup.PrintArea = rng.Address End Sub みたいな感じで、①を都度指定したらできませんか?
845 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:53:33.27 ID:zZKA7THFr.net] >>829 そんな事するよりも >>827 これを一発VBAに入れた方が楽じゃね?
846 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 16:55:27.93 ID:zZKA7THFr.net] EXCELのデータが正しい事もあれば 販売管理ソフトのデータが正しい事もあるので 二重にすることで間違いのチェックにはなっていると思う
847 名前:デフォルトの名無しさん (ワッチョイ d3ce-Jpma) mailto:sage [2023/01/22(日) 17:00:57.08 ID:uavb1b440.net] 一元管理されてない時点で最悪のデータ
848 名前:デフォルトの名無しさん (オッペケ Src7-a63L) mailto:sage [2023/01/22(日) 17:04:14.11 ID:zZKA7THFr.net] 一元管理は入力ミスがあるとそのまま行ってしまう恐ろしさがある
849 名前:デフォルトの名無しさん (JP 0Hc7-j5s0) mailto:sage [2023/01/22(日) 17:04:15.06 ID:DNm1kf3fH.net] >>827 最終行列を取得して範囲指定するのなら cells(rowscount,1).end(xlup).row cells(1,columns.count).end(xltoleft).column で最終行列を所得できます キーワードを使った場合、 cells.find('end')でオブジェクトを取得しますけど 他のセルにキーワードが紛れていたら終わりますので非推奨かもですね キーワードを最終セルにするというのなら findを使って最終セルを取得して範囲指定に利用できそうですね
850 名前:デフォルトの名無しさん (オッペケ Src7-a63L) mailto:sage [2023/01/22(日) 17:06:06.74 ID:zZKA7THFr.net] >>831 単純に印刷したい範囲の右下に ENDとか※とか右下とかの文字を入れ込んでおいてそれをVBAにするのは難しいものなのですか?
851 名前:デフォルトの名無しさん (ワッチョイ 53da-Jpma) mailto:sage [2023/01/22(日) 17:06:29.53 ID:DLw6jtzT0.net] そもそもが、全体のデータをどう扱うかのイメージが出来ていない 都度継ぎ接ぎだらけの思い付き・間違ったインスピレーションで作業しているだけ システムの九龍城砦を築いてるようなもの 毎月最終行に「最終行」って手入力することが自動化の助けに成ると思うならそうしてみりゃいい その手間の時間で印刷終わってる 何月がいちばん上の月か知らんが、年度途中の月、7月とか8月でもそれで動作するシステム組めるのか? ボタンを12ヶ並べるつもり? 年度途中の月を印刷するためにひとつのボタンで解決させるには、もっと苦労を重ねるけど? プログラムを書くためにExcel使ってるんじゃ無い 楽するために使ってんだ
852 名前:デフォルトの名無しさん (オッペケ Src7-a63L) mailto:sage [2023/01/22(日) 17:06:34.14 ID:zZKA7THFr.net] >>836 すんません 入れ違いで書いてしまいました
853 名前:デフォルトの名無しさん (オッペケ Src7-a63L) mailto:sage [2023/01/22(日) 17:08:34.65 ID:zZKA7THFr.net] >>838 仕方が無いじゃん 自分で作ったシステムじゃないんだし 前任者が全て手動で半日掛かった仕事を5分で出来るようになっただけでもマシになったとは思う
854 名前:デフォルトの名無しさん (JP 0Hc7-j5s0) mailto:sage [2023/01/22(日) 17:10:50.88 ID:DNm1kf3fH.net] >>839 いえいえ、こちらこそ要領が悪くてすみません findでキーワードを検索して、該当セルを取得したら そのセルが何行目何列目なのかを取得できますので それを>>821 の範囲に利用してみたらいけるかもですね
855 名前:デフォルトの名無しさん (ワッチョイ 43ad-a63L) mailto:sage [2023/01/22(日) 17:11:53.93 ID:PpuiymMq0.net] >>838 月に一回だけ ENDと入れるだけで 一ヶ月にかなりの時間を節約出切るのが分からない?? 行や列を挿入するだけだから ENDと入れるのは一回だけ なんなら前月のシートを使えば、それすら要らなくなる ほんとお前は性格悪いね
856 名前:デフォルトの名無しさん (ワッチョイ 43ad-a63L) mailto:sage [2023/01/22(日) 17:13:22.05 ID:PpuiymMq0.net] >>841 キーワードを ピロリちゃんとか 絶対に使わないであろう言葉を使えば良いかもですね
857 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 17:26:29.02 ID:zZKA7THFr.net] 縦向きえんど 横向きえんど この文字を透明色で埋めておけば良いかな 上書き出来ないようにセルを保護しておく? そうすりゃ毎月何も設定しなくても良くなりますね
858 名前:デフォルトの名無しさん [2023/01/22(日) 18:32:47.51 ID:Km84h4+z0.net] >>844 そんなことより「ハゲでも分かるExcel VBA入門」という本を読めばいい。 分かりやすくてすぐ上達。
859 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:34:23.97 ID:5nd4WcY/0.net] >>835 入力チェックはまた別の話 帳票毎にデータが違う方が怖いわ
860 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:35:54.62 ID:zZKA7THFr.net] >>845 ワタシサバサバしてるので
861 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:36:29.31 ID:zZKA7THFr.net] >>846 別の話じゃないよ
862 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:51:11.61 ID:vQS42HbD0.net] >>817 レスサンクスです。 ということはYukkuriが100人いたら、 Dim Yukkuri?? As New Dictionaryを100行要るてことになるてこと? timeline.Add Yukkuriのところで、timelineが使ってるメモリが追加でアロケートされ、 そこに連想配列が追加されるていう動きにならんのかね? それか連想配列の実体をコピーできるとか。
863 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:52:29.42 ID:zZKA7THFr.net] ワタシフサフサしてるので
864 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:56:56.52 ID:pQuel4xur.net] >>846 ところで会社で嫌われてない? その方が心配だわ
865 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 19:04:19.40 ID:uL/qufmv0.net] 日曜日に仕事?家に持ち帰りならブラック企業だな
866 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 19:13:06.03 ID:5nd4WcY/0.net] >>848 別の話だろ Excelと販管ソフトに個々に入力してるから安心とか言うならそれは単に二重入力してミスを見つけてるだけの話 >>851 まあこんなことを言い出すやつなんだろうけどw
867 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 19:20:26.34 ID:5nd4WcY/0.net] >>849 だから何をやりたいのかいまいちよくわからんけど100個コピー作りたいならループで回せばいいだけ 新規のDictionaryはループ中で確保する timeline.Add Yukkuri Dim N As Long Dim Yukkuri1 As Dictionary Dim Key As Variant For N = 1 To 100 Set Yukkuri1 = New Dictionary For Each Key In Yukkuri.Keys Yukkuri1.Add Key, Yukkuri(Key) Next timeline.Add Yukkuri1 Next
868 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 19:55:07.24 ID:pQuel4xur.net] >>853 2つにそれぞれ意味があるから良いだろ ソフトは客先に納品書や請求書をプリントしたり、EXCELは社内の全ての管理をしやすいように情報付与、そしてその2つが在る事でどちらのかの入力ミスを防げる この仕組みで会社が儲かってるんだからケチ付けられんわ俺も
869 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 20:04:58.23 ID:xRK/d49A0.net] >>814 は恐らく連想配列が欲しいわけではなく、 javascriptやpowershellにあるような動的なプロパティが欲しいんだろう VBAではそういう便利なものはないので基本ノードデータにジャグ配列を使って ノードの先頭にプロパティ名に相当するタグを付けていった方が記述量的にも混乱が少ないと思われる
870 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 20:21:20.32 ID:xRK/d49A0.net] >>814 の意図を汲んだデータをジャグ配列のノードで表記すると恐らく以下の様になる dim timeline_root timeline_root = array("timeline" _ ,array("Yukkuri", array("Name", "霊夢"), array("serif", "霊夢です")) _ ,array("Yukkuri", array("Name", "魔理沙"), array("serif", "魔理沙だぜ")) _ ) 配列の要素0に必ずタグ名が入るようにすれば、HTMLのDOMツリーのように一環した探索ロジックが組める
871 名前:デフォルトの名無しさん (ワッチョイ bf3d-Sc6R) mailto:sage [2023/01/22(日) 23:17:51.08 ID:vQS42HbD0.net] >>857 やろうとしてることは、ゆっくりムービーメーカー4の定義ファイルをVBAで編集すること。 ゆっくりムービーメーカー4の定義ファイルはJSONになってて、 VBAではJSONが使えないから、誰かが組んだVBA-JSONを使うと JSONがVBAのコレクションやディクショナリー(連想配列)で作られたデータになる。 そこなかで、セリフが定義されてるを連想配列を複製してセリフ書き換えてくてことをやってるんだけど、 VBAのSETて参照するだけで、その参照したものを上位の配列にaddしても、 参照先情報みたいなものがaddされるだけで、別メモリーの情報がaddされるわけじゃない。 ただ、試行錯誤していたら 一旦同じ連想配列をaddしたものを作って、 それをjsonにして、またそのjsonを連想配列に戻してやれば、 別メモリが割り当てられた連想配列が出来上がった。 そのあとは個別に要素を書き換えられる。 javascriptとかは .配列.push({...Yukkuri[0]}) とかやれば行けたんだが、VBAは無理なのか。
872 名前:デフォルトの名無しさん [2023/01/23(月) 00:40:24.32 ID:g2a0jdgy0.net] こんどはjavaかw できるならそっちでやれよ
873 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 02:01:54.23 ID:8zQTqYpQ0.net] >>858 処理対象がjsonなら最初からそう書けばいいのに いくつか手段はあるけどVBAでやろうとすると結局面倒だし特に理由が無いなら他を検討してみては VBA-JSONの使い方の話なら俺は知らん
874 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 05:38:36.83 ID:yam+YnrUa.net] >Excelと販管ソフトに、個々に入力してるから安心 もし、この2つが異なった値なら、システムが破綻しているw オリジナルは1つのみ! そして、バックアップ用のコピーを持つべき!
875 名前:861 mailto:sage [2023/01/23(月) 05:45:42.29 ID:yam+YnrUa.net] 例えば、銀行のシステムでも、2つのオリジナルを持たない。 3人が同時入力して、多数決でオリジナルを決める サーバーでもそう。偶数個のノードにしない。 1:1, 2:2 などの分断が起きて、どちらがオリジナルか判断できなくなる 必ず、奇数個で判断して、オリジナルを決める。 そして、オリジナルのバックアップ用のコピーを持つ そうしないと、システムが破綻する
876 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 05:47:16.87 ID:7g54Dlndr.net] >>861 知らんがな システムの良い悪いの判定なんてお前らに求めて無い事を察しなさい 俺以外の社員含めて理不尽な事をやってるなと思いながら仕事をしてるんだから 70歳の引退予定の上司に言ってくれ そいつがいなくなればスッキリさせる
877 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 05:53:04.08 ID:7g54Dlndr.net] >>862 例えば3人で販管ソフトに入力したとして その販管ソフトの仕様により、会社の必要とする情報を持てない場合はどうするんですか? そもそも一人しか人的資源が無い場合はどうするんですか?
878 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 06:43:46.30 ID:iLyXDG2rH.net] >>872 さんはキーワードで所望の範囲指定はできたのでしょうか?
879 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 06:47:14.18 ID:7g54Dlndr.net] >>872 答えな
880 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 07:03:42.58 ID:7g54Dlndr.net] >>865 変数を定義して範囲の右下のキーワードを拾って ActiveSheet.PageSetup.PrintArea = のところにその定義した変数を入れてやるという
881 名前:理屈で合ってますよね? 後はフサフサでも分かるEXCEL VBAの本が到着してから勉強します [] [ここ壊れてます]
882 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 07:11:24.85 ID:iLyXDG2rH.net] よかったです、がんばってください!
883 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 08:50:43.95 ID:rT2ytU3d0.net] >>858 > VBAのSETて参照するだけで、その参照したものを上位の配列にaddしても、 > 参照先情報みたいなものがaddされるだけで、別メモリーの情報がaddされるわけじゃない。 だから新規に作ってコピーしなよって書いたのに... コードまで書いたのに無視するんならもうさじ投げるわ
884 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 09:10:22.34 ID:+DM8uE5N0.net] >>869 新規に作るていっても、複雑な連想配列の塊をどうやって作る? サンプルはたかだなNameとserifしかキーがないけど、 キーがいっぱいある構造のデーターをコード内でコピーするロジックを書くのは無理だと考える。 しかもその構造が動的だったらお手上げ。
885 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 09:18:38.98 ID:0EjNvA6Wd.net] 質問スレに回答してくる人は善意でやってるだけで最終的に自分で解決できないならあきらめろって話
886 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 09:32:51.14 ID:QZVEgBP9a.net] >>870 > キーがいっぱいある構造のデーターをコード内でコピーするロジックを書くのは無理だと考える。 > しかもその構造が動的だったらお手上げ。 お前にはお手上げなだけだろw >>854 に "Name" とか "serif" なんて書いてない、キーを動的に取得してコピーしてることすら読み取れないレベルなら諦めたほうがいいと思うよ
887 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 09:42:01.99 ID:q/YAUd9Kd.net] マクロでやりたいなら行数が最大になるパターンで書式作っておいて、そこにデータ入力、不要な行の削除でそのまま印刷すればよくね?
888 名前:デフォルトの名無しさん (ワッチョイ bf3d-Sc6R) mailto:sage [2023/01/23(月) 09:55:52.06 ID:+DM8uE5N0.net] >>872 すまんできたわ。 ありがとう。 Set Yukkuri1 = New Dictionary を書く位置を間違えてた
889 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 13:24:02.41 ID:2y89VdvQ0.net] またVBAが壊れた。 プロシージャの中でオブジェクト変数に割り当てる ワークシート名やクエリー・テーブル名を 日本語にしているのはマズい?
890 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 15:15:51.75 ID:cuqAJLzI0.net] インターネットが壊れた
891 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 17:40:15.92 ID:zqGzpVPE0.net] vbaが壊れるという表現が分からない プログラムは組んだようにしか動かない
892 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 18:35:46.07 ID:2y89VdvQ0.net] 先週までは問題なく動いていたブックを開くと、 すぐExcelが落ちて回復が入ってしまい、 回復ブックを開くと、プロシージャがモジュールごと丸々なくなっていた。 ワークシートのクエリーやテーブル、計算式やグラフは壊れていなさそうで、 新たにモジュールを作り直して バックアップを取っていたプロシージャの記述をそのまま貼り付けたら、 一応、VBAも動くようになった。 過去には新たなモジュールすら作れなくなったことも。
893 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 19:12:29.48 ID:g2a0jdgy0.net] 自力で解決した自慢ですね、わかります
894 名前:デフォルトの名無しさん (ワッチョイ 53da-Jpma) mailto:sage [2023/01/23(月) 19:45:05.26 ID:GmkrhCzJ0.net] 過去に学んでこの際だからぜんぶ変えてしまおう またいつアプデ地獄に巻き込まれるか知れたもんじゃ無いし https://qiita.com/Q11Q/items/7a9d4c89726cfaa7abd6
895 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 20:16:53.47 ID:iLyXDG2rH.net] 「VBAが消えてしまった!マクロが壊れて動かない!」 ってな感じで検索してみたら?
896 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 20:31:12.87 ID:XEd9VR/30.net] ACCESSで、NLSの問題でカナ含むVBAモジュールが開けなくなるってのはあったな
897 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 21:06:30.67 ID:2y89VdvQ0.net] >>881 ああ、そういえばIMAGE関数が家庭向けサブスクにも配布されたからと、 日曜日にExcelをバージョン2301に更新したんだった・・・
898 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 21:23:58.29 ID:7qHnsy280.net] 確認したけど2212が最新で更新できなかった
899 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 21:28:06.31 ID:c8LJJic2H.net] NAME?
900 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 21:37:36.60 ID:2y89VdvQ0.net] これが原因かどうかはまだ分からないけど。 https://i.imgur.com/49fEgC7.png Office Insiderには参加していない。
901 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 21:54:37.35 ID:c8LJJic2H.net] >>886 10年ぐらい前、変数を日本語名にしてると一切動かなくなるってバグがあったな 確かACCESSだった 変数を日本語名にしても、あまりいい事はないと思う >>878 あと、この方法はあまり良くない 一度壊れたブックは、内部的にゴミデータが残っている可能性がある 使いまわすと、そことバッティングする可能性がある 新規ファイルを作り、シートを一つずつコピー、vbaもテキスト単位でコピー、 といった感じで作り直した方が良い めんどくさいけど、やっておいた方がいいよとは言っておく
902 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 21:59:43.45 ID:2y89VdvQ0.net] >>887 > といった感じで作り直した方が良い やっぱり・・・orz
903 名前:デフォルトの名無しさん mailto:sage [2023/01/24(火) 03:50:07.79 ID:ID+MP23U0.net] ドイツのプログラマーが、Selenium、WebDriverを使わずにEdgeを直接制御するクラスを作ってるのを見つけた 試したらとりあえず動いたんで報告 https://www.codeproject.com/Tips/5307593/Automate-Chrome-Edge-using-VBA 動作テスト中にはまった点を書いておくと、裏でEdgeのアップデートチェックが走ってるとエラーが出て止まる これだけ殺せば動く taskkill /f /im msedge.exe taskkill /f /im MicrosoftEdgeUpdate.exe あと、Edgeの起動オプションを --remote-debugging-pipe --disable-automation に変えるとコマンドラインウィンドウが出なくなる
904 名前:デフォルトの名無しさん mailto:sage [2023/01/24(火) 14:18:41.94 ID:kQQ7KETY0.net] Dim a As Long Dim b As Short
905 名前:デフォルトの名無しさん mailto:sage [2023/01/24(火) 14:22:05.82 ID:kQQ7KETY0.net] Dim a As Single Dim b As Double Dim c As Triple
906 名前:デフォルトの名無しさん mailto:sage [2023/01/24(火) 20:20:19.23 ID:Fm53fhAfr.net] フサVBAの本が届いた~ 分からないとこはよろしく
907 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 00:33:41.40 ID:E3f+ZKf20.net] >>889 どうしてわざわざEdgeをチョイスするのかと
908 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 01:52:23.37 ID:WwTOH1I60.net] Edgeと言いながらプロトコル的にchronium系共通だし OSに元から入ってるEdgeならIE難民にはちょうどいいんじゃね
909 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 11:18:39.60 ID:PxGM72CY0.net] 他社との業務連携用途とかだと他の選択肢が無かったりする
910 名前:デフォルトの名無しさん (ワッチョイ cfda-88l+) mailto:sage [2023/01/25(水) 11:41:19.68 ID:qyEQLwkW0.net] 自分にできないことを引き受けるから失敗する
911 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 14:14:51.65 ID:uj/UrXzd0.net] できるだろうって思ってガンガン仕様変更されても
912 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 07:02:58.95 ID:QQqpl7Qdr.net] 質問です VBAを使ってこのスレの人にアンケートを取りたい 皆さんは文系ですか?理系ですか? もともとプログラミング出来る人ですか? それとも経理とか必要に迫られて覚えた方ですか?
913 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 07:44:32.02 ID:im4j/4Ys0.net] >>898 マ板でやれ
914 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 08:08:19.42 ID:QQqpl7Qdr.net] マ板って何? 包丁切れますか?
915 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 08:12:22.27 ID:jr7Apji9H.net] 無意味なアンケート
916 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 08:14:59.84 ID:jr7Apji9H.net] 文字列の演算をエラーにする方法は無いでしょうか Sub foo() Str a Str b Str c a = 1 b = 2 c = a + b Debug.Print c End Sub
917 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 08:40:12.57 ID:InTdWzkF0.net] c = a - b
918 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 08:47:05.40 ID:jr7Apji9H.net] >>903 お、マイナスだとエラーになるんですね! ・・・ならんやないかーい
919 名前:デフォルトの名無しさん [2023/01/26(木) 09:03:16.60 ID:N0DN9EFmd.net] 皆さんはお仕事何されてますか 事務をやって三年、仕事を楽にするために始めたExcelVBAは人並みに身についた気がしますが ただの事務では給与が足りずプログラマに転向するには経験が浅いのです
920 名前:デフォルトの名無しさん [2023/01/26(木) 09:11:16.84 ID:NYppQtUx0.net] エクセルのvbaエディタ?がすごくつかいずらくて、 vsCodeでvbaが記述できるxvbaというツールを利用しようと試みています。 ですが、 エクセルで書かれたvbaの日本語文字が、vsCodeで読み込むと文字化けしてしまいます。 おそらく、エクセルの方のエディタがUTF-8ではないのかと思いますが。 このあたり、経験されているかた。どのように対処されていますでしょうか? どうぞアドバイスください。
921 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 09:44:15.86 ID:eGur5fW5M.net] >>906 よく分からんけど逆にVSCでCP932使えば良いのでは?
922 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 10:08:42.84 ID:UvNszdC2d.net] >>902 質問の意味が分からんけどそもそもabcをStringにしてるのはなぜ? c = a + bに3と戻したいならc = Val(a) + Val(b)とでもすれば
923 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 10:40:51.75 ID:im4j/4Ys0.net] > Str a > Str b > Str c なんていう謎の言語はスレ違いかと
924 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 11:00:07.24 ID:UvNszdC2d.net] >>905 スレ違いです
925 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 11:10:42.36 ID:JQ22Y2sI0.net] >>905 転職なら早い方がいい、年齢が若ければ新しい職場にもすぐ慣れるだろうから
926 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 12:32:00.38 ID:Y5eC8vQ8M.net] >>902 エラーにするってのがよくわからんが 個人的にはc=a+b以降をしたのようにする。 If vartype(a) = vbstring or vartype(b) = vbstring Then Debug.print "エラー" Else c= a + b Debug.print c End If End Sub >>908 a=1 と直接書いてるけど本当は a=どっかのセルの値にしたいんじゃね? で、そのセルには数値以外が入ってる可能性があるから 文字列ならエラーにしたいんじゃないかと。 >>909 文字列に変換するstr関数を使いたかったんじゃね? 書き方間違えてるから謎の言語になってるけど。
927 名前:デフォルトの名無しさん [2023/01/26(木) 12:41:55.63 ID:NYppQtUx0.net] Transposeで作る配列の 一番最初の要素の添字は0じゃなくて、1であってます?
928 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 12:53:54.77 ID:XU6i0xq00.net] >>902 (1)たとえセルの書式が文字列でも (2)数字っぽい内容だと (3)勝手に数値型に変換されてしまう https://i.imgur.com/0xrxf44.png 何がやりたいのか、ぼかさずに具体的に説明してくれないと無理
929 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 12:55:07.08 ID:jr7Apji9H.net] >>908 単純にコードのミスを検出したいだけなんです 変数名を間違えた場合の保険程度のつもりなんです >>909 すいません 別言語触ってて何もかも間違えました 変数宣言dim a as stringのつもりでした Sub foo() Dim a As String Dim b As String Dim c As String a = 1 b = 2 c = a + b End Sub
930 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 13:02:48.18 ID:bIyafktir.net] >>915 それなら素直にlongで宣言するべきでしょ 変数名間違えた時の保険って、紛らわし変数名にするなって話だし 変数名間違えたときのための保険って言い出したら何も出来ないじゃん じゃあその「変数名間違ってたときの確認のためのコードの」変数名が間違ってたらどうするの? その確認のための変数名確認のためのコードをつけるのか? それが間違ってたら? 確認のための変数名確認のための変数名確認のためのコードをやるの? って話になる
931 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 13:11:07.62 ID:jr7Apji9H.net] >>916 逆で、文字列を数値として使ってしまった場合に検出したい 単にタイポ時の保険としてエラーが起こってほしいってだけだよ vbaに無いなら仕方ない、そういう言語なんだなってだけで 別にそこには期待しないよ
932 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 13:21:15.99 ID:UvNszdC2d.net] 少し上にいた大量にレスしてた奴みたいなおかしな質問者もいるし 適当に質問しても回答者が頑張ってくれるだろみたいな考えの質問者が多すぎなんだよ
933 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 13:31:14.65 ID:XU6i0xq00.net] >>915 とりまOption Explicitは入れとけ それ以上はVBA単独ではどうにもならん 型安全な処理系と組み合わせろ
934 名前:913 [2023/01/26(木) 13:32:06.85 ID:NYppQtUx0.net] ググって解決しましたが。 https://qiita.com/ShortArrow/items/0cf655aaebf0f253a0d4 何故に1から。。
935 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 13:35:53.75 ID:bIyafktir.net] >>917 あのさぁ、自分の説明が下手くそなくせにできないのは他人のせい、言語のせいにするのはよくないぞ 単にタイプミスって言っても自分がコード書くときにミスしないようにしたいのか、使う際にinputBox等で入力させるときにミスをなくしたいのかで全然違うだろ エスパーじゃないんだから質問するならもっと具体的にしろよ
936 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 13:39:36.95 ID:XU6i0xq00.net] >>920 ワークシートが1行目スタートだから
937 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 14:28:02.25 ID:jr7Apji9H.net] >>921 いやinputboxなら全部文字列だろ
938 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 14:50:16.50 ID:UvNszdC2d.net] ExcelVBAは型に対する考慮が緩いから正直期待にそえる回答はないと思うよ 例えば変数名の先頭に型を付与するようなルール決めてもタイプミスって言葉で許されるなら破綻するだけだしね
939 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 14:52:16.71 ID:bIyafktir.net] >>923 だから、最後までちゃんとかけや それはinputBoxを格納する変数の話だろ そんな話はしてないわ 色々な具体例があって様々な解決策があるのに、なんにも具体的な話を出さずに抽象的に話しして、一部に対してだけ反論してお前は馬鹿か?
940 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 14:56:29.20 ID:jr7Apji9H.net] >>924 ですよね ありがとうございました >>925 質問を理解できないアホw
941 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 14:58:44.32 ID:bIyafktir.net] つーか 「単純にコードのミスを検出したいだけなんです 変数名を間違えた場合の保険程度のつもりなんです」 本当にこれだけだったら先頭にOption Explicitつけて似たような変数宣言するな、で終わる話だよな さすがにOption Explicitをつけてない人はいないだろうからそんな超初歩的な事はありえないと思ってるけど
942 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 15:12:07.01 ID:bIyafktir.net] >>926 え、>>924 で解決したのか? ってことはマジでOption Explicitをつけてなかっただけ? そこまで超ド初心者だとは思わんかったわ
943 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 15:26:02.63 ID:PKxWUOv2d.net] 例の零細企業の馬鹿社員だろ
944 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 15:51:08.82 ID:jr7Apji9H.net] >>928 結局回答できない無能で草
945 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 15:55:50.96 ID:41WP6aJtd.net] やっぱり こういうのを相手にするのがそもそもの間違い
946 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 16:26:35.24 ID:QQqpl7Qdr.net] >>929 ん?呼んだ?
947 名前:デフォルトの名無しさん [2023/01/26(木) 16:54:33.47 ID:N0DN9EFmd.net] IF Not Isnumeric( a + b ) then c = a + b とか c = a & b とかの雑魚コードでも教えておけばよかったのに
948 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 17:03:23.50 ID:UDgAljjqM.net] a = 1 の暗黙の型変換でエラーにしたいならそう言えよ
949 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 18:24:03.88 ID:JQ22Y2sI0.net] >>928 なれると初心者の質問だって見抜けるようになるよ
950 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 18:44:31.80 ID:jr7Apji9H.net] 荒れすぎだろ どうなってんだよ
951 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 19:02:58.68 ID:UvNszdC2d.net] 質問
952 名前:ェ雑だと回答する側は色々考えるからこういう感じになるんだよ だから質問する側もちゃんと回答しやすいようにすればいいだけ [] [ここ壊れてます]
953 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 19:07:48.41 ID:lq03KzKz0.net] そんなの期待するだけ無駄 そっとスレを閉じればいいのよ
954 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 19:12:37.90 ID:CIVBTG9eM.net] 零細企業のアホみたいな奴に答えてやろうなんて思うから荒れる 助けてで始まる質問する奴や、頭が悪いのに自分はできるみたいに思っておかしな質問をする奴は無視するのが一番
955 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 19:15:21.07 ID:LFv4Wa39r.net] てゆーかそんな事を言うやつがわざわざこんなとこ見るなよ 教えてやってるみたいな立ち位置でさw
956 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 19:17:05.41 ID:fSHWBRl+H.net] 変数が文字列ならエラーにすれば?
957 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 19:26:25.23 ID:im4j/4Ys0.net] そもそも > Str a > Str b > Str c の時点で実際に動かしてないんだから相手する価値なし
958 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 20:00:51.10 ID:BIrRkdsHd.net] 相手にしたくないならほっておけばいいんだから無駄なレス書いて荒らすなよ >>926 サンプル書けばわかると思うけど例えば下のようなコードは最後の数値型に数値以外の代入のみエラーとなるからコーディングミスしないように注意するしかないという話 Dim a As String Dim b As Long a = "a" '文字の"a" a = 1 '文字の"1" b = "1" '数字の1 b = "a" '変換エラー >>928 そういう話じゃないと思うぞ
959 名前:デフォルトの名無しさん [2023/01/26(木) 20:10:49.10 ID:omfXV+oL0.net] キチンとString型を宣言しているなら確か +は文字列連結の意味になるんじゃなかったっけ? であれば前のレスで言ってた人がいたけど - 0とか*0とかすればエラーになるんじゃないかな? 逆にSQLとかで文字列を数値で扱いたい場合は *0とか-0とかにすると暗黙の変換で数値にしてくれる。 VBAでは型宣言は絶対だけど、 VBSみたいにスカラー変数を使う場合は VBAみたいな型指定の型宣言が出来ないんで少し戸惑うかもね。 でもここはVBAのスレなので、 基本的に型宣言は絶対だと思っていいと思うよ。
960 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 00:45:46.26 ID:PwZKt+DmH.net] >>944 >+は文字列連結の意味になるんじゃなかったっけ? ならないよ
961 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 00:52:57.14 ID:Gy/KHy720.net] >>945 https://i.imgur.com/v220L7Z.png
962 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 01:00:12.13 ID:PwZKt+DmH.net] >>946 !? https://i.imgur.com/NYHsRgw.png どうなってんだ?
963 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 02:03:03.20 ID:sVJGpHK80.net] >>944 > - 0とか*0とかすればエラーになるんじゃないかな? 暗黙の型変換がある以上、数値として認識できる文字列が入ってたらエラーになるとは限らん VBAは型宣言はあるけど、Variant型と暗黙の変換があるから、絶対とまでは言えないのだよ >>947 イミディエイトウィンドウの内容なんて書き換えできるからな 釣りじゃないってんならちゃんと詳しい環境かいてみ
964 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 03:26:55.09 ID:wPosq0f50.net] >>944 >+は文字列連結の意味になるんじゃなかったっけ? JavascriptやRubyの話だね
965 名前:デフォルトの名無しさん (ワッチョイ 6fda-A+LD) mailto:sage [2023/01/27(金) 04:22:04.52 ID:WUhobyCY0.net] 演算子一覧表 https://support.microsoft.com/ja-jp/office/e1bc04d5-8b76-429f-a252-e9223117d6bd 連結演算子 & 2 つの文字列を組み合わせて、1 つの文字列を作成します。 + 2 つの文字列を組み合わせて、1 つの文字列を作成し、Null 値を伝達します (一方の値が Null の場合、式全体が Null と評価されます)。
966 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 09:27:20.18 ID:JeWwXD830.net] VBAはあまり書かなくて理解足らないのは承知しているが、 配列に0から200の値を書き込むサンプル これは、型があわないとアラートが返ってきます。 ダメな理由を教えてください。 Sub test() Dim arrs As Variant Dim i As Long For i = 0 To 200 arrs(i) = i Next i End Sub
967 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 09:46:51.11 ID:HtuDNqBEd.net] 全ての行に「Debug.Print TypeName(arrs)」を入れてみると何でダメかわかってくるかもね
968 名前:デフォルトの名無しさん (ワッチョイ d3ce-Jpma) mailto:sage [2023/01/27(金) 09:50:45.30 ID:Gy/KHy720.net] >>951 Variant型は便利だけどVBAでは取り扱いが初心者には難しい方だと思う 昨日も変数の型のことで荒れてたけど、できるだけ適切な型を指定した方がバグになりにくい そのまま動くようにするなら Sub test() Dim arrs() As Variant ReDim arrs(200) Dim i As Long For i = 0 To 200 arrs(i) = i Next i End Sub 俺が推奨したい書き方は Const arr_max = 200 Sub test() Dim arrs(arr_max) As Long Dim i As Long For i = 0 To arr_max arrs(i) = i Next i End Sub
969 名前:デフォルトの名無しさん (ラクッペペ MM7f-ZVkQ) mailto:sage [2023/01/27(金) 09:50:46.53 ID:+MAp+PmZM.net] VBAじゃなくてもダメだろ
970 名前:デフォルトの名無しさん (ワッチョイ ff02-qYbV) mailto:sage [2023/01/27(金) 10:21:25.20 ID:JeWwXD830.net] ありがとうございます。 >>954 JSなら。こんな感じ。 var arrs = []; for (var i=0; i<200; i++) { arrs[i] = i; }
971 名前:デフォルトの名無しさん (ワッチョイ ff02-qYbV) mailto:sage [2023/01/27(金) 10:22:55.83 ID:JeWwXD830.net] >>952 ,>>953 ありがとうございました。VBAの配列は癖が強いねえ。
972 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 10:49:30.02 ID:PwZKt+DmH.net] 古い言語だからね 仕方ないね
973 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 12:06:47.69 ID:HtuDNqBEd.net] >>955 のコードはarrsは配列として宣言するような代入してるけど >>951 は配列の宣言がどこにもないからね 癖というよりも単なる勘違いでしょ
974 名前:デフォルトの名無しさん [2023/01/27(金) 15:35:27.15 ID:nAK+7/AUa.net] 0から200だと201回繰り返すのも注意
975 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 16:29:58.00 ID:JeWwXD830.net] >>953 200個の要素数が確定されている場合ですかね。 将来配列の要素数が変わることがわかる場合、 どうなりますか。 うーん。 VBAで配列操作するより、セル関数でデータを加工していった方が早いし、 分かりやすい気がしてきた。
976 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 17:27:12.70 ID:HtuDNqBEd.net] >>960 VB(VBA)の場合は配列の再定義するためのRedimというのが用意されている Dim a(0 to 200) as long Redim Preserve a(0 to 1000) とすることで0から200までの値を保証して0から1000までの配列に拡張ができる まあ正解なんて1つじゃないんだから自分にしっくりくる作り方でいいと思うけどね あと細かいようだけど>>955 の「for (var i=0; i<200; i++) {」は VBの質問に合わせるなら「i<=200」が正しいんじゃない?
977 名前:デフォルトの名無しさん [2023/01/27(金) 17:38:42.59 ID:EY8clDJJd.net] >>960 DimRedimは先に回答した人がいるから >VBAで配列操作するより、セル関数でデータを加工していった方が早いし、 >分かりやすい気がしてきた。 用途にもよるが分かりやすさとしては間違いなくそう VBA分からないやつでもどんな操作をしているか分かるのはでかいし 特異なケースのテストもわりと少ない手間で試せる データの成形入れ替え並び替えは全部関数でやって そうすると関数の参照先シートを変更する度に重くなるから マクロでは関数が入ったブックの呼び出しと 操作するデータを参照先シートにコピペする作業を任せる こんなやり方もあり 一応配列格納のほうがいちいちセルの読み取りしない分速いことは速いが VBAで書き出す手間とエラーチェックの手間と 仕事ならそれを誰かに引き継ぐことを考えると…って感じ
978 名前:デフォルトの名無しさん [2023/01/27(金) 17:55:20.59 ID:JeWwXD830.net] ありがとうございます。 そうですね。「i<=200」が正しいです。 要素数をいちいち定義したり再定義しないといけないのは ちょっと不便ですね。自分でも他の方法ないか調べてみます。 データとして直接見えるというのが、セル関数の良さですね。 VBAの配列だと中のデータ見るのに手間かかる。 参考になりました。みなさんありがとうございました。
979 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 19:38:09.77 ID:FOQwFQw10.net] 別に要素数が不確定ならそれなりの組み方があるけどな
980 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 20:25:55.36 ID:uIWhZEdtM.net] 相手にしたら負け
981 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 21:37:57.80 ID:DxN0bpvv0.net] 勝ち負けの基準がわからない
982 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 02:38:02.20 ID:I1dsnIs2M.net] わかった気で勘違いしている馬鹿の間違いや馬鹿さ加減を指摘したら泥沼になるだけだから相手にしたらいかんということだよ 零細企業のアレとか
983 名前:951 mailto:sage [2023/01/28(土) 03:06:54.86 ID:cCrz+GwL0.net] つまり、>>965 を相手にしてはならんということすね。 ありがとう。
984 名前:デフォルトの名無しさん [2023/01/28(土) 06:32:52.50 ID:hxz/by/q0.net] >>963 まぁScripting.DictionaryかCollectionでも使えば? 二次元配列的な使い方をしたいならついでにクラスのお勉強もしておけばいい。 他にもRecordsetを使うという手もある。
985 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 07:04:12.75 ID:dWzZ2QT5r.net] >>967 結構、俺のこと好き? 匿名掲示板において個人を認識してもらえるのは書込み冥利に尽きるよ 愛情の反対は無関心だからな
986 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 07:56:23.07 ID:mBQ16TA8r.net] 愛される零細おじさんでつ 自分の業務をEXCELでメニュー作ってボタン一つで飛ぶようにしてるんですが 例えばEXCELにみずほ銀行のアイコンを貼り付けて押せばみずほ銀行のEB画面に飛んだり 売掛金回収ならボタン押せば売掛金管理のファイルを読み込んだり 流石に他のソフトを起ち上げたりはVBAでも無理ですよね? おっPythonとかなら出来るんですか?
987 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 08:00:10.68 ID:mBQ16TA8r.net] RPAツールを使えば良いのか。。
988 名前:デフォルトの名無しさん [2023/01/28(土) 08:01:55.27 ID:hxz/by/q0.net] まーた RUBY信者の成りすましか・・・
989 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 08:04:56.16 ID:mBQ16TA8r.net] ん? RUBYを調べれば良い?
990 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 08:20:41.12 ID:KGu/MZwKr.net] shell
991 名前:デフォルトの名無しさん (ワッチョイ a75f-cdcZ) mailto:sage [2023/01/28(土) 10:13:10.69 ID:yr1CASjB0.net] >>971 EB画面は知らんがスクレイピングじゃだめなのか? 売掛金のファイルがcsvならパワークエリで取り込めばいいと思う
992 名前:デフォルトの名無しさん (ワッチョイ 5fda-2biX) mailto:sage [2023/01/28(土) 10:23:25.23 ID:/lutP43W0.net] ハイパーリンクを調べても、それじゃ無い って結論に至って質問してンのか?
993 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 10:37:54.23 ID:mBQ16TA8r.net] あ、書き方が悪かったか 愛される零細おじさんでつ 自分の業務をEXCELでメニュー作ってボタン一つで飛ぶようにしてるんですが 例えばEXCELにみずほ銀行のアイコンを貼り付けて押せばみずほ銀行のEB画面に飛んだり 売掛金回収ならボタン押せば売掛金管理のファイルを読み込んだり 以上はハイパーリンクやマクロ記録を使って実現出来てる 売掛金管理ファイルを呼び出した後は、更新ボタンを押すことでパワークエリを使った集計も実現出来てる(更新ボタンを押さたくても更新させる事は出来るがあえて更新前の数値を確認するためにそのようにしてる) 流石に他のソフトを起ち上げたりはVBAでも無理ですよね? おっPythonとかなら出来るんですか?
994 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 10:41:20.97 ID:mBQ16TA8r.net] 要するに販売管理のパッケージソフトや会計のパッケージソフトを起動させて全自動を追求したくなったという質問です 例えばEPSONの会計ソフトなら定番の資料は自動的に出力出来るのは知ってるが、今使ってるのは毎回、手作業でボタン押さないと出力出来ないんだよね
995 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 10:57:57.78 ID:/lutP43W0.net] ファイルの意味判ってンのか? 基本のキが欠落してるような そして、そんな奴が改悪し続けてるExcel Book 数年後に後任に引き継がれて「なんだよ、これ」に成り果てる そもそも、上司に了解得ているのか?社内のコンプラどうなってんだ おれがコンプラか 社内規定の意味でのコンプラだが
996 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 11:00:07.10 ID:mBQ16TA8r.net] >>980 お前は毎回理解力が無いな 既に先人が中途半端な仕組みを作ってるからそこに出力を合わせる事を考えてる このやり方は後任には引き継がない 前任者の手作業を教えるq
997 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 11:01:11.80 ID:mBQ16TA8r.net] >>977 この時点で読み違いしてるやん 会社でお荷物だろw
998 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 11:45:05.56 ID:/lutP43W0.net] いけね、ついうっかり980踏んでた 無理だから安価指定しないけど、誰かお願いします
999 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 11:46:26.88 ID:mBQ16TA8r.net] >>983 分かった
1000 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 11:47:07.68 ID:mBQ16TA8r.net] はい建てた Excel VBA 質問スレ Part79 https://mevius.5ch.net/test/read.cgi/tech/1674874007/
1001 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 11:58:33.98 ID:NqcfPhRT0.net] >>982 お前は他のソフトを立ち上げることとそのソフトのボタンを押すことの区別もついてない時点で>>977 以上のお荷物だろ 就職してるかどうかは知らんがw
1002 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:00:37.97 ID:XR4zA44Nr.net] >>986 は? ボタンはEXCEL上で作った奴の話だぞ? ソフトのアイコンクリックじゃないぞ?
1003 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:01:58.62 ID:XR4zA44Nr.net] あ、ハイパーリンクでソフトの起動まで出来るのか それは失礼しますた
1004 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:03:14.15 ID:NqcfPhRT0.net] >>987 EPSONの会計ソフトの話だろ > 例えばEPSONの会計ソフトなら定番の資料は自動的に出力出来るのは知ってるが、今使ってるのは毎回、手作業でボタン押さないと出力出来ないんだよね そもそもExcelのボタンの話ならそのボタンに紐づいてるルーチン呼び出せばいいだけだし
1005 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:03:52.20 ID:XR4zA44Nr.net] となると、そのソフトでダイレクトに帳票印刷のEXEファイルがあるならそれをリンクさせれば良いのか 分かったありがと
1006 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:05:06.01 ID:XR4zA44Nr.net] >>989 いやEPSONは前職で使ってた奴 でも今のもその実行ファイルを直接起ち上げれば行けるね
1007 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:06:35.27 ID:NqcfPhRT0.net] >>988 ハイパーリンクでなくても>>975 が書いてるShell関数で任意のソフトを起動できる 起動だけならな https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/shell-function 人をお荷物呼ばわりするレベルにないぞ
1008 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:06:36.37 ID:XR4zA44Nr.net] こりゃEXCELだけでかなりの事は出来るな
1009 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:07:46.42 ID:NqcfPhRT0.net] >>991 お前の前職なんて知らんがな とにかくそう言うことをやりたかったんだろ としか受け取れないわ
1010 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:09:07.22 ID:XR4zA44Nr.net] でも一般のアプリケーションてその実行ファイルがどれか公開してる? あ、アプリの動作を監視してるファイルを見れば良いのか?
1011 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:09:25.98 ID:NqcfPhRT0.net] To: 各位 無能の働き者がワッチョイ無しで次スレ立てちまったんだがどうする? ワッチョイありで立て直す?
1012 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:10:22.95 ID:XR4zA44Nr.net] >>996 俺のAIが自動的に削除してたわw
1013 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:10:26.33 ID:NqcfPhRT0.net] >>995 > でも一般のアプリケーションてその実行ファイルがどれか公開してる? そんなことも調べられないならすっぱり諦めるなり人に頼むなりしなよ
1014 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:12:38.73 ID:UjlIZ1Ov0.net] Excel VBA 質問スレ Part79(ワッチョイあり) mevius.5ch.net/test/read.cgi/tech/1674875532/
1015 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 12:13:39.19 ID:XR4zA44Nr.net] >>998 タスクマネージャーの監視で良いのか?
1016 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 89日 22時間 30分 23秒
1017 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています