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
85 名前:デフォルトの名無しさん (JP 0Heb-BvCT) mailto:sage [2022/11/17(木) 07:50:17.45 ID:pvjBVkzjH.net] >>81 他の全ての大手は普通にPHP・pythonを使っているのに、 「ごく一部の大手」だけがrubyを使っているのが現状 また、ruby信者は頭がおかしくこのような歪な布教活動を行う特徴がある くれぐれも騙されないように
86 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 08:28:52.99 ID:sFGipXVYd.net] また雑談が始まった スレタイよく読めよお前ら
87 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 09:34:06.31 ID:6A2Gqyph0.net] 総合スレっての無かったかい?
88 名前:デフォルトの名無しさん [2022/11/17(木) 11:29:16.58 ID:7HR1FVlLd.net] >>76 わかっただろ?統一教会みたいな連中に巻き込まれる
89 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 11:59:56.14 ID:oqPw0CoV0.net] >>85 だからそういうこと書くと荒れるって言ってんだろ? 質問来たらちゃんと答えてるんだからほっとけよ
90 名前:デフォルトの名無しさん [2022/11/17(木) 12:04:27.49 ID:i1/jmP1Yd.net] >>82 >>87 ありがとう、そういうが風潮あるとは知らず.......
91 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 13:58:32.43 ID:sFGipXVYd.net] >>88 言わねーとずっと続くのがいつもの流れだろ ほっとくのが主義なら俺にも言うな
92 名前:デフォルトの名無しさん (ワッチョイ 1b8c-/xWR) mailto:sage [2022/11/17(木) 14:22:27.97 ID:4mNSRYt80.net] 言語として最高かどうかは別として とりあえずjavascript系をやっていればこの先20年は安泰
93 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 15:49:55.21 ID:6A2Gqyph0.net] VBA自体年寄り御用達の言語になっちまった感だからね
94 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 17:00:32.50 ID:m6w3NGDg0.net] ラズパイの入門キットが尼で3000円で売ってるからRubyでサンプル動かしてLEDチカチカ楽しいよ 仕事につなげたいなら今はJavaでスマホアプリが一番需要がある 自分のスマホで遊んでもいいし、Windows用のエミュレータも無料で公開されてる
95 名前:デフォルトの名無しさん [2022/11/17(木) 17:49:39.21 ID:7HR1FVlLd.net] ほら、こうやってRuby、Rubyって ゴキブリそのもの そもそもRaspberry PiのサンプルはPythonが圧倒的に多い Rubyとか言ってる連中に近づいてはいけません
96 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 19:10:46.08 ID:uw0RNQ/90.net] こうなった原因を作った初心者がすべて悪い
97 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 21:44:05.97 ID:KK3w9Zce0.net] VBA + Selenium + Chrome で自動ログインをツールを作っています。 Dim Driver As New Selenium.WebDriver ログインした後にパスワードを保存しますか? というダイアログが出て邪魔でしょうがないです。 それを削除する為に credentials_enable_service false profile.password_manager_enabled false を使うのは分かったのですが、pythonやjavaのコードばかりブログに乗っていて VBAの文法でどう書けば良いか分かりません。 詳しい方がいたら教えてください。
98 名前:デフォルトの名無しさん mailto:sage [2022/11/17(木) 23:24:19.00 ID:oqPw0CoV0.net] >>90 放っておけばっていうのはお前がコントロールしようとしている掲示板の脱線に対してだよ 放っておいても質問があれば勝手に戻るからさ、これ書くの2度目ね そのことと俺がお前を放っておくのとは意味あいがぜーんぜん違うんだがわかる?まぁ解んなくてもいいけど あと指図はするけど言われたくないんだよな? ならその通りにしましょうかね
99 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 00:09:57.91 ID:PzEY95EU0.net] >>96 chromeの起動オプションに書き加える 使うのが自分だけなら手動で事前にchromeの設定を変えておくのが一番簡単
100 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 04:37:56.15 ID:NsskB2ct0.net] >>98 VBA+Seleniumで起動オプションの書き方はどうやればいいのでしょうか? C#やPythonやJavaばかりでVBAの表記法が見つかりません。
101 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 15:03:38.43 ID:PzEY95EU0.net] >>99 AddArgument
102 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 15:59:01.29 ID:rkfxbe2GH.net] 間違ってrubyを学習してしまい、無駄な時間を過ごしてしまうことが忍びないのはわかる しかし、「人生には無駄な学習がある」ということに気づくことも大事な事かもしれない ※rubyの学習が無意味ということは、rubyを学習すればすぐに気づく
103 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 19:53:51.40 ID:zxScCJY70.net] 別にruby推しでもかまわないけど関係ないスレでは自重しろとは思う
104 名前:デフォルトの名無しさん [2022/11/18(金) 20:42:45.12 ID:2X/Wvhddd.net] rubyスレは過疎っているもの
105 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 02:07:39.29 ID:emmVvlBX0.net] なんでこんな偉そうな奴らばかりなのここ?
106 名前:デフォルトの名無しさん [2022/11/19(土) 02:29:57.55 ID:UCCiArGZ0.net] ruby信者が荒らすから
107 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 08:44:51.51 ID:jgd4H5DdH.net] rubyキチガイが荒らしに来るからヘイトが凄い事になってる なお他のスレでも同様
108 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 18:19:31.17 ID:IQRl98lga.net] GetOpenFilenameで開いたファイルのパスを返すFunctionを作ったのですが、戻り値を変数として利用する度にGetOpenFilenameメソッドが実行されてダイアログが開きます 初回のみダイアログを開くFunctionは作れないもんですかねえ 代替案としてSubプロシ=[ジャとして呼bム出して取得しbスファイルパスbPublic変数に試めているのでbキがPublic変数b使うのはなんbゥ気持ち悪くて=c…
109 名前:デフォャ泣gの名無しさb mailto:sage [2022/11/19(土) 18:32:15.63 ID:c1VeRjNF0.net] とりあえずコードで示そうか
110 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 19:04:59.90 ID:7ZzLn7VE0.net] >>107 Functionの外で保持しておく値なら Public でなく Dim で宣言すればモジュール内でつかえる
111 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 19:12:46.39 ID:kzcZtDQa0.net] JavaとかC#でenum使うメリットがわからん
112 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 19:17:53.70 ID:bItn6bkl0.net] >>107 戻り値を変数に入れてないだけでは?
113 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 22:10:17.78 ID:oLScpTixd.net] >>107 コードも見てないから何とも言えないけど 初回のみって判定なら基本的に変数で管理するしかないと思うけどね それとGetOpenFilenameがダイアログでファイル名(ファイルパス)を取得するための関数なら関数自体は何もせずに GetOpenFilenameを2回目以降に呼ばないような変数管理が普通の方法じゃないかと思うよ publicが気持ち悪いってのは関数や変数のスコープ管理がおかしいからだと思うから それはそれで見直せばいいのでは
114 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 22:13:03.43 ID:6K02rf2Z0.net] >>107 それってsubの中で cells(1,1)=Function変数 cells(2,1)=Function変数 ってやってるからでしょ? subの中でtempでも宣言して temp=Function変数 cells(1,1)=temp cells(2,1)=temp ってやればいいんじゃない?
115 名前:デフォルトの名無しさん mailto:sage [2022/11/19(土) 23:25:37.91 ID:emmVvlBX0.net] ざっくりな質問じゃなくて詳細書いてくれ頼むから
116 名前:デフォルトの名無しさん [2022/11/19(土) 23:29:30.05 ID:WhIdqCT2d.net] >>107 こういう馬鹿が来るから荒れる
117 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 00:35:29.58 ID:5+GQTxgS0.net] 自分で納得できるコードが書けないのは経験が足りないだけかも
118 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 07:09:50.84 ID:LWJSK1yhd.net] 自分でそこんところをいろいろ考えてやるのが楽しいのに どうにでもなるようなことを聞いてる人ってプログラミング=苦痛と感じてるひとなんだろうなぁって思うわ まぁそれならそれで仕方ないけど
119 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 08:11:58.08 ID:aAZoxoj/r.net] >>115 お前が荒らしてるだけじゃん 全然荒れてないわ
120 名前:デフォルトの名無しさん [2022/11/20(日) 08:12:58.99 ID:U8ZuobNzM.net] と、荒しが申しております。
121 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 09:58:37.83 ID:BaPmF74HF.net] >>108 こんな感じです。 Public Function OpenedFilePath() As Variant OpenedFilePath = Application.GetOpenFilename(FileFilter:="ExcelファイルおよびCSVファイル,*.xls*;*.csv") If OpenedFilePath = False Then MsgBox "ファイルが選択されませんでした。" Exit Function End If Dim OpenedFileName As String OpenedFileName = Dir(OpenedFilePath) Dim Wb As Workbook For Each Wb In Workbooks If Wb.Name = OpenedFileName Then MsgBox "選択したファイルは既に開かれています。ファイルを閉じてやり直してください。" OpenedFilePath = False Exit Function End If Next Wb Workbooks.Open OpenedFileName, UpdateLinks:=0 End Function Function変数「OpenedFilePath」をメインのプロシージャで何度か呼び出すのですが、 そのたびにダイヤログが開くんですよね(まあ当たり前なんですけど)。 やっぱり「OpenedFilePath」をメインのプロシージャの方でローカル変数に格納するしかないですかね。
122 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 10:09:40.70 ID:JSdYtKUKr.net] >>120 変数に入れるのが一般的だけど、どうしてもっていうならFunction全体を「OpenedFilePathが空白だったら」ってIfで囲ったらなんとかならん?
123 名前:デフォルトの名無しさん [2022/11/20(日) 10:21:57.15 ID:ZntJwwMB0.net] 特に理由がない限り1つのプロシージャの機能はなるべく1つに限定したほうがいい 短期的に問題無くても後々機能を使いまわしたくなった時に利便性が悪い
124 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 10:25:11.24 ID:AxU0uBeT0.net] >>120 まず「Function変数」なんオレオレ用語は止めなよ、余計混乱する > Function変数「OpenedFilePath」をメインのプロシージャで何度か呼び出すのですが、 それ何のために呼び出してるんだ?
125 名前:サもそも関数内でブックをオープンするならオープンしたブックを返してメイン側ではそのブックを使えばいいだけな気がするが... Public Sub Main() Dim Book As WorkBook Set Book = OpenedFilePath() ... End Sub Public Function OpenedFilePath() As WorkBook Dim Path As Variant Path = Application.GetOpenFilename(FileFilter:="ExcelファイルおよびCSVファイル,*.xls*;*.csv") If Path = False Then MsgBox "ファイルが選択されませんでした。" Set OpenedFilePath = Nothing Exit Function End If Dim OpenedFileName As String OpenedFileName = Dir(Path) Dim Wb As Workbook For Each Wb In Workbooks If Wb.Name = OpenedFileName Then MsgBox "選択したファイルは既に開かれています。ファイルを閉じてやり直してください。" Set OpenedFilePath = Nothing Exit Function End If Next Wb Set OpenedFilePath = Workbooks.Open(OpenedFileName, UpdateLinks:=0) End Function [] [ここ壊れてます]
126 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 10:37:30.36 ID:j5HG04Q5H.net] え
127 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 10:51:14.71 ID:j5HG04Q5H.net] GetOpenFilenameでファイル選択しなかったときの返り値は ”false” ね FALSE じゃないよ 糞だよ
128 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 10:58:27.47 ID:j5HG04Q5H.net] なんでstaticが出てこないんだよwww Public Function OpenedFilePath() As String '引数がtrueなら必ずダイアログを開くっての実装しようとおもったけどやめた 'OpenedFilePathは空白かどうかだけで判定。staticで変数を宣言 Static path '空白じゃなければ終了 If (path <> "") Then Exit Function End If '本体 path = Application.GetOpenFilename(FileFilter:="ExcelファイルおよびCSVファイル,*.xls*;*.csv") '開かなかったら終了 If OpenedFilePath = "False" Then OpenedFilePath = "" MsgBox "ファイルが選択されませんでした。" Exit Function End If End Function
129 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 11:33:22.40 ID:AxU0uBeT0.net] >>125 なんでそんなすぐわかる嘘つくの? Returns False if the user cancels the dialog box. https://learn.microsoft.com/en-us/office/vba/api/excel.application.getopenfilename そもそもその仕様だと false というファイル名を返せないだろ、馬鹿すぎ
130 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 11:34:19.38 ID:AxU0uBeT0.net] >>126 > なんでstaticが出てこないんだよwww そんな汚い設計を勧めたくないから
131 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 11:44:28.04 ID:j5HG04Q5H.net] >>127 うわ、ずっと間違えてた。これは申し訳ない 言い訳すると、pathをstringで宣言してる時、booleanのfalseが"false"に変換される これがあってからずっと文字列が返ってきてると思いこんでいた これは本当に申し訳ない、間違った情報でドヤッてしまった Sub foo() Dim path As String path = Application.GetOpenFilename() Debug.Print TypeName(path) End Sub >>128 わかる
132 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 12:28:19.61 ID:28UXg9Drd.net] 「Workbooks.Open」のようなコードだけだとActiveBookが変わって 本来操作したいブック以外を参照してしまう事故を防ぐためにも 自分も>>123 のようなコードがいいと思うな あとはVariantはなんにでも使えてしまうから戻り値もWorkbookがいいと思うけど private変数で宣言するならファンクションである必要もなくなりそうではあるんだが それは前後の流れ次第かね
133 名前:デフォルトの名無しさん [2022/11/20(日) 15:20:20.30 ID:BdLJ6aAN0.net] >>117 楽しい・・・? そうだね、VBAは弄ってて楽しい言語だね。 何でもお手軽に作れるしグラフィカルな部分が多いから 分かりやすいし。 お手軽と言えばJavaScript もそうかな。 逆にCOBOLとか何が楽しいのか俺には理解出来ない。
134 名前:デフォルトの名無しさん [2022/11/20(日) 15:36:16.68 ID:CFvDfimk0.net] おっちゃんが理解できるようにしてやろうか?
135 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 21:15:15.16 ID:79zBHkdo0.net] >>100 ありがとうございます。 Dim Driver As New Selenium.WebDriver Driver.AddArgument "credentials_enable_service=False" Driver.AddArgument "profile.password_manager_enabled=False" 「パスワードを保存しますか?」というダイアログが表示されてしまいます。 このダイアログが邪魔でしょうがないです。 何とか消したいのですが、コード間違っていますか?
136 名前:デフォルトの名無しさん [2022/11/20(日) 21:44:52.90 ID:XCN8LgbG0.net] Driver.SetPreference "credentials_enable_service", False こうじゃない?
137 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 22:06:06.02 ID:79zBHkdo0.net] >>134 これも試しましたが、ダイアログが起動します、、、 うーん、困りました。 With Driver .SetPreference "credentials_enable_service", False .SetPreference "password_manager_enabled", False .SetPreference "--password-store", basic
138 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 22:08:29.04 ID:xkQL1
] [ここ壊れてます]
139 名前:DmC0.net mailto: 弱りましたねえ 諦めるしか [] [ここ壊れてます]
140 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 22:21:11.90 ID:79zBHkdo0.net] 最悪、しょうがないので力業でWindows APIで座標指定で「×」をクリックします。
141 名前:デフォルトの名無しさん [2022/11/20(日) 22:25:06.89 ID:XCN8LgbG0.net] >>135 ソースコード全部見せて
142 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 22:41:36.64 ID:kiSLDjFu0.net] ブラウザの操作なんかPADでやればいいじゃん
143 名前:デフォルトの名無しさん [2022/11/20(日) 22:44:18.63 ID:XCN8LgbG0.net] Map<String, Object> prefs = new HashMap<String, Object>(); prefs.put("credentials_enable_service", false); prefs.put("profile.password_manager_enabled", false); options.setExperimentalOption("prefs", prefs); Javaだとこうだから Driver.SetPreference "prefs", ... にしないといけないのかも
144 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 22:46:06.24 ID:79zBHkdo0.net] >>138 色々と試しましたが、全部ダイアログが出ます、、、 Dim Driver As New Selenium.WebDriver 'パスワードを保存しますか?ダイアログを消す。(消えない) 'Driver.SetCapability "credentials_enable_service", "False" 'Driver.SetCapability "profile.password_manager_enabled", "False" 'Driver.AddArgument "credentials_enable_service=False" 'Driver.AddArgument "profile.password_manager_enabled=False" With Driver '.SetPreference "credentials_enable_service", False '.SetPreference "password_manager_enabled", False '.SetPreference "--password-store", basic .Start "chrome" .Get "https://hogehoge.com/" End With 'ID Driver.FindElementById("UserID").SendKeys "IDhoge" 'ID Driver.FindElementById("UserPASS").SendKeys "PASShoge" 'ログインボタンをクリック Driver.FindElementById("id_login_button").Click
145 名前:デフォルトの名無しさん [2022/11/20(日) 23:19:33.15 ID:XCN8LgbG0.net] Dim prefs Set prefs = CreateObject("Selenium.Dictionary") prefs("credentials_enable_service") = False prefs("profile.password_manager_enabled") = False driver.SetPreference "prefs", prefs これでどう?
146 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 23:54:01.57 ID:79zBHkdo0.net] >>142 ありがとうござます。試しましたがやはダイアログが表示されます、、、
147 名前:デフォルトの名無しさん [2022/11/21(月) 00:00:32.12 ID:pQOpt44b0.net] driver.SetPreference "credentials_enable_service", False Dim profile Set profile = CreateObject("Selenium.Dictionary") profile("password_manager_enabled") = False driver.SetPreference "profile", profile これでどう?
148 名前:デフォルトの名無しさん [2022/11/21(月) 00:11:55.56 ID:pQOpt44b0.net] Driver.SetPreference "credentials_enable_service", False Driver.SetPreference "profile.password_manager_enabled", False これでできそうな気がする
149 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 00:17:14.31 ID:jvJhQ1Yn0.net] >>144 >>145 ダメでした。 VBA+Seleniumだと色々と制限がありそうですね。 Windows APIで強制クリックしかなさそうですね。
150 名前:デフォルトの名無しさん [2022/11/21(月) 00:42:53.42 ID:pQOpt44b0.net] Driver.AddArgument "--password-store=basic" Driver.SetPreference "credentials_enable_service", False Driver.SetPreference "profile.password_manager_enabled", False これでどう?
151 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 00:48:06.12 ID:jvJhQ1Yn0.net] >>147 ダメでした。 ただ、ページ遷移すると自動でダイアログが消えますので 初回ログイン時に出るのは結構目障りですけど、最悪諦めます。
152 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 08:04:05.28 ID:GlEj3eeB0.net] >>148 結果的に消えるならいいじゃん そこでボタンをクリックしないと動作が止まる、とかだったら困るけど、動けばいいんだよ てか、オプション設定のタイミングが悪いんじゃないの?Chromeを起動する前に設定してる?
153 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 08:09:22.01 ID:jvJhQ1Yn0.net] >>149 はい、してます。 試しにVBAで同じことを試していただければ100%再現できます。
154 名前:デフォルトの名無しさん [2022/11/21(月) 17:38:44.89 ID:oUN57f6ld.net] >>133 マルチポスト、更に言語の違いすらわからない馬鹿は消えろ
155 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 18:02:11.22 ID:KDDXOYAA0.net] マルチポストはどうかと思うが少なくともこっちのスレだと言語は合ってるだろ
156 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 23:00:46.16 ID:qzpyBUkr0.net] https://xtech.nikkei.com/atcl/nxt/column/18/02246/110200002/ https://cdn-xtech.nikkei.com/atcl/nxt/column/18/02246/110200002/ph1.jpg 利用しているプログラミング言語 「あなたが現在使っているプログラミング言語は何ですか」という設問に対する回答の内訳。 最大3つ選択してもらった。回答数が10以上の言語を掲載 VBA頑張ってるじゃん Rubyの倍やん
157 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 23:03:32.24 ID:O4O9qqWgH.net] そりゃ母数が全然違うからな 事務員どころか営業でも使う人がいる
158 名前:デフォルトの名無しさん [2022/11/21(月) 23:12:28.50 ID:+rhbDZE90.net] >>153 これは結構意外な結果。 HTMLとCSSが思ったより低いね。 もっと意外だったのがSQLがランクインしていないこと。 「SQLはプログラミング言語じゃねーだろ」という意見も聞こえそうだけど、 それ言ったらHTMLだってプログラミング言語かと言えば怪しいよね。 iPhoneを開発するOvjective-C辺りはCに含まれるのかな? でもそう考えるとSwift もランクインされていない。 最近はPython が主流なのかー。 まぁRubyはさして知るべし。
159 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 23:18:34.01 ID:O4O9qqWgH.net] メインの言語がhtmlです!って人はちょっと・・・
160 名前:デフォルトの名無しさん [2022/11/21(月) 23:28:16.93 ID:+rhbDZE90.net] よく見るとTypeScriptが追い上げてるなぁ Web版EXCEL開発しなきゃいけなくなったとき用に少し勉強しておくかな
161 名前:デフォルトの名無しさん [2022/11/22(火) 00:17:55.04 ID:z+hPxvMVd.net] >>153 rubyは毎年順位を落としている
162 名前:デフォルトの名無しさん (ワッチョイ c28b-TaOI) mailto:sage [2022/11/22(火) 01:16:20.45 ID:rA6aTIVz0.net] Pythoの何がいいの?C#の方がよっぽどコードが綺麗。
163 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 07:07:33.19 ID:PnGd/teh0.net] VBAはバリバリ活躍してるけど、VBはもはや枯れた言語か。。
164 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 07:14:38.51 ID:5norvibI0.net] むしろVB(VB.NET以外)がランクインしてるのに驚いたわ さすがに保守案件なんだろうけど
165 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 08:25:23.22 ID:jrlVPdOBH.net] >>159 アホが書いたぐちゃぐちゃインデント見た事ないっしょ インデントがそのまま機能に繋がるってのは、 もうこれだけでいいんじゃないかってぐらい見やすいんだよ
166 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 08:29:03.16 ID:jrlVPdOBH.net] >>153 これ相当歪な集計だぞ 期間は2週間、プログラマーがたったの16%であとは経営者3%なんて混じってる
167 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 10:15:24.80 ID:YR0FNqFN0.net] VBAでフォームからセルに入力できるフォームを作るときにテキストボックスとセルをcontrolsauceで連結するのが一般的ですか? 今まで、読みとりボタンで、テキストボックス1=セルの値、更新ボタンで、セルの値=テキストボックス1としてたのですが、controlsauceを使った方がよいのか悩んでます
168 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 10:27:21.22 ID:rA6aTIVz0.net] >>162 pythonマジでコードが気持ち悪いんだけど。
169 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 10:38:52.48 ID:4t4l6PXg0.net] 使わなきゃいいだけなのにあえて他言語の悪口を言うのはRuby厨か
170 名前:デフォルトの名無しさん (オッペケ Srdf-rxZH) mailto:sage [2022/11/22(火) 12:03:51.19 ID:DuxWDXCmr.net] >>163 プログラマー以外がプログラミングしちゃいけないわけじゃないし、別に歪じゃないだろ
171 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 12:11:04.68 ID:KOo0nK71r.net] 歪というか、アンケートの対象はプログラマーのみではなさそうだな プログラマーなんて社会人の一部だし この手のはなんかの指標として使えるものではないと自分は思ってる
172 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 12:51:18.95 ID:rA6aTIVz0.net] pythonのメリットは何?
173 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 13:05:26.48 ID:jrlVPdOBH.net] >>169 pythonスレへどうぞ
174 名前:デフォルトの名無しさん [2022/11/22(火) 13:50:49.13 ID:gWTAVy/70.net] VB.Netは確かにもうMicrosoft からも.NetCoreでは更新しませんよって宣言されてた気もするし、 終わった言語と言えばそうなのかもね。 ま、でも文法こそ違うものの、中身はC#と大して変わらないから、 やるならC#でいいよ。 C#とVBA覚えておけば必然的にVB.Netも書けると思う。
175 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 14:11:59.31 ID:CBZvulmSa.net] vb.netとc#って objective-cとswiftみたいなもんじゃね
176 名前:デフォルトの名無しさん (ワッチョイ 4ead-+H9L) [2022/11/22(火) 14:54:19.77 ID:0MFmILJN0.net] そうだな、ぜんぜん違うけどな
177 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 15:48:12.92 ID:p3XTSB6d0.net] VBA は社員が使っている。一般人・アマチュア。 Linux, Docker, Heroku, AWS などを知っているはずがない。 Windows しか出来ない香具師 一方、Ruby on Rails は、ウェブ開発のプロ用。 ポートフォリオにも使う転職用だから、一般人よりも少なくなる VBAが出来ても、プロとしては転職できない。 VBAが出来るから、モダンなウェブ開発企業が採用するとは思わない
178 名前:デフォルトの名無しさん (ワッチョイ ef8e-P3Qh) [2022/11/22(火) 15:57:35.32 ID:ntrRKrLv0.net] >>169 Pythonにあっという間に追い越され凋落が加速しているRubyざまあ
179 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 16:01:15.96 ID:byhRgCcA0.net] >>174 ドヤ顔で香具師とか言われても……
180 名前:デフォルトの名無しさん [2022/11/22(火) 16:04:23.96 ID:ntrRKrLv0.net] >>174 プロ用wwwwww つまり金貰えなきゃRubyなんて使わんわ!ということ
181 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 18:41:56.86 ID:kVcqtNac0.net] でもどうだろ? 60歳前後の人はVB通ってきてからVBAを始めた人多いと思うからもっと人口多いと思う。
182 名前:デフォルトの名無しさん [2022/11/22(火) 18:45:18.15 ID:gWTAVy/70.net] あー、まぁ旧VB6ならそうかもね VB.Netは完全にObject指向言語だから そこからVBAやるってのはキツいんじゃないかな? まぁその逆はもっとキツいと思うけど
183 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 18:51:44.40 ID:kVcqtNac0.net] そういえばVBなんて言語あったなー(遠い目) ウチにVBのリファレンス本が埃かぶってある。
184 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 19:36:41.19 ID:chmk150V0.net] 旧VBは結構な値段しただろ 使ったことがあるのはプロのプログラマーだけだよ VBAやVB.NETは素人向け
185 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 21:05:06.99 ID:X8yFxH5Ua.net] ネットでサンプルコードを漁っていると配列の型を宣言するときに括弧を省いているのが多いけれどなんでだろう Dim Array As variant Array = Range(“A1:C10”) とか Dim Array as Variant Array = TempArray みたいに 括弧無しの方が処理が早いのだろうか そもそも括弧有り無しの違いってなんなんだろう
186 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 21:39:01.76 ID:jrlVPdOBH.net] >>182 vbaの配列、特に静的配列はカスって事を念頭においておいてほしい。 他の言語はここまでめんどくさくない 静的配列は要素数が決まっていて拡張性が無い。 Dim array_a(5) As Long 動的配列は要素数を変動させることができるがめんどくさい Dim array_a() As Long これは配列をvariant型の変数に入れてるだけで、配列の型とは関係がない Dim array_b As Variant array_b = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) array_b = Array(1, 2, 3, 4, 5, 6) どれが良いかというと、variantに入れておけば大体うまくいく 動的配列や静的配列を使うのもいいけど、めんどくさいだけだよ
187 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 22:02:02.71 ID:hcZiH6eO0.net] sub hoge for i=1 to10 if i=5 then exit sub next end sub サブルーチンのforとかloop中に 判定文でexit forどころか、exit subするのって、マズいんですかね? メモリ喰っちゃう?
188 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 22:10:43.92 ID:h1MkuzsC0.net] コメント書いとけばいいんじゃね
189 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 22:18:04.27 ID:X8yFxH5Ua.net] >>183 ループを使って配列の要素を一つずつ埋めて行く場合は()付きで配列として宣言しなきゃダメじゃん? だったら一括代入する場合も()付きで配列として宣言した方がわかりやすいかなあと思うんだよね
190 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 22:24:40.04 ID:jrlVPdOBH.net] >>184 特にマズくない 最近は8GBぐらいメモリあるんだし多少食っても全然平気 >>186 vba結構長いこと使ってきたけど、そんなコード書いたことないなぁ ちょっと分からないわ
191 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 22:47:31.59 ID:X8yFxH5Ua.net] >>187 たとえば「シートの表を一旦二次元配列に格納して不要な行を取り除いてからシートに転記する」ってコードの場合、次のようになるでしょ? Dim RawArr As variant RawArr = Range("A1:E100").Value Dim EditArr() As Variant Redim EditArr(1 to Ubound(RawArr ,1), 1 to Ubound(RawArr ,2)) '↑これは括弧付きで配列として宣言しなければならない Dim R as Long, C As Long, Rcount As Long Rcount = 1 For R = 1 to Ubound(RawArr ,1) If Not RawArr(R, 1) = "不要" Then Rcount = Rcount +1 For C = 1 to Ubound(RawArr ,2) EditArr(Rcount, C) = RawArr(R, C) Next C End If Next R Range("A1:E100").Value = EditArr このコードにおいて「EditArr」を括弧付きで配列として宣言するならば「RawArr」もそれに準じた方がわかりやすいのではと思うんだよね 超細かくて申し訳ないけれど
192 名前:デフォルトの名無しさん mailto:sage [2022/11/22(火) 23:39:01.43 ID:+p7n4F+r0.net] jscriptの配列をそのままvbscriptにしたら メッチャんこ速くなったからそっちの性能はいいんじゃね?
193 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 00:24:02.68 ID:6lN/+0f80.net] >>188 これってのが Dim EditArr() As Variant なら、 Dim EditArr As Variant でも動いてるようだが? そのまま走らせたら両方ともそこ以外で実行時エラー出てるけど さらに言えば、ReDimするなら(Option Explicit onでも)Dimすらなくても動いたような
194 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 03:52:19.28 ID:uIyZhPcqr.net] >>188 俺も>>190 と同じく Dim EditArr() As Variant Redim EditArr(1 to Ubound(RawArr ,1), 1 to Ubound(RawArr ,2)) だろうが Dim EditArr As Variant Redim EditArr(1 to Ubound(RawArr ,1), 1 to Ubound(RawArr ,2)) だろうが同じって認識だわ 動的配列っていうのをわかりやすくするために()つけておくか、くらいの感じだと思ってる
195 名前:デフォルトの名無しさん [2022/11/23(水) 08:25:42.71 ID:/bpEmzEb0.net] >>184 別にマズくはないよ。 メモリ使ってたとしても使ってる変数が みんなPrivateのものなら関数抜けた時点で解放されるし
196 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 17:09:12.41 ID:yNj03cHV0.net] 【速報】上司「お前のことはExcelの印刷くらい信用している」→パワハラ 広告代理店・電報堂(本社・東京都足立区)に勤務する50代の部長が20代の部下にパワハラを繰り返し、 部下をうつによる休職に追い込んだとして民事訴訟を起こされていたことが22日分かった。 訴状によると部長は部下に対し日頃から「お前のことはExcelの印刷と同じくらい信用している」 という発言を繰り返しており、その結果「どれだけ仕事をしても信用が得られない」 と感じた部下は今年5月からうつの症状を発症するようになり、現在は休職しているという。 なお上司は取材に対し「信用していると言っただけなのになぜパワハラ扱いされるのか理解できない」 と述べた。 https://kizuna.5ch.net/test/read.cgi/curry/1663509806/
197 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 17:31:53.36 ID:g5bfG+kA0.net] まあ言い方だろうな Excelの印刷はたまに端や上下が切れたりするけどちゃんと手当てしてやればそこそこ使える ワードなんかと違ってレイアウトを崩さずにページに収めるとか使える機能もあるしな
198 名前:デフォルトの名無しさん (JP 0Hfe-stRS) mailto:sage [2022/11/23(水) 17:46:45.69 ID:g30UJYxeH.net] それ完全に釣りだぞ
199 名前:デフォルトの名無しさん (ワッチョイ c28b-TaOI) mailto:sage [2022/11/23(水) 17:54:50.35 ID:WIX5xDy/0.net] 香具師 ← 化石を久しぶりに見つけたw
200 名前:デフォルトの名無しさん (ワッチョイ e201-IwB9) mailto:sage [2022/11/23(水) 18:00:15.39 ID:g5bfG+kA0.net] >>195 うん、知ってる 他でも見たし
201 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 20:28:09.45 ID:Y1rfQ/KW0.net] ジジババかよw
202 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 22:51:52.84 ID:2bxJ1QPk0.net] そんなこと言ってると生きてる間に孫の顔みれんぞ
203 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 07:46:50.71 ID:eMQ5RF7GM.net] 独り者なら孫どころか子供もいないだろ
204 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 08:26:23.40 ID:bGDdl4B7H.net] 子供はいるけどもう20年ぐらい会ってないな
205 名前:デフォルトの名無しさん (ワッチョイ 57da-3ksn) mailto:sage [2022/11/28(月) 14:54:18.05 ID:nQn7KMv00.net] 悲しい話と捉えていいすか? 生き別れ
206 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 19:26:05.44 ID:QIQXhRT50.net] 面会に来てくれないのか
207 名前:デフォルトの名無しさん mailto:sage [2022/11/29(火) 11:12:10.65 ID:OPHrjchb0.net] 臭い飯の感想は?
208 名前:デフォルトの名無しさん mailto:sage [2022/11/29(火) 11:36:14.54 ID:NIQubJ4ZH.net] うまああああああい
209 名前:デフォルトの名無しさん mailto:sage [2022/11/29(火) 17:17:30.27 ID:OPHrjchb0.net] 兄が元刑務官だけど、昔に比べればブタ箱の飯はだいぶ香ばしい匂いになったみたいだよw
210 名前:デフォルトの名無しさん [2022/11/30(水) 08:01:42.75 ID:wuoQBUdg0.net] スタンフォード監獄実験で普通の人でもそういう仕事につくと凶暴になる実験あったな
211 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 12:10:59.18 ID:0YLKwBCI0.net] >>207 実はアレはヤラセだったと関係者が暴露してる
212 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 07:28:51.94 ID:cUj7Y7YjH.net] 神様たち エクセルVBAで関数内関数を作りたいのですがやり方教えてください
213 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 08:16:36.75 ID:tKD1RDkG0.net] 無理、はい次の方~
214 名前:デフォルトの名無しさん [2022/12/02(金) 09:43:13.76 ID:YgL2+bOja.net] >>209 作る意味ないので別関数で呼び出せ
215 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 11:05:19.85 ID:ZBzpMFYrd.net] 「作れない」と「作る意味ない」は違くないか >>209 つくれないので別の方法を検討しましょう
216 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 11:25:08.14 ID:tKD1RDkG0.net] 作る意味があるケースもあるけど現状作れないし作れるようになりそうもないから議論してもしょうがない、はい次の方~
217 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 11:30:07.60 ID:OZyA684d0.net] なんでそんな事ばかりやりたいのか
218 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 11:44:11.14 ID:aS3/tvEuH.net] 他の言語でやってるとね~やっぱ欲しいなって思う場面が出てくるんだよね~ 別にテクニカルな事をしたいわけじゃないのよ~
219 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 11:44:35.67 ID:aS3/tvEuH.net] まぁ一つ言えばこの一連の流れで>>211 は頭一つ抜けて無能だね~
220 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 12:18:39.53 ID:ZBzpMFYrd.net] >>214 やりたい理由なんていろんなケースであるからそれをいってもしかたないでしょう 自分だって他言語では使う事もあるしね
221 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 14:20:37.10 ID:T9SNtee60.net] 神様達、ありがとうございました 無いと分かればそれはそれですっきりです
222 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 19:29:27.52 ID:GBjZlXrEd.net] ある条件を満たせば使えるようになるのは内緒だ
223 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 20:03:26.58 ID:ZBzpMFYrd.net] 教えるつもりがないならだまってろ
224 名前:デフォルトの名無しさん mailto:sage [2022/12/02(金) 20:23:06.13 ID:OZyA684d0.net] >>220 いや、無理無理 黙ってられない年寄りばかりだから。
225 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 10:30:49.38 ID:S7dtgmin0.net] 神様達、よろしくお願いします classモジュール変数に、public で配列を置きたいのですが 配列は、オブジェクトモジュールのパブリックメンバーとして利用できません と怒られました クラスをnewして、メンバーとして配列にアクセスする方法はありませんか? 例)================================= 標準モジュール dim cls as Class1 set cls = new Class1 debug.print(cls.ar(0)) <---こう呼び出したい ============================= クラスモジュール public ar() as variant private sub Class_Inisialize() ar(0)="xxx" end sub
226 名前:222 mailto:sage [2022/12/03(土) 10:34:59.98 ID:S7dtgmin0.net] 神様たち、すみませんでした。解決できました。ごめんなさい
227 名前:デフォルトの名無しさん [2022/12/03(土) 10:52:40.84 ID:sKNlSpsi0.net] >>218 出来ないことはないが VBAでは過去の遺物、負の遺産として 使用が暗黙的に禁止されている。 どうしても使いたければ VBA GOSUBでググれ
228 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 12:46:31.23 ID:pfZ7JepId.net] それサブルーチンだし関数内関数っていっていいの? 引数も渡せないでしょ
229 名前:222 mailto:sage [2022/12/03(土) 13:22:57.30 ID:S7dtgmin0.net] GOSUBはミートソースでも食べられないと教わりました
230 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 13:27:47.06 ID:HS9T9UMm0.net] > VBA GOSUBでググれ 全米がずっこけたわ もう老害はこう言うのでマウント取るしかないんだな...
231 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 13:46:56.21 ID:y5TLnC6XH.net] >>227 これ若造やぞ
232 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 13:59:22.91 ID:53g102vo0.net] 知ってる? マウント取ってくるのは大抵年寄りだぞ 何故ならば体が思うように動かないからやたら口達者になるから。
233 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 14:03:12.32 ID:y5TLnC6XH.net] そもそもこれマウントでもなんでもなく単に間違えてるだけでしょ
234 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 14:08:18.64 ID:pfZ7JepId.net] GOSUBでも似たようなことできるけど○○できないとか制限あるよっていえばいいのに 最初の4行なんて余計でしょもったいぶって言う割には回答がおかしすぎて マウントとかそういうレベルでもない
235 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 14:14:01.12 ID:zLpEoZMka.net] ↑ こう言うことを言い出すのもたいてい老害w
236 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 14:16:30.51 ID:ywgcZJJ9M.net] 高階関数のことならVBA関数では不可 ワークシート関数であればLAMBDA(とLET)
237 名前:デフォルトの名無しさん [2022/12/03(土) 14:26:56.17 ID:y5TLnC6XH.net] >>232 君、韓国人みたいな発言してるよ 気をつけたほうが良いと思う
238 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 14:33:59.75 ID:zLpEoZMka.net] いきなり〇国とか言い出すのも老害によくある行動
239 名前:デフォルトの名無しさん [2022/12/03(土) 14:59:55.68 ID:YYHySLTHa.net] 質問者はなんで出来ると思って質問したのか?
240 名前:222 mailto:sage [2022/12/03(土) 15:06:08.67 ID:S7dtgmin0.net] アドバイス頂けただけありがたいです。 神様皆様ありがとうございます マクロの記録なのですが、 マクロ記録→検索→全部→マクロ記録終了 そしてマクロを選択して編集すると Macro と書かれているだけでマクロが記録できません 記録してどんなワークシート関数を使っているのかみたいのですが 何か必要な設定があるのでしょうか? 現在excel2019を使っています
241 名前:222 mailto:sage [2022/12/03(土) 15:11:13.12 ID:S7dtgmin0.net] >>236 class.propertyみたいな呼び出し方で 配列や、インスタンス代入変数を参照できたらいいなって思ったんです function やsubを直接参照するのが気持ちよくなくて
242 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 15:32:48.63 ID:y5TLnC6XH.net] >>237 特にない 365だけど、昔も今も普通に記録されるよ https://i.imgur.com/3UPitt6.png
243 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 16:01:02.34 ID:y5TLnC6XH.net] >>238 vbaは化石だから色々と諦めるしかない
244 名前:デフォルトの名無しさん [2022/12/03(土) 17:35:51.41 ID:su8PlnK50.net] >>235 それ、朝鮮総連のマニュアルだよ。 「あなたは朝鮮人の可能性があると言って相手の反応を見ましょう」
245 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 18:08:54.01 ID:i+Roms8I0.net] >>224 それ、ちょっと思いついてネタ的に作ってみようかと思ったが そもそもブロックレベルのスコープもたないVBAでやると大変なことになるだけだったわ
246 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 18:30:19.13 ID:pfZ7JepId.net] >>232 回答もできず できることで負けてるから若さで勝ち誇りたいプライドもかわいそうだな そのまま年取るなよ >>242 ある程度まとまったコードを例えば分岐のいくつかでやりたいとかの場合は有効かもしれんけどね
247 名前:デフォルトの名無しさん [2022/12/03(土) 19:16:17.53 ID:lRZF9sqh0.net] >>238 Class内にDictionaryなりCollectionなりをSetしておいてItemをため込み、 Property Getで取得することはできそうな気がする。。。 ごめん、検証してないし希望とは違うかもしれんけど。
248 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 22:12:00.65 ID:K9qqP04ra.net] 複数行にまとめてVLOOKUP関数を埋め込みたいのでFormulaR1C1プロパティを使っているのですが、マジックナンバーを避けるために検索範囲や列番号を変数で表現すると一行がやたら長くなってしまいます 出来るだけ簡潔に書きたいのですが、何かいい方法はありませんかねえ
249 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 22:38:24.22 ID:RHVI1GN10.net] >>245 やたら長いとやらを貼らないと意味が分からない
250 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 22:54:43.08 ID:y5TLnC6XH.net] >>245 indirectかませてるって事?
251 名前:デフォルトの名無しさん [2022/12/04(日) 05:27:51.07 ID:c2Va4wZ/0.net] >>245 長くなるというのがどういう状況かわからんけど、範囲をテーブル化して 構造化参照するとかListobjectで指定するとかは?
252 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 05:34:26.58 ID:SnW1Fv340.net] テーブルとか職場の人が嫌がるのですが
253 名前:デフォルトの名無しさん [2022/12/04(日) 07:20:23.13 ID:c2Va4wZ/0.net] >>249 あーテーブル嫌がる人けっこう多いよねーw >>245 の件としてレスするけど、テーブル書式設定をクリアしてテーブルっぽく見せないってごまかしは置いてくとしてw 変数って書いてるからVBAコード内での一行なのだろうと仮定して、変数にすると長くなるのであれば変数名を短くするしかないかと。 多少なりともわかりやすくというなら列番号はEnum定義しておくとか。そのくらいかな。 的外れなレスだったらごめんね。
254 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 07:55:31.27 ID:CPo+UFwT0.net] 構造化参照も理解できない方たちが事務やってるの多いもんな 変数てLET関数のことかな VBAの変数名の付け方が参考になるんじゃないか むしろVBAだと変数名は少し長くなっても後から理解できるようにしておくというのが多いけど
255 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 08:09:42.33 ID:TGszPi/mH.net] >>240 新旧の互換性を維持する系の言語は いろいろ個性が強くなりますので できないことはできないで教えていただけてすっきりです >>244 アドバイスありがとうございます クラ
256 名前:スモジュール内のプロシージャーをすべてprivateにして 各プロシージャーの処理結果をモジュール変数の参照のようにしたいのです そうすれば多少は依存性が解消できて見通しよくなるような気がしてます 何かいい方法ないでしょうか? [] [ここ壊れてます]
257 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 08:10:27.13 ID:TGszPi/mH.net] >>239 ありがとうございます 何か自分の設定がおかしいのかもしれません 調べてみます
258 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 10:02:49.72 ID:ep+/H4bNd.net] 自分はテーブル大好き派なんだが嫌いな人多いんだ
259 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 12:51:49.12 ID:SnW1Fv340.net] 嫌いどころかデータ蓄積の入力用シートすら作ってない不思議な人達ばかりよ現場は。 ひとつの表で完結させようとしている。 良くそれで仕事を完遂できるなと
260 名前:デフォルトの名無しさん [2022/12/04(日) 13:25:18.39 ID:pUfIiilw0.net] すみません 凄く基本的なマクロの質問になると思いますが質問させてください シート2のA2からA列の最終行までの値をコピーして シート1のB3に貼り付けをしたいのですがどうしたらいいでしょうか? 範囲を最終行に応じて自動的に変化させたいです 他にもB2から最終行まで、D3から最終行までとするにはどうしたら良いでしょうか?
261 名前:デフォルトの名無しさん [2022/12/04(日) 14:09:55.48 ID:5CZT7HJs0.net] >>252 クラス内のプロシージャを全てPrivateにして外部のモジュールから参照するのはしようと思えば出来る。
262 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 14:24:22.61 ID:S/+N28Tr0.net] >>256 VBA 最終行 でググれ https://www.excel-ubara.com/excelvba1/EXCELVBA318.html > シート2のA2からA列の最終行 なら With Worksheets("シート2") LastRow =.Cells(.Rows.Count, "A").End(xlUp).Row End With
263 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 15:39:27.71 ID:E+FYkBejd.net] >>256 クリップボード経由しないならこんな感じじゃない Dim iLastRow As Long iLastRow = Worksheets("Sheet2").Range("A1").SpecialCells(xlLastCell).Row Worksheets("Sheet1").Range("B1:B" & CStr(iRow - 1)).Value = Worksheets("Sheet2").Range("A2:A" & CStr(iLastRow)).Value ちなみに代入元と代入先の行数を合わせる必要があるからそこは必要に応じて書き換えてね
264 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 15:42:10.01 ID:TGszPi/mH.net] >>257 dim cls as class1 set cls =new class1 cls.arry(0) cls.dictionary("x") みたいなことできますか? プログラムはかなりできあがってきたんですが 出来るようなら書き換えたいです
265 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 16:08:10.76 ID:TGszPi/mH.net] 神様の皆様、よろしくお願いします 動的配列を使って要素を追加するケースで質問です dim ar() as variant redim ar(0) for i=0 to 9 ar(i)=i redim preserve ar(ubound(ar)+1) next redim preserve ar(ubound(ar)-1) // A A部分はar(10)を削除しようとして記述しています この記述は、ar配列の最終要素を削除する動作を保証しているのでしょうか? それとも何かの影響でarの最終要素以外の要素を削除することはあるのでしょうか?
266 名前:デフォルトの名無しさん [2022/12/04(日) 16:43:26.32 ID:cmQKIRXH0.net] >>261 VBE上でローカルウィンドウを出してF8を繰り返し押せば確認できるよ
267 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 16:53:49.22 ID:S/+N28Tr0.net] >>261 自分でシミュレーションしてみ ' i = 9 から... ar(i)=i ' ar(9)=9 redim preserve ar(ubound(ar)+1) ' redim preserve ar(9+1) redim preserve ar(ubound(ar)-1) ' redim preserve ar(10-1)
268 名前:デフォルトの名無しさん [2022/12/04(日) 16:55:07.12 ID:pUfIiilw0.net] >>258-259 ありがとうございます 凄く助かります
269 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 17:09:39.48 ID:TGszPi/mH.net] >>262 >>263 ありがとうございます 例えば1万回は最終要素を削除できたけれど 10億回すると削除されない、もしくは最終要素以外を削除してしまう という挙動はあり得ないのでしょうか? 言い換えてると vbaの仕様として、ubound(ar)は配列の最終要素を参照しており ubound(ar)-1は、最終要素の1つ手前を参照することを保証していると考えていいでしょうか?
270 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 18:25:54.71 ID:SVL4/CbaH.net] >>265 良い。問題無い。 保証されないのはforeach あれは順番が変わる事があるので、foreachで同じ事をやるのは絶対にNG
271 名前:デフォルトの名無しさん (ワッチョイ dc05-AmP8) mailto:sage [2022/12/04(日) 18:42:02.29 ID:QfYm9r1x0.net] 請求書をつくるとき取引先ごとの売上をいれてるシートをピボットテーブルで日付ごとに合算してそれをコピペして請求書シートに貼ってるんですが これをうまい具合に自動化することはできませんか?
272 名前:デフォルトの名無しさん (スップ Sdc4-4FAg) mailto:sage [2022/12/04(日) 18:44:43.55 ID:E+FYkBejd.net] そういうコードをかけばいいんじゃない?
273 名前:デフォルトの名無しさん (ブーイモ MMba-5Y9H) [2022/12/04(日) 18:57:53.90 ID:k+5uNib2M.net] ピボットテーブルの特定セルを参照する関数なかったっけ?
274 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 19:30:14.40 ID:SVL4/CbaH.net] >>267 取引先ごとの売上をいれてるシートをピボットテーブルで日付ごとに合算してそれをコピペして請求書シートに貼ってる ↓ 請求書シートの所定の場所に、ピボットテーブルを表示させる でいいんじゃないの? 取引先や日付範囲でフィルタすれば全自動になると思う
275 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 20:19:07.12 ID:QfYm9r1x0.net] >>270 そのまま別のデータをコピペすることもあるので ピボットテーブル直接表示させたらズレませんか?
276 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 20:33:04.86 ID:SVL4/CbaH.net] >>271 どうズレるかはよく分からんけど・・・ ズレるのが怖いなら、 単純に参照すれば良い。黄色の部分は本当にシンプルな式だけで良いと思う https://i.imgur.com/rwpq1hu.png
277 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 20:47:06.88 ID:dKAtQmN50.net] >>267 ピボットテーブルのフィルターに「取引先」を設定して コピペするときにリンク貼り付けすれば 後はフィルターを切り替えるだけじゃないだろうか
278 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:29:31.05 ID:TGszPi/mH.net] >>266 ありがとうございました これでUboundを業務で使えます これからもご指導よろしくお願いします
279 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 00:46:19.76 ID:TwFYHOyP0.net] >>272 >>273 いずれもコピーは必要なんですね ここに貼り付ける、ときたら 勝手に集計したのを貼ってくれといいのですけど ちなみに零細で月に10枚程度しか請求書ださないとこは ExcelのなんちゃってDBで十分ですかね? フリーSQLも含めACCESSやファイルメーカーもたかってみたがデータの柔軟性がなさすぎて困った これとこれをグループ化とかも簡単にできないし
280 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 01:25:43.19 ID:vai3YpAKH.net] >>275 >ちなみに零細で月に10枚程度しか請求書ださないとこは >ExcelのなんちゃってDBで十分ですかね? じゃなくて、成長率 毎年の成長率が高い企業は、本当に気をつけたほうがいい >フリーSQLも含めACCESSやファイルメーカーもたかってみたがデータの柔軟性がなさすぎて困った Excelがおかしな事をしているだけなんだよ それがたまたま日本の零細~中小に合致しているだけ
281 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 01:33:53.42 ID:TwFYHOyP0.net] >>276 ファイルメーカーつかってたが レコードを日付でまとめて一覧ししてレポートだす機能もないんだよ…
282 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 01:36:52.68 ID:TwFYHOyP0.net] 外部からインポートもコピペではできないし テーブルを全く計算も不得意ときてる
283 名前:デフォルトの名無しさん [2022/12/05(月) 03:27:44.54 ID:FhvtASfFd.net] 安い販売管理アプリすら買えない貧乏会社は潰れろ
284 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 06:57:51.15 ID:/0dw54cWH.net] 今どきはフリークラウドの管理ソフト(販売系、経理系、労務系)のサービスが山ほどあるでしょ 提供会社が無償提供やめたり、提供自体やめると面倒だけど データ移行性を確保できるのならそっち方法がいい
285 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 07:47:07.80 ID:TwFYHOyP0.net] >>279 >>280 それこそつかいにくい
286 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 11:40:12.06 ID:BG/y+01pF.net] >>246 一例をそのまま貼ると、こんな感じです。 Dim VLOOKUP商品名 As String VLOOKUP商品名 = "=VLOOKUP(RC" & eCols_明細.得意先コード & "," & WsName得意先テーブル & "!R" & eRows_通常.開始行 & "C" & eCols_得意先テーブル.得意先コード & ":R" & EndRow得意先テーブル & "C" & eCount_得意先テーブル & "," & eCols_得意先テーブル.得意先名 & "," & 完全一致 & ")" めちゃくちゃ長くて可読性が悪いなと……
287 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 12:03:42.76 ID:2GrVmVNid.net] 変数に代入している際の話なら VLOOKUP商品名 = "" VLOOKUP商品名 = VLOOKUP商品名 & "AAA" VLOOKUP商品名 = VLOOKUP商品名 & "BBB" VLOOKUP商品名 = VLOOKUP商品名 & "CCC" とかきりのいいところで分割して代入すればいいんじゃない?
288 名前:デフォルトの名無しさん [2022/12/05(月) 12:08:08.63 ID:1vq1KTlma.net] >>282 それ自力で展開できないようじゃやばいよ
289 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 12:14:29.23 ID:EBZoNox0M.net] >>283 一応テーブルを参照する部分(VLOOKUP関数の参照範囲の箇所)を変数に代入することで少しは可読性があがったのですが、そもそも複数行へのVLOOKUP関数の埋込みをFormulaR1C1プロパティを使わなくても出来ないものなのかなあ、と思いまして >>284 「展開」とは?
290 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 12:36:26.38 ID:2GYg1OhQ0.net] >>267 「GROUP BY 複数条件」じゃないの? GROUP BY 取引先, 日付
291 名前:デフォルトの名無しさん (ワッチョイ 0101-9CiQ) mailto:sage [2022/12/05(月) 18:30:47.05 ID:ovLbu+Xd0.net] >>285 「そもそも複数行へのVLOOKUP関数の埋込みをFormulaR1C1プロパティを使わなくても出来ないものなのかなあ」ってのがよくわからん どんな機能を使おうが、セルに代入したいなら必ず一度はコードに記載しなきゃいけないんだから「eCols_明細.得意先コード」とかの変数名を短くするくらいしかないでしょ
292 名前:デフォルトの名無しさん [2022/12/05(月) 20:42:26.49 ID:vfUaA4330.net] >>282 VBAからvlookup関数を埋め込んだことが無いので処理のイメージがつかめないんだけど、 今やろうとしていることはvlookup関数の字面を文字列を繋げて作り上げようとしてる感じなのかな? そもそもVlookup関数の構文は VLOOKUP(検索値, 範囲, 列番号, 検索の型)なのだから変数を使うのであれば 検索値や範囲を変数に格納して繋げれば良いのでは? 例えば,,, Dim val as String: val="値" Dim rng as Range: set rng = range(”A1”,"B10") Dim col as long: col = 2 Dim FormulaStr as string FormulaStr = "=VLOOKUP(" & val & "," & rng.Address & "," & col & ", false)" みたいな感じ? 値や範囲をセルによって可変にしたいなら変数に格納する値を変えればいいわけだし。。。 こういうことじゃないのかな?
293 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 20:47:00.71 ID:imBemMvO0.net] そもそも数式をVBAで入力することってあんまりないよな
294 名前:デフォルトの名無しさん [2022/12/05(月) 21:46:02.27 ID:vfUaA4330.net] >>289 そうですねぇ、あんまりないですね。 経験としては、計算式があるのにどうしても直打ちされて消されてしまうシートに ボタン一発で計算式を復旧させる機能を付けた時くらいですかねw
295 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 22:43:24.64 ID:/0dw54cWH.net] やっぱりVlookやsumifみたいな 組み込み関数のほうが、普通にコードするより速く強力なんでしょうか?
296 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 00:26:23.27 ID:/P6wRT1K0.net] コードが短くなるから
297 名前:デフォルトの名無しさん (ワッチョイ 6eda-RX5i) [2022/12/06(火) 05:54:39.62 ID:iYcy7y+Q0.net] >>291 Excelに備わっている関数は強力だと思うし使い勝手が良かったりするものもありますね。
298 名前:рフ場合はcountifやmatch、max、minあたりはVBA上でもWorksheetfunctionからよく使います。 [] [ここ壊れてます]
299 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 06:19:16.90 ID:MaIfapT+0.net] >>291 かなり最適化されてるしマルチスレッドで動作するから同じ処理ならVBAより相当速い
300 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 07:43:11.23 ID:Al8BgWGSd.net] >>275 零細だったらそれこそappsheetでもいいんじゃないですか?
301 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 08:29:25.79 ID:AKPIYKETr.net] 関数を直接入力するとその後にシートに何かしら入力するたびに再計算されるから面倒だわ その再計算が気にならないってんならvbaで処理しても気にならないレベルでしょ countifなんか特に再計算に3分とかかかる場合もあるし
302 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 09:00:18.69 ID:0FDDxcj9H.net] >>296 ピボットあたりにしてみては? coutif遅いよ
303 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 11:03:13.75 ID:jhjyA+WOr.net] >>297 意味が分かりにくくてすまん だから関数を直接セルに入力するようなことはせずに、vbaでworksheetFunctionとかDictionaryとか使って結果だけを出力するなって意味 vbaで関数を入力するのは引き継ぎとか他人に渡すのを想定したときくらいかな
304 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 11:13:52.38 ID:64yedq7Nd.net] 2行目もよくわからんし VBAで関数を入力とかイミフなんだが
305 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 11:40:45.39 ID:QNWFDahpa.net] Application.Calculation = xlCalculationManual はとりあえず書いとくでしょ
306 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 13:28:57.18 ID:/P6wRT1K0.net] つかVBAで関数使えるなんて最近知ったわ
307 名前:デフォルトの名無しさん [2022/12/06(火) 13:35:48.17 ID:41AW+NFUM.net] >>301 お馬鹿自慢要らない
308 名前:デフォルトの名無しさん [2022/12/06(火) 18:35:08.85 ID:+0skKz+k0.net] どんな機能も馬鹿には使えない
309 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 22:10:52.72 ID:0FDDxcj9H.net] >>300 昔書いてたけど、最近はほとんど書いてないな PCスペックが大幅に向上し、負荷のないコードが自然に掛けるようになった
310 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 23:34:20.45 ID:HLCihNOZ0.net] 2行目がひどすぎる
311 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 01:18:20.40 ID:X43S603Q0.net] なにが?
312 名前:デフォルトの名無しさん (JP 0H88-7kHv) mailto:sage [2022/12/07(水) 07:13:11.50 ID:FarCeGHLH.net] 演算処理能力、メモリ容量、基盤の伝送量と速度が大幅に向上し 組み込み関数による処理、VBA関数による処理などの差によるメモリ効率、処理速度を考えず 組み込み関数に依存しないコーディングを書けるようになった 言い換えると3行になるな メモリ効率を悪化させてしまった
313 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 11:24:59.17 ID:D8w4iSDKd.net] >>304 関数が入っているセルを参照するようなコードの場合 例えばCells(4, 3)にCells(3, 3)の値を10倍するような関数が入っているとして Cells(3, 3).Value = 40 Debug.Print Cells(4, 3).Value とやった場合、自動になっていればCells(4, 3)は400になった値が参照できて 手動ならもともと入っている値が参照できるという状態でしょ スペックが向上、負荷のないコードだから書かないというのは危険な考えでは
314 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 11:32:32.02 ID:utJNEW7kH.net] >>308 再計算に左右されるコードを書く事がそもそもおかしいんですわ
315 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 12:12:32.61 ID:LcpUtl7xM.net] 配列がらみのFunctionを作ったときにメモリを空けようと「一時的な配列」を初期化しているのだけれどもしかしてあんまり意味ない? たとえばこのように↓ Function 戻り値配列 (引数)As Variant Dim TempArr As Variant (……何らかの処理) 戻り値配列 = TempArr Erase TempArr ← これ End Function 同じ要領で“TempDic”をRemove allしたら戻り値の連想配列も空になっちゃったけどこれはなんでなんだろう
316 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 12:16:33.70 ID:utJNEW7kH.net] >>310 function抜けたらメモリ勝手に空くから特に意味はない それに今は潤沢にメモリあるから、メモリの空き容量なんて気にしなくていいよ
317 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 12:21:53.20 ID:D8w4iSDKd.net] >>309 なるほど こういう回答するやつとは通じ合えないのがわかったわw しかも>>311 の回答も適当だしな
318 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 13:54:56.12 ID:wBRRjjXH0.net] >>312 vbaって配列の要素に変数を入れ込んでから配列を初期化すると、 要素変数への参照は切れるけれどメモリ領域は解放されないのでは? それともvbaって配列要素への参照切れで割りあてたメモリを開放するの?
319 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 14:42:43.86 ID:snBsCL7QM.net] 調べてから質問しよう
320 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 15:06:50.61 ID:y9uo2cdUa.net] とりあえず「Erase」を書くのはあんまり意味無いっぽいんでやめます
321 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 18:33:11.05 ID:utJNEW7kH.net] >>312 といいつつなにも訂正できないアホ
322 名前:デフォルトの名無しさん mailto:sage [2022/12/07(水) 18:52:51.37 ID:CifLjB7Ga.net] >>310 > 同じ要領で“TempDic”をRemove allしたら戻り値の連想配列も空になっちゃったけどこれはなんでなんだろう そりゃ参照を返してるだけで実体は一個しかないからRemoveAllしたら消えるよ その後 TempDic を使わない事を明示したいなら Set TempDic = Nothing でもしとけばいいけどまあ関数抜けたら TempDic はなくなっちゃうんだから気にしなくていいと思うよ
323 名前:デフォルトの名無しさん [2022/12/08(木) 00:25:28.15 ID:+1lRH4XG0.net] まぁでも関数やメソッド抜けるまでは保持し続けるから単一責任原則を守ったコードに慣れるまでは 使い終わったらさっさと解放することに越したことはないよ。 最近当たったんだけどボタンを押して呼んだ関数の中で数万のインスタンスを生成する処理があって、 完了メッセージを出した後もその関数抜けるときにメモリを解放しているもんだから暫く待たされるという残念なコードを見てる。 生成した後のごちゃごちゃした処理は別関数でやってたのに実に残念なツールになってたよ。
324 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 01:16:01.92 ID:WwdCwmmca.net] 意識高い系のVBA使いとか生きるの辛そうだな プログラミング界ではそもそもVBAな時点でみんな半端者扱いなんだから気楽にやろうぜ
325 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 02:22:15.27 ID:tbk78NJr0.net] vbaを使ってて0.01秒早くしてどうすんだ?って思うときはある
326 名前:デフォルトの名無しさん (ワッチョイ aa01-QZbE) mailto:sage [2022/12/08(木) 06:20:02.03 ID:lmp5fbT90.net] >>318 > まぁでも関数やメソッド抜けるまでは保持し続けるから単一責任原則を守ったコードに慣れるまでは > 使い終わったらさっさと解放することに越したことはないよ。 呼び出し元に返す話に何を言ってるんだ?
327 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 07:04:26.73 ID:HFBnNvT0H.net] ならやっぱり配列要素がプリミティブでなければ 要素そのものを解放しないと 配列だけ初期化する意味なんてあるの?
328 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 07:26:25.62 ID:HFBnNvT0H.net] というか、vbaには参照切れで自動的にメモリ開放する機能がないってことなのか
329 名前:デフォルトの名無しさん [2022/12/08(木) 08:07:05.00 ID:+1lRH4XG0.net] >>322 例えば配列にループしてインスタンスを設定するとして、そのループの中でひとつの変数にNewしてインスタンスを作成して、 そのインスタンスを配列に設定した場合、前回のループで設定したインスタンスは配列の内容が削除されれば、他に参照しているところがない限りメモリから解放されるよ。
330 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 08:35:17.09 ID:yLcZaBdRH.net] >>323 ガベージコレクションね 無いよ 逆に参照が合った時に初めてnewされるよ
331 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 10:09:55.21 ID:JnPWza2ja.net] >>322 配列の話じゃねーから絡んできて頓珍漢なこというのはやめてくれ > 同じ要領で“TempDic”をRemove allしたら戻り値の連想配列も空になっちゃったけどこれはなんでなんだろう
332 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 10:17:37.27 ID:owyQh2KqM.net] >>326 仕様ですが何か?
333 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 10:23:17.17 ID:ch+LF4H/0.net] 配列の話じゃなかったんですね、すみません
334 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 10:27:25.77 ID:owyQh2KqM.net] よく見たら >>317 で解決済みじゃんか
335 名前:デフォルトの名無しさん [2022/12/08(木) 12:32:14.89 ID:+1lRH4XG0.net] >>326 それは済まなかった でもそんなにイライラするなよ ハゲが止まらなくばるぞ
336 名前:326 [2022/12/08(木) 14:20:26.49 ID:65k1Y+1Y0.net] >>330 いやわたしはハゲちゃおらんよ。 君みたいなハーゲマンと一緒にしないでくれ。
337 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 17:59:48.27 ID:sOdFjo8m0.net] またヘアの話してる。。 ヘア話好きだなぁお前ら
338 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 01:27:21.92 ID:hGMGk7SH0.net] クエリA UNION ALL クエリB →文字化け クエリB UNION ALL クエリA →正常 なんでやねん! 何で上下入れ替えると直る? 因みに、文字化けする方も文字列型にすると化けないので、 文字コードの問題ではない。
339 名前:デフォルトの名無しさん [2022/12/09(金) 02:00:05.39 ID:6OFfyKzYa.net] コードだせよ
340 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 02:12:16.40 ID:Uc0MJbfu0.net] 毛出せよ
341 名前:デフォルトの名無しさん [2022/12/09(金) 04:09:12.16 ID:u4+GnlEA0.net] >>333 何に大してSQL投げてる?
342 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 07:02:42.07 ID:KfOH1QpXH.net] 神様皆様おはようございます 神様たちのお導きで50万行*80列のデータから 所望のデータを抽出できました ありがとうございました!
343 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 13:09:40.12 ID:rQKM0wa8M.net] OneDriveで自動保存設定してるブックに手動保存するときだけbeforesaveイベントする方法はある?
344 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 04:11:06.01 ID:sYCK+UIk0.net] >>336 CSV schema.iniも使ってる。
345 名前:デフォルトの名無しさん [2022/12/10(土) 07:54:03.42 ID:07zUVtVr0.net] >>339 SELECT句の中にアスタリスク使ってない? UNION句で挙動がおかしくなるのはCSVファイルじゃなくてEXCELのシートにSQL投げたときに起こるのも見たことあるけど まぁそもそもDBに投げてる訳じゃないからある程度は仕方ないってところもあるよ。 CSVファイルはUTF-8かSJISかってのもあるけど UNION句の上下入れ替えたら直ったというのであれば今回は関係なさそうだしね。
346 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 02:40:17.51 ID:08xatqWx0.net] >>340 アスタリスクは使ってるけど、 A.* ってテーブルは指定してる。 入れ替えで直るから、 今困っているわけじゃないけど、 これから先使うの不安だわ。
347 名前:デフォルトの名無しさん [2022/12/11(日) 02:50:20.80 ID:z4dJXl08a.net] あすたのリスクに備えよう
348 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 04:50:30.55 ID:fs20dDlo0.net] いつまで起きている?
349 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 12:55:57.38 ID:GglWfKZ40.net] >>338 Ruby on Rails では、before_action, after_action, around_action で、コールバックできる before_save :a, only: [:new :edit] after_save :b, except: [:new :edit] onlyで、new, editが呼ばれる前にだけ、aを実行する。 逆にexceptでは、new, editが呼ばれなかった後にだけ、bを実行する
350 名前:デフォルトの名無しさん [2022/12/11(日) 14:15:24.03 ID:6rsOUIlG0.net] >>344 布教活動大変だね
351 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 16:42:01.94 ID:pyId0WeJH.net] >>344 もうすぐなくなる言語が何だって? https://trends.google.co.jp/trends/explore?geo=JP&q=ruby,python,php,vba
352 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 20:21:22.99 ID:fs20dDlo0.net] Ruby信者ってどこにでも沸くな
353 名前:デフォルトの名無しさん [2022/12/11(日) 23:36:23.53 ID:jy7H3fIV0.net] サーバーにあるフォルダからPDFを検索したいのに上手くいかない 検索はかけても何もヒットしない… どこか修正するとこありますか? テキストボックスに入力して検索 検索結果をリストボックスに表示します Private Sub CommandButton1_Click() Const BASE_PATH = "\\L\設計\図面" Dim myPath As String, myName As String Dim FSO As Object, oFolder As Object, oSubFolder As Object, oFile As Object On Error Resume Next If TextBox1.Value = ""Then Exit Sub ListBox1.Clear Set FSO = CreateObject("Scripting.FileSystemObject") Set oFolder = FSO.GetFolder(BASE_PATH) For Each oSubFolder In oFolder.SubFolders For Each oFile In oSubFolder.Files If LCase(oFile.Name) Like LCase(TextBox1.Value) &"*.pdf"Then Debug.Print oFile.Path myPath = oFile.ParentFolder &"\"myName = oFile.Name ListBox1.AddItem myName ListBox1.List(ListBox1.ListCount - 1, 1) = myPath End If Next Next Set FSO = Nothing End Sub
354 名前:デフォルトの名無しさん [2022/12/12(月) 00:49:34.01 ID:GzIbQG1id.net] if文の文字列比較条件でワイルドカードが使えたらいいよね
355 名前:デフォルトの名無しさん [2022/12/12(月) 00:53:47.45 ID:b3Hc3KE20.net] あ、vbaか すまん
356 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 01:42:01.46 ID:4xXIhKks0.net] 読めん 字下げから始めた方がミス探しやすいはず
357 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 02:19:04.59 ID:hdNfjLFm0.net] >>348 とりあえずデバッガーした結果をクレ
358 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 05:04:18.82 ID:x7256VzD0.net] >>348 とりあえず For Each oFile In oSubFolder.Files Debug.Print "Debug:" "& oFile.Name If LCase(oFile.Name) Like LCase(TextBox1.Value) &"*.pdf"Then としてまずファイルがあるのか確認しなよ あとデバッグ中は On Error Resume Next をコメントアウトしといた方がいい 予想外のエラーを握り潰されて(当人にとっては)意味不明な挙動になることあるから
359 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 08:24:42.26 ID:lSQJahkmM.net] >>349 正規表現あるやろ
360 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:02:36.57 ID:Yr5sVjH4a.net] 請求書の原紙となるsheetをコピーして、そこに配列に格納した請求情報を貼り付けるという作業を約100回繰り返したいのですが、 ①先に約100回のsheetのコピーを済ませて、生成されたsheets間をループして請求情報を貼り付ける ②sheetのコピー→請求情報の貼付けを約100回ループする どちらの処理が早いのでしょうか
361 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:07:14.79 ID:DRicYWUJ0.net] 100回程度ならどっちでも体感の差はないと思う
362 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 16:22:37.21 ID:r3Uma5Xoa.net] シートがクソ重かったりPCがクソ貧弱だったりするなら、 ②の方がブックが小さい状態で貼り付けの処理ができるから安定して動くだろうね
363 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 17:07:21.38 ID:1yb84Oz2a.net] >>357 後にまとめて印刷して突き合わせを行うため、請求書のシートの順番を配列の要素の順番と同じようにしなければなりません よって②の場合は、配列の値を貼り付けた後に(配列の添字が 1 から始まるため) “Copy After := Worksheets( i )” を記述することになります つまりシートをコピーする度にシート数をループ変数から取得する処理の繰り返しになるのですが(①だと “Copy After := Worksheets( 1 )” でもよい)、それでも②の方が安定しているのでしょうか
364 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 17:09:47.10 ID:1yb84Oz2a.net] >>358 シート数を→シート番号を
365 名前:デフォルトの名無しさん [2022/12/12(月) 17:26:03.86 ID:8QT34TfC0.net] 請求書ってそんな適当に作ったマクロで請求していいものなのか
366 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 17:30:19.83 ID:1yb84Oz2a.net] >>360 私がマクロを作る前は手書きで請求書を書いてエクセルに抽出した請求データと目視で突合していたんですよ(現在は自作した請求書を自動発行するマクロをスピードアップを目的に改修しているところです) そういう会社もあるんです
367 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 18:07:39.61 ID:UCyWy/zwd.net] iはWorksheets.Countあたりを使えばいいんじゃないの? ただ100件程度なんてせいぜい数分でしょ 今までの時間に比べたらどっちでもいいんじゃないの
368 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 18:13:02.49 ID:UCyWy/zwd.net] ただそういうモノづくりをしてる自分からしたら かりにある得意先の請求書のみ間違えていて修正したい場合①②どちらも最初から作り直すような感じに見えるけど そうすると他の請求書にも影響あたえるような作りに見えるんだよね なのでそういうのを作る場合は得意先コード的なものを最初に指定してその範囲の請求書を作る かりに修正したい得意先があればそれだけを指定すればいいみたいな作りにするけどね
369 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 18:21:55.06 ID:1yb84Oz2a.net] >>362 Worksheets.Count はなおさら遅いのではないでしょうか? シートのカウントを約100回繰り返すので 些末なこだわりと言われればそのとおりなんですが、どうせ改修するなら細かいところまでこだわった方がスッキリすると思いまして >>363 指定した得意先の請求書のみを発行するコードも別のモジュールに書いてあります メインは請求データの照合及び修正を行った後に約100件分をまとめて発行するフローでないと時間がかかってやってられないんです
370 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 18:35:02.38 ID:UCyWy/zwd.net] それならまずシートを100作るだけのコード書いて試せば済むことじゃないの? よくわからないけど通常と指定可能な請求書作成が別のコードになってるんだとするとメンテのコストが2倍になるのかなと思わなくもないね まあ他人の作るものだから余計なお世話だけどね
371 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 18:40:55.92 ID:1yb84Oz2a.net] >>365 確かに自分で三通りの方法をテストしてみれば済む話なんですが、もしかして私が挙げた処理はよくあるパターンであって一般解が確立されているのかなと思い、質問させていただきました
372 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:57:08.22 ID:Av/AuTTr0.net] たかが100回で差が出るわけ無いじゃんというレス付いてるだろ それが一般解
373 名前:デフォルトの名無しさん (ワッチョイ dfc7-B8iQ) [2022/12/13(火) 08:18:42.44 ID:j7P7/vOd0.net] >>348 If LCase(oFile.Name) Like LCase(TextBox1.Value)&"*.pdf" Then この部分、頭にもアスタリスクをつけてみたら? If LCase(oFile.Name) Like “*”&LCase(TextBox1.Value)&"*.pdf" Then
374 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 09:09:12.15 ID:EeVlUt2Pr.net] 100回やって差なんか0.1秒もないだろ その0.1秒を縮めるのに何分無駄にしてんだよ どっちでもいいような事に無駄に時間を費やすのは無能のやることだぞ
375 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 11:03:24.68 ID:hJPKsYSy0.net] >>369 スレ読んで書き込むのに何分使ったの?
376 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 12:21:04.99 ID:vd/+mp7xH.net] リファクタリングの基準ってどれぐらい? さすがに30分は当然なにかしらすると思うけど、 30秒ぐらいってどうするもんだろう。頑張って最適化するか、それとも待つか
377 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 12:35:32.21 ID:VHMxVebWM.net] アンケート禁止にしないか? 集計できるほど人いないし
378 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 12:37:28.28 ID:Z1nZTnw+0.net] >>371 賛否両論あって結論は出ていない
379 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 15:11:59.28 ID:hrptArbOd.net] 自社の開発時のルールで決めてるんじゃないの? 適当ですとかならいい会社だね 単なるツールなら適当でいいんじゃない
380 名前:デフォルトの名無しさん (ワッチョイ df7c-qe51) mailto:sage [2022/12/13(火) 15:42:35.91 ID:hJPKsYSy0.net] みんなプロなのか 私的に使ってる俺は処理が長いと感じたときとか、作って眺めたコードがクソ汚いかったときとかにする
381 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:38:15.19 ID:vd/+mp7xH.net] >>372 しないよ >>373-375 thx その時の気分とか空いてる時間があるとか、 業務に支障がない限りはそんなもんよね
382 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:49:33.01 ID:HC35XA+E0.net] >>375 本職も多いよここ 即答できる人もいる理由はそこ
383 名前:デフォルトの名無しさん (ラクッペペ MM8f-IK68) mailto:sage [2022/12/14(水) 10:41:10.18 ID:AqNC6do0M.net] アンケート結果発表! シラネーヨ 100%
384 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 15:11:34.58 ID:ntQYo9CS0.net] Excel VBAの本職ってなんだろう
385 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 15:24:19.30 ID:tcCDU8ws0.net] Excel VBAを「教える人」どまりかと
386 名前:デフォルトの名無しさん (ワッチョイ 472b-3TNT) mailto:sage [2022/12/14(水) 17:28:34.10 ID:zpvPwogV0.net] ソートがうまくいきません。 今まで下のコードでちゃんとソートできていたのですが、別のブックで同じコードを使ってもソートしてくれません。 原因がわかる方いらしたら教えてください。 Call Range(Cells(i, 1), Cells(i, 6)).Sort(Cells(i, 1))
387 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 19:02:52.74 ID:DP6xyTlHH.net] >>381 callで呼んでるのが変。むしろそんな書き方が出来るのか!と新しい発見レベル sortの書き方が古い。2003以前とかの書き方だったような気がする Sub aaa() Range(Cells(2, 1), Cells(6, 2)).Sort Key1:=Cells(1, 1) End Sub https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.sort
388 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 19:15:27.04 ID:8W0NbET2d.net] 戻り値が必要ない呼び出しするならcallでもいいでしょ ただし引数指定する時にカッコでくくる必要がある 自分のところでもソートされない現象が再現するんだけど、なぜか一度ソートすると次回以降はソートされるようになるね ちなみにこんな感じに修正すればソートされるようにならない? Call Range(Cells(i, 1), Cells(i, 6)).Sort(key1:=Cells(i, 1), Orientation:=xlSortRows) ・「key1:=」をつける ・「, Orientation:=xlSortRows」をつける
389 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 20:03:28.98 ID:zpvPwogV0.net] >>382 このやり方で無事できました。ありがとうございました。 >>383 このやり方も試しましたが、できませんでした。 やっぱりcallは使わない方がいいんでしょうか。 拾ったコードをよくわからずに使っていました。
390 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 20:05:33.98 ID:Q900W+A40.net] Let と Call は使わないなあ...
391 名前:デフォルトの名無しさん mailto:sage [2022/12/15(木) 08:41:16.03 ID:iAaI5rJJa.net] え?VBA本職の人がこのスレにいたような?? 過去スレで見たような
392 名前:デフォルトの名無しさん [2022/12/15(木) 12:16:56.32 ID:xwhwlfZy0.net] 質問者が本職では?
393 名前:デフォルトの名無しさん mailto:sage [2022/12/15(木) 12:19:05.46 ID:E+nMgP0Z0.net] そんな訳ないじゃん 本職が初級者みたいな質問するわけないし。
394 名前:デフォルトの名無しさん [2022/12/15(木) 14:39:58.62 ID:xwhwlfZy0.net] 初心者でも本職っているだろ
395 名前:デフォルトの名無しさん mailto:sage [2022/12/15(木) 17:34:15.89 ID:psAmgpbl0.net] なんのお仕事をされているんですか
396 名前:デフォルトの名無しさん mailto:sage [2022/12/15(木) 18:06:00.77 ID:E+nMgP0Z0.net] 引きこもり
397 名前:デフォルトの名無しさん mailto:sage [2022/12/15(木) 18:08:25.94 ID:zS2qEH43a.net] ネット検索で出てきたコードを参考にして、あるシートから別のシートへ PageSetup オブジェクトのプロパティを引き継ぐ汎用コードを作ったのですが、 Application.printcommunication を触ると何故か処理がコケてしまいます 別のコード(プロパティの順番や数が違う)を試してみると Application.printcommunication = True のところで 1004 エラーが 調べてみると Application.printcommunication は法則性のないエラーを吐くことが多いらしいんですが、上手く安定して動作させる方法はないでしょうか なお Application.printcommunication の操作を省くと重すぎて使い物になりません
398 名前:デフォルトの名無しさん [2022/12/15(木) 22:51:51.95 ID:SZeJUdRk0.net] VBAが本職ではないけど 他言語を含めてプログラマーってことなら 意外と本職の人いそう
399 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 03:10:13.03 ID:43IDYg4Z0.net] 本職の定義が不明
400 名前:デフォルトの名無しさん (アウアウウー Sa6b-0RkQ) mailto:sage [2022/12/16(金) 06:44:51.24 ID:lvCG6MuKa.net] VBA で金貰ってる(=給料の一部)と言うだけならかなり多くの会社員が該当しそう
401 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 07:34:05.36 ID:KlD5oueT0.net] VBAだけで生計を立てている、としたら・・・?
402 名前:デフォルトの名無しさん [2022/12/16(金) 07:47:34.39 ID:nXqIC3mr0.net] >>392 解決方法じゃなくてすまんけど。 trueを設定してこけるということはその前にfalseを設定してるのだと思うけど、 falseとtrueの間の処理でなんの設定を変更するとこけるのかを地道に探し出すしかないような気がする。 プリンタ関係だとページ設定あたりかと思うけど思わぬところが影響してることもあるし、プリンタ環境は千差万別だしね。
403 名前:デフォルトの名無しさん [2022/12/17(土) 11:54:26.33 ID:RQDgBjgc0.net] >>392 こんなブログ見つけたけどこれがほんとなら確かにクセつよ https://ubuntu84.blogspot.com/2014/12/excelvba-pagesetup-printcomminucateion.html
404 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 13:51:53.17 ID:MTNASajBd.net] >>392 マクロの記録で実際に設定したい値をまずは取得してみて そのコードをそのまま使ってみてもエラーになるわけ?
405 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 14:34:09.55 ID:rC46nFCS0.net] >>392 ,398 ちょっと気になって試したけど、それ、ほんとは .Zoom = False の行でエラーになってるな ステップ実行させてみればそこでちゃんとエラーになるんだが 普通に実行させるとそこでそのエラーが発生しないで、 PrintCommunicationで予期せぬエラーとなってるんじゃないか (うちの環境では順番入れ替えて同じだった) VBAのバグっぽいしマイクロソフトに問い合わせるのがよさげだが 一度ステップ実行で1行ずつ試してみれば?
406 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 14:46:45.42 ID:MTNASajBd.net] そのブログのコードは拡大縮小の部分についてみたいだけど 通常であれば有効にする動作を書くようなコードが必要なのに無効にするようなコードを書くから 当該エラーがでてるような感じにも見えるけどね 実際にエラーになる「.Zoom = False」を「.Zoom = 150」の様に修正するとエラーはでなくなるから そういう書き方を心掛けないとだめなんじゃないかと思うわ なので自
407 名前:分としては実際に設定したいページレイアウトをマクロの記録で取得してみたらといっている [] [ここ壊れてます]
408 名前:デフォルトの名無しさん [2022/12/17(土) 14:59:41.69 ID:RQDgBjgc0.net] >>400 なるほど。 そうなると.PrintCommunicationが認識出来ないプロパティがいくつかあるのかもしれないね。 ステップだとその時々で確認しにいくけど走らせるとPrintCommunication=trueで一括設定しようとするからそこでエラーって感じかな? 1004エラーってコードに不備があるときに出る印象があったから個人的に納得。 なんか参考になった。試してくれてありがと。 いや質問者じゃないんだけどw
409 名前:デフォルトの名無しさん [2022/12/17(土) 15:03:53.79 ID:RQDgBjgc0.net] >>401 ああ、それもそうだね。 『ズームを有効にするか無効にするか』 じゃなくて 『拡大縮小率をどのくらいにするか』 を具体的に指定するプロパティなら確かにその通りだわw
410 名前:デフォルトの名無しさん mailto:sage [2022/12/18(日) 18:40:43.65 ID:EVD3BPiK0.net] A1の数字が10以上で、B1の文字がたた、なな、はは、まま、やや、ららが含まれている場合に、D1にプレゼントと書きたいんですけど、どういうvbaか教えて頂きたいです。 B1の候補が50個以上あって、COUNTIFとかで全部入れるのが大変なんです… A列B列には、それぞれ100行くらいあります。
411 名前:デフォルトの名無しさん [2022/12/18(日) 18:47:30.46 ID:dVPwMTg0d.net] 馬鹿って仕様すらまともに書けないから馬鹿なんだよな
412 名前:デフォルトの名無しさん mailto:sage [2022/12/18(日) 18:50:14.49 ID:aFtf8S9Da.net] その候補を別のシートに並べればワークシート関数で一発では
413 名前:デフォルトの名無しさん [2022/12/18(日) 20:52:35.12 ID:ik+0WLv80.net] 特定のフォルダにある一番新しいファイルを 開いて、内容をクリップボードにコピーした いのですが、どう書いたらいいですか? その後DBアプリで処理する流れです。
414 名前:デフォルトの名無しさん (スッップ Sd8a-g3+u) [2022/12/18(日) 21:23:56.35 ID:dVPwMTg0d.net] ファイルをそのまま変換してdbに読み込ませればいいだろ 馬鹿って仕様すらまともに考えられないから馬鹿なんだよな
415 名前:デフォルトの名無しさん (JP 0H96-ZR1D) [2022/12/18(日) 21:31:13.42 ID:WS1FCRK3H.net] >>408 それってあなたの思い込みですよね
416 名前:デフォルトの名無しさん (JP 0H96-ZR1D) [2022/12/18(日) 21:32:30.15 ID:WS1FCRK3H.net] バカっていう方も悪いけど、それに対して韓国人呼ばわりはさすがにひどすぎると思う いくら何でも言いすぎだろ
417 名前:デフォルトの名無しさん mailto:sage [2022/12/18(日) 21:51:13.95 ID:ciqdCn4z0.net] >>407 動かしてないからタイポとかあるかも Dim FS As Object Set FS = CreateObject("Scripting.FileSystemObject") Dim Newest As Object Set Newest = Nothing Dim File As Object For Each File In FS.GetFolder("特定のフォルダ").Files If Newest Is Nothing Then Set Newest = File ElseIf Newest.DateLastModified < File.DateLastModified Then Set Newest = File End If Next Dim S As Object Set S = Newest.OpenAsTextStream(1, -2) With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText S.ReadAll .PutInClipboard End With S.Close Bug: ファイルが存在しない時はエラーになります Bug: 一番新しいファイルが複数あるとどれが開かれるかはわからない
418 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 01:57:07.11 ID:6OeO29Qx0.net] お前らすぐバカバカって言うけど、人を見下せるほど大した人間なのか?
419 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 02:08:16.14 ID:m5eY3pz4M.net] スキルと人間性は別なんだなあ 優秀な人間の性格がひどいとか割とよくある話 競争社会では他人を蹴落とさないと上に行けないし
420 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 08:20:47.46 ID:RL7A/3g/M.net] >>413 人間性が最低ってことやね スキルがあっても敬遠したいな
421 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 08:58:43.85 ID:UIs1Ip/rr.net] 人間性よかったらこんなとこいないで普通の生活で満ち足りるやろしな
422 名前:デフォルトの名無しさん [2022/12/19(月) 13:01:38.97 ID:mXgw/9zbd.net] 他人に馬鹿と指摘するのは事実だから仕方ない 本当のことを指摘されて何が問題なのか 己が馬鹿と指摘されると怒るのは本物の馬鹿
423 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 13:15:44.25 ID:eiDZy5960.net] まさに馬鹿の理屈
424 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 15:06:14.17 ID:6OeO29Qx0.net] 本当の事だから言っているだけ はいはい、そういう理屈ね? もし逆の立場だったら不快な気分にならないのかな??
425 名前:デフォルトの名無しさん [2022/12/19(月) 16:42:50.56 ID:mXgw/9zbd.net] ならないよ?俺は馬鹿だもの
426 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 16:51:32.03 ID:6OeO29Qx0.net] ~終了~
427 名前:デフォルトの名無しさん [2022/12/19(月) 16:56:24.98 ID:4PT5wSnn0.net] いまさらなんだが・・・ もしかして、件数がそれなりにあるエクセル処理の場合、VBAでDictionary処理できるやつは、いちどDictionaryにデータ格納してから処理したほうが圧倒的に速い?
428 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 17:25:10.73 ID:1gqjjPgXa.net] 何をやるかによるだろう 前から順に処理するだけならDictionaryへの格納は余計なオーバーヘッドでしかなく、確実に遅くなる
429 名前:デフォルトの名無しさん [2022/12/19(月) 18:11:27.44 ID:Q9Z7wkA40.net] 質問投げて回答待つほうが圧倒的に遅い
430 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 18:16:20.09 ID:b6fxVMaNM.net] 回答が付くまでの間は別の作業をしてるんだよ トータルの作業時間は丸投げのが短い
431 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 18:36:14.21 ID:7Pox60+BM.net] >>424 俺たちは箱の中の小人さんかよ
432 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 18:50:28.09 ID:Q9Z7wkA40.net] >>424 それなら処理が遅くても別の作業してればいい
433 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 22:06:24.01 ID:Dg3+0nUYa.net] 処理遅かったらマクロの意味ないじゃん
434 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 23:02:14.70 ID:U+dm2FUka.net] 俺はdictionaryが好きでよく使うなあ 「ソートキーを格納したdictionaryを受け取って任意のシートをソートするコード」とか、「キーワードを格納したdictionaryを受け取って任意の配列からそのワード以外の要素を取り除くコード」とか、そういう汎用モジュールを作りまくってる 「その引数、配列でよくね?」って自分でも思うのだけれど、なんとなくdictionaryにしちゃう
435 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 00:27:32.59 ID:12sT8XrZ0.net] >>428 それって文字列をオブジェクトに変換するとかできるの?
436 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 03:27:40.96 ID:TyME3A0jM.net] ソートならキーの順番は大事だろ もしかして 1:いち、2:にい、3:さん みたいなヤバイことしてるの?
437 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 08:00:11.66 ID:y6kIFm2Ha.net] そんな事は流石にしないだろう
438 名前:デフォルトの名無しさん [2022/12/20(火) 08:51:53.19 ID:7Yt8rmHX0.net] >>429 ? なんで文字列をオブジェクトに変換する必要があるの? 普通に考えてエンティティクラス作って その中に内部変数として持っておいて プロパティとしてやり取りするのが定石でしょ?
439 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 10:16:39.88 ID:paaoChG1d.net] VBAで意識高い系マウンティングは流石に草
440 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 12:08:52.82 ID:H/EitvuYa.net] >>431 で、どうやってキーの順序保証してるの?
441 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 13:00:22.05 ID:EWiE8iETa.net] 8万行×100列(うち、実際に使用するのは15列程度)のデータを 集計表に沿って集計しようとしてるんだけど君らならどういう手法使う? 集計の行は不定で列は日付とし、エラーは別シートに抽出する データを配列格納してfor nextで回したらすげー時間かかったわ 大人しくピボット作った方がいい?
442 名前:デフォルトの名無しさん [2022/12/20(火) 13:06:53.84 ID:qCWJzpQcH.net] >>435 fornextで何やるかによるけど、 ピボットが一番楽だと思う
443 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 13:08:52.62 ID:nk5JqEoYa.net] CSVで出力してPython あたりで
444 名前:デフォルトの名無しさん [2022/12/20(火) 13:23:47.04 ID:qCWJzpQcH.net] なんでcsvにしてpythonに投げるんだよw
445 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 13:27:22.78 ID:EWiE8iETa.net] >>436 やはりピボットかぁ 俺、VBAでピボットとテーブルを制御するの苦手なんだよねえ ちょっと練習するわ >>437 私はPythonを使えぬのだ! 勉強してみたいけどね
446 名前:デフォルトの名無しさん [2022/12/20(火) 14:09:44.13 ID:qCWJzpQcH.net] >>439 vbaとピボットの組み合わせが結構めんどくさいのは同意だけど、 そもそもピボットならvbaいらなくないか?
447 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 14:31:05.94 ID:EWiE8iETa.net] >>440 仰るとおり単なる集計だけならVBAいらないのだけど、 >>435 に書いた通り既定の集計表に沿って作成する必要があるから 作成したピボットからデータを拾って集計表に転記しなきゃいけないんだわ 集計表に載らないエラーデータのピックアップもしなきゃいけないし
448 名前:デフォルトの名無しさん [2022/12/20(火) 15:06:56.96 ID:qCWJzpQcH.net] >>441 なるほどなー 実データ見てないからなんとも言えないけど、 俺なら列を追加して、 関数かvbaで非集計対象にtrueを入れるなどしてからピボット、 という感じで運用すると思う
449 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 15:38:38.78 ID:EWiE8iETa.net] >>442 なるほど、サンキュ しかし、エラー判断のためだけに8万行を走査させたくないんだよね、、、 やるならピボット作った後でやったほうが走査数減りそう やはりVBAでのピボット操作特訓だな
450 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 16:29:18.40 ID:zXdo+CJId.net] そもそも行と列しか情報もらってなくて エラーになる条件もどんな集計してるかの情報もないんじゃ回答しにくいと思わないかね
451 名前:デフォルトの名無しさん [2022/12/20(火) 16:32:45.59 ID:qCWJzpQcH.net] 回答しにくいとかどうでも良くね しっかりとした質問ならまともな回答が得られるし、 曖昧な質問なら抽象的な回答になる それだけの事だよ
452 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 16:49:02.05 ID:GEZLb65NM.net] 数時間コースのマクロ走ってるの知らなくてブラウザでコピペしたらデータぶっ壊れて怒られた思い出
453 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 17:04:37.21 ID:EWiE8iETa.net] 確かに質問内容としては抽象的過ぎたね。 申し訳ない でも俺としては十分な回答だった 取り敢えずVBAのピボットを練習するわ ちなみにエラーってのは既定の集計表(マスター)から漏れたデータってことね。
454 名前:デフォルトの名無しさん mailto:sage [2022/12/20(火) 20:01:55.55 ID:H8HUrzHL0.net] いまどき8万行15列程度でスゲー時間かかるとは思えんが まあ俺なら素直にDBつかうけどな
455 名前:デフォルトの名無しさん [2022/12/20(火) 21:40:21.98 ID:0qEHdpxk0.net] >>435 WorksheetfunctionからCountifで存在確認。 Matchで行番号取得。 Rangeを変更しながらループしてすべての行番号を蓄積。 速いかどうかはわからんけど8万行走査するよりは工程は短い気がする。
456 名前:デフォルトの名無しさん [2022/12/20(火) 21:59:31.44 ID:7Yt8rmHX0.net] >>435 まあ集計がSQLで書ける範囲なら ADO接続でSQL投げて結果のレコードセットを シートに貼り付けて終わりにするわな
457 名前:デフォルトの名無しさん (オッペケ Srb3-iJiy) mailto:sage [2022/12/21(水) 19:10:54.88 ID:02wHfQMcr.net] 8万行100列をセルだけで処理しようとしたら凄く時間かかるのわかるけど、配列にいれて処理したらそんなにかかるか? それこそDictionaryで集計して結果だけ貼り付ければ充分だと思うんだが
458 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 19:53:43.42 ID:UD/g9Fdg0.net] いまだにXPとか使っててマクロが遅いとか言われてもね
459 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 21:05:37.19 ID:dQUtHKIl0.net] 同じスペックならXPのほうが10より早いけどな
460 名前:デフォルトの名無しさん [2022/12/21(水) 21:46:19.74 ID:muf0Z7I50.net] VBAが就活で必要になりそうなんだが、みんなはどうやって
461 名前:勉強してるか教えて欲しい おすすめの本とかyoutubeとか学習サイトとか pythonとSQLはちょっとわかる MOSのエキスパートレベルまでの知識はある VBAってある程度までいくと、具体的なデータがないと学習しにくいよね あちこちのシートの何千行のデータを連結、とか 理屈ではわかってても実際のデータ使わんと本当にちゃんと動くかわからんし [] [ここ壊れてます]
462 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 22:32:45.75 ID:7hKToO5Ta.net] >>454 上級者と言われている人達はみなMSヘルプで勉強しているみたい。 あとMSコミュニティとかで情報交換みたいな感じで。
463 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 22:51:14.09 ID:V+NyQzdG0.net] 自分で一から全部書いたりしない ネット検索してコピペ、ただし完コピじゃなくてちょっと手直しはする それでだいたいのことはできる
464 名前:デフォルトの名無しさん [2022/12/21(水) 23:02:51.38 ID:YheyKj3W0.net] 今ならchatGPTにでも聞いてみたら出てきそうw
465 名前:デフォルトの名無しさん [2022/12/21(水) 23:24:29.01 ID:S+DchzVEH.net] https://i.imgur.com/6KBuC1X.png マジかよ・・・
466 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 01:11:20.11 ID:ZPlCt5hk0.net] >>454 ググればvba100本ノックって出てくるからそれやればいいんじゃない?
467 名前:デフォルトの名無しさん [2022/12/22(木) 01:27:48.52 ID:7bAQ/DuzM.net] >>459 そんなサイトないよ。 「ハゲれば横山ノック」というサイトはあるけど。
468 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 03:47:51.66 ID:gJnKHw8ea.net] でもな、ネットの無い時代なんてそれこそイチから手探り状態で書いてきたんでしょ?? コピペよりそういった苦労重ねた方が身に付くのでは?
469 名前:デフォルトの名無しさん [2022/12/22(木) 06:31:04.10 ID:VSY8vUs50.net] >>459 100本ノックあったわ これやってみるか ありがとう あとVBAってみんなExcel付属のアレで書いてるの? vscodeの拡張見つけたからそっち使おうと思うけど問題ない?
470 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 07:04:53.76 ID:bPJoPsOK0.net] >>461 VBAに限らず苦労しないとダメってのは時代遅れなんだとさ
471 名前:デフォルトの名無しさん [2022/12/22(木) 07:18:24.23 ID:U22vDUep0.net] >>454 郵便局の郵便番号データを取り込んでいろいろやってたことはある。 郵便番号から住所取得とかキーワードを含む住所の郵便番号をユーザーフォームでポップアップさせるとか表示項目を可変させるとか。
472 名前:デフォルトの名無しさん [2022/12/22(木) 07:22:19.76 ID:U22vDUep0.net] >>462 基本VBEで書いてる。最終的にはExcelのモジュールやクラスに入ってなきゃいけないもんだし。 ただ複雑になってよく判らなくなったり他人のコードを解析したいときなんかはVScodeに張り付けて読んだりもする。
473 名前:デフォルトの名無しさん [2022/12/22(木) 08:27:50.14 ID:vkTy/rgK0.net] >>462 EXCELVBAのVSCodeのなんてあるのか まぁでもEXCELってRangeとかセル位置、 名前定義とかシート見ながらちょくちょく 走らせて確認する場合が多いから EXCELに付いているVBエディタで ブレイクポイント掛けてトレースしていく方が EXCEL単体の作業せあれば楽だと思うけどね .Net絡みだってUI絡みなら VS Codeより使えるならVSCoreの方が楽でしょ?
474 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 08:34:31.20 ID:vj5ZHJuLr.net] >>463 苦労しないとダメとは思わないけど、やっぱ自分で書いて実行しながら作ってった方が覚えるからあんまりネットからのコピペはしないな
475 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 09:07:55.33 ID:GhJnH83bM.net] まずはVBの構文からだね Subに()つけるだけでエラーになるからビビる 次はExcelの巨大なクラスライブラリ Applicationから始まるオブジェクトツリーにアクセスできればExcelとのI/Oは完璧だ コピペイヤーが理解していないのはデフォルトプロパティ いろいろ省略出来て便利なのだがハマることになるだろう やりたいことはマクロの記録ですぐ分かる ワークシート関数まで使うのが理想なので最終的には「Excelの使い方」が一番難しい
476 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 10:13:12.73 ID:YMkZN6Dm0.net] ネットがない時代は苦労したって言うけどさ、その「苦労」って結局は正解を手に入れるまでの「時間が長かった」ってだけのことなんだよね わからないことがあると図書館か本屋へ行って立ち読み、それの繰り返し ぐぐりまくるのとやってることは同じ
477 名前:デフォルトの名無しさん [2022/12/22(木) 13:55:10.49 ID:llMY0dtCH.net] いや、購入した本が間違ってる場合もあったんだよ 今なら複数のサイト比較して一番いいコードを参考にするって出来たけど、 当時は変な本に当たるとどうしようもなかった 良い本かどうかの判定も難しかった
478 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 14:10:57.81 ID:YMkZN6Dm0.net] >>470 情報の質にバラつきがあるのはネットも同じ 役に立たないサイトのがよっぽど多い
479 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 16:47:07.71 ID:lq0Ds6x10.net] でもさ、初期にExcelの指南本書いていた人達はどこで知識を身につけたのだろうか?? それこそ何も情報が無い時代なはず…
480 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 17:00:36.54 ID:nD0nOW6q0.net] いちばん最初は、分厚い説明書付いてきた 足りなければmicrosoftのFaxへ電話して 欲しい情報の番号押せばダラダラと何十枚ものFAX資料として引っぱり出せた 金有る奴は説明書の最後のページにある有料版の冊子を取り寄せてた ヘルプが充実してきてそれらは廃れた
481 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 17:16:41.62 ID:YMkZN6Dm0.net] >>472 昔はマイクロソフトが講習会とか開いてたんよ 1回何万円も払って授業を受けに行ったわ
482 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 19:04:05.80 ID:dL3lthyL0.net] >>469 趣味ならともかく曲りなりにもビジネスなら時間は重要だろ あと、ちょっとレアな手法(例はよくないかもだけど例えばクラスにデフォルトプロパティを追加する方法とか)は載ってる本を探しきれない
483 名前:デフォルトの名無しさん [2022/12/22(木) 19:55:30.36 ID:b1U2eBw5d.net] >>472 頭の弱い人の幼稚な発想だね 何歳?
484 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 20:17:52.60 ID:lq0Ds6x10.net] >>476 あんた、最近みんなから相手されないからって拗ねたレスするなよな。 職場でもそういった態度なんか?
485 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 20:53:21.34 ID:zxeRX39Sa.net] >>475 え?クラスモジュールでデフォルトプロパティ設定できるの?
486 名前:デフォルトの名無しさん [2022/12/22(木) 20:57:06.81 ID:b1U2eBw5d.net] >>477 自分がどんな馬鹿なことを聞いたのか理解できないのか? 真正の馬鹿だな
487 名前:デフォルトの名無しさん [2022/12/22(木) 21:07:40.03 ID:llMY0dtCH.net] >>471 だからネットなら比較簡単って言ってるじゃん 最初に見つけた解決法でハイ終わり!って小学生かいな >>478 気にしたこと無かったけど、凄い方法で実現できるようだ https://thom.hateblo.jp/entry/2015/02/16/003000 エクスポート、インポートでやっと実現するとか面白いコーディングだ
488 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 21:15:05.86 ID:dL3lthyL0.net] >>478 ちょっとトリッキーだしMSが保証してるかどうかがわからんから例としては良くないって書いたけど VBA クラス デフォルトプロパティ でググれば出てくるよ https://thom.hateblo.jp/entry/2015/02/16/003000 こんなのどうやって見つけたんだろう...
489 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 21:15:50.72 ID:zxeRX39Sa.net] >>480 この人のブログはかなり読んでたつもりだったけど この記事は完全に見落としてた ってか、この手法は面白いけどマニアック過ぎるね 後で試してみよう
490 名前:デフォルトの名無しさん [2022/12/22(木) 21:53:51.19 ID:VSY8vUs50.net] Range(Cells(7, 1), Cells(7, 3)) = "一括入力" Range(Range("A7"), Range("C7")) = "一括入力" Range(Cells(7, 1), Range("C7")) = "一括入力" Range(Range("A7"), Cells(7, 3)) = "一括入力" 結局セルの指定方法のひょうじゅんってどれなの?
491 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:20:04.73 ID:lq0Ds6x10.net] >>479 だからこっちがあんたに質問してるの もう一度聞く 職場でもそんな態度で過ごしてるのか?
492 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:31:11.78 ID:dL3lthyL0.net] >>483 範囲が固定なら Range("A7:C7") = "一括入力" 可変なら Range(Cells(R1, "A"), Cells(R2, "C")) = "一括入力" ' 行可変 Range(Cells(7, C1), Cells(7, C2)) = "一括入力" ' 列可変 Range(Cells(R1, C1), Cells(R2, C2)) = "一括入力" ' 両方可変 かな まあ他にもReSize( )使ったりケースバイケースかと
493 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:33:05.06 ID:GH82dNkB0.net] >>483 列の範囲だけだったらResizeかな
494 名前:デフォルトの名無しさん [2022/12/22(木) 23:10:32.55 ID:llMY0dtCH.net] >>483 そもそも一括入力する場面ってのがほぼ無いと思うが・・・ vbaでテンプレートを作らざるを得ないような状況なら、一番上かな。アルファベットでセル指定する意味は無い >>484 お前がアホだからアホみたいな意見が付いてるんじゃないか >>472 はちょっと酷すぎるぞ
495 名前:デフォルトの名無しさん (ワッチョイ 268c-Q+2S) mailto:sage [2022/12/23(金) 00:01:20.20 ID:ybGAYlyS0.net] >>483 Range("A7").Resize(1,3)="一括入力" Cells(7,1).Resize(1,3)="一括入力" これが一番応用効いて楽だよ
496 名前:デフォルトの名無しさん (アウアウウー Sa9f-3IAs) mailto:sage [2022/12/23(金) 00:11:39.80 ID:qKiD8YiAa.net] いつものかまってちゃんを相手するなよ。 スルースキルも身に付けろ
497 名前:デフォルトの名無しさん (ワッチョイ 9710-3IAs) mailto:sage [2022/12/23(金) 00:17:53.03 ID:cgp6NnPO0.net] >>487 都合の悪い質問に答えられないか。。 あんたさ、職場で上司や同僚から「取っ付きにくい人」とか「話かけにくい」って言われてないか? そういう性格早く正さないとハブられるよ?
498 名前:デフォルトの名無しさん [2022/12/23(金) 01:52:37.99 ID:9H6cWVdzd.net] >>490 馬鹿だと事実を指摘されて悔しい馬鹿
499 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 03:09:02.33 ID:QA4NKpfz0.net] 単なる雑談に噛み付いて謎のマウント取りはじめるとかキチガイだろ そんなやつに触れるなよ 無視が一番
500 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 08:29:10.87 ID:jHuJUdY9M.net] NG推奨:Sd8a-g3+u
501 名前:デフォルトの名無しさん [2022/12/23(金) 11:57:56.55 ID:UPL2DLzJd.net] 別ファイルの複数シート(日付ごと)の特定の値を日付ごとにとってきたい場合ってどうしたらいいんでしょうか
502 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 12:02:19.94 ID:qgR3sDVKd.net] 自分で書いてる通りのコードを書けばいいんじゃね 試しに書いてこれでいいですか?ってきいてみようぜ
503 名前:デフォルトの名無しさん [2022/12/23(金) 12:35:41.71 ID:urphUqXfM.net] マクロの記録で生成されたコードからスタート
504 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 13:27:34.05 ID:hEY6OCXna.net] 会社から他の社員にVBA教えてやってくれ、って言われたら素直に応じる?
505 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 13:38:51.27 ID:qgR3sDVKd.net] 業務命令で仕事のタスクとして依頼されるなら応じるだろ それとVBAを教えてやれって言われることなんてあるか? なんらかの業務で使ってる○○を直すからわからない事があったら質問してくるんで教えてやってくれ みたいな依頼じゃないのか
506 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 13:47:47.29 ID:D9+1PSvKr.net] でも大概適当な上司はそんなもん
507 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 15:22:20.31 ID:9qrIygbaa.net] ユーザーフォームを表示してテーブルにあるデータのうち任意のレコードを入力させるマクロを作っているのだけれど、テキストボックスにするべきかコンボボックスかそれともリストボックスをクリックさせるべきか、迷っている 皆さんはどういうUIにしてますか?
508 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 15:23:49.23 ID:XyJuHQV+0.net] 社長に好みを聞く
509 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 15:59:13.07 ID:qgR3sDVKd.net] 要件満たせるならどれも一緒だけどその3つの何で迷ってるか書いてみたら?
510 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 16:13:57.75 ID:9qrIygbaa.net] >>502 テーブルにあるレコードは100件くらいで、その中からなるだけ手っ取り早く入力できるようにしたいんですよね テキストボックスとリストボックスを併用してどちらか好きな方から値を取れるようにした方がいいのかなと考えています
511 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 16:36:35.72 ID:QA4NKpfz0.net] 上司に言われただけじゃ無理でしょ 本人のやる気がなければいくら教えても無駄 まずは自分で調べてできるとこまで書いてもらって、無理ならいくらでも聞いてって形式じゃないと教えられないわ そこらへんの講義してる先生じゃないんだから教材なんか持ってないのに1から教えるのは不可能
512 名前:デフォルトの名無しさん [2022/12/23(金) 17:32:52.63 ID:+XkEwRY60.net] お助けを願います Range("A1") = "=SUBTOTAL(103,A4:A300)" & """/""" & "COUNTA(A4,:A300)" 計算式の結果と結果の間に文字列のスラッシュを置きたいが上手くいきません
513 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:03:29.80 ID:qgR3sDVKd.net] >>503 じゃあそうすればいいのでは 作ってみて違和感あれば別の方法考えたらいいんじゃ >>505 CONCAT使えばいいんじゃない
514 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:28:53.74 ID:yAoZE/rR0.net] >>497 覚えるべきは、あなたです。末端は、組織が作ったシステムを使うだけでいい。 というべき。
515 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:40:22.55 ID:uM3VpDxWa.net] VBAのスキルが重宝される程度の職場なら、職務経歴書のいいネタと思って教えてやれよ それが済んだらお前はさっさとステップアップすればよい
516 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 18:53:30.35 ID:yAoZE/rR0.net] >>508 程度のレベルで身につくんだけど、実際日本人の9割以上はVBAなんて、出来ない。 よくエクセルマクロを使える割合見たいのがあるけど、ああいうサイトに行く人という母数でとっても3割程度。 実際は、まともな企業でも数百人に一人くらいしかいない。 だからVBAだけで神扱いされるんだけど・・・ 本来は、幹部こそ覚える技術なんだよね。 システム化って、まさに業務運用そのものを決めるようなものだから。
517 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:11:38.96 ID:PMhHGTDf0.net] AからFの列範囲に何行あるかわからないデータがあるとき データがあるセルの下に オートシェイプを線を入れるにはどうしたらいいですか? 標準の線では線種が少ないのでオートシェイプでいれたいです
518 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:30:37.54 ID:6wvtOpdna.net] >>507 本来うちの会社もそんな感じ考え方だったのだけど 部長(配列もfor eachも使えないレベルの自称VBA名人)が 旗振り初めたお陰でしょーもないVBA講座が始まったんだよ 俺自身は社内でVBA使えることを殆ど話したことなかったが、 お前もなんかちょっとは使えるみたいだから 講座受けて講師手伝えとか言われ始めたわ 下らなすぎてマジで憂鬱
519 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:35:41.52 ID:yAoZE/rR0.net] >>511 全員が使える必要はないんだよなぁ VBAで無駄な作業を消していくから、社員はむしろ削られる方向になる。 だから、末端がやると摩擦が起きるから、幹部がやるのが正しいんだけどねぇ…。 幹部がプログラミングできると、それを理解しているんだけどね・・・。 そもそもシステム化とは、業務運用・業務ルール・業務管理あらゆるものを交換の利く末端に強制的に行わせるものなんだから、それって幹部の仕事だよね?ってはなしなのにね。
520 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:42:26.59 ID:P8QL3kUaM.net] 自意識過剰
521 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 19:42:56.24 ID:imkEbUvu0.net] >>497 勤務時間内ならそれも仕事だから教えるが 編集の方法だけ教えて細かな内容は自分で調べるように伝える あとは「教えました」できないのは本人の勉強不足なので質問されれば答えるだけ
522 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:17:22.06 ID:dQOM9Mcwr.net] 仮に講義したとしても 「初心者にvbaの事をすべて教えるなんて不可能だから、取り敢えず基礎的な事だけ教えるか。配列まで教えるのは無理だな」 ↓ 「セルだけで処理したら30分くらいかかるし固まるし使えない」 ↓ 「配列使えばすぐ終わるよ」 ↓ 「そんなの習ってない。教えないほうが悪い」 ↓ 上司「何で教えないんだ。不備があるから評価下げる」 ってなる未来しか見えない 自分で調べる事ができるヤツは講義なんか必要なく聞かれた事に回答するだけで十分だしな
523 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:19:41.37 ID:GG/9dHCFr.net] 結局、講義したいなら有料の〇〇コースって外部の講義を使用するのが一番なんだよな 金がかかるコースなら明確に〇〇まで、って言えるし 金がかかんない内部での講義だと、最終的には教えないやつが悪い。講義するならちゃんと教えろって言い出すヤツは絶対いる
524 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:26:33.05 ID:Q+yAHYlca.net] セミナー行っても全員が自信を持って理解できたってことにはならないだろうしな。。 作った気にさせて終わりみたいな。
525 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 20:53:24.44 ID:imkEbUvu0.net] 聞かれたら教えるけど、聞かれなかったことは教えようがない 調べればすぐできるのになんで調べないのかわからない
526 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:00:03.44 ID:cgp6NnPO0.net] 本来、質問するならネット等に載っていない事例を聞くべきだよね。 ただこのスレに対する質問がガクッと減るがなw
527 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:06:01.97 ID:imkEbUvu0.net] あと、教わればどんなことでもできるようになると勘違いしている初心者も多い 考えるのと覚えるのは教わる側の問題
528 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 21:45:43.34 ID:qgR3sDVKd.net] >>510 マクロの記録で試しに線を引いてみたらコードを生成してくれるから それをみてあたりとかつけてみたらいいんじゃないの? 特定セルの座標はTop,Left 高さと幅はHeightとWidthで取得できるから計算して引いてみ
529 名前:505 [2022/12/23(金) 22:06:41.02 ID:G+gOrUWca.net] >>506 ありがとうございます concatなかったんでconcatenateを使いましたが同様にエラーが出てしまいました 基本から調べてみます スレ汚しすみません
530 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 22:21:44.94 ID:qgR3sDVKd.net] >>522 これでいいんじゃないの? Range("A1") = "=SUBTOTAL(103,A4:A300)&""/""&COUNTA(A4:A300)" Range("A1") = "=CONCATENATE(SUBTOTAL(103,A4:A300),""/"",COUNTA(A4:A300))"
531 名前:デフォルトの名無しさん [2022/12/24(土) 10:17:10.27 ID:4SoiJAnm0.net] >>522 セルに入れたい数式自体がエラーになる(間違ってる)からVBAでもエラーになってる。 セルに入れたい数式は下記かと。 =SUBTOTAL(103,A4:A300)&"/"&COUNTA(A4:A300) VBAで書き込む場合。.Formulaは無くてもいけるけど明確に数式として入れたい場合は書いといた方がいい。 Range("A1").Formula = "=SUBTOTAL(103,A4:A300)" & "&""/""&" & "COUNTA(A4:A300)"
532 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 13:34:40.02 ID:xbH5VpiM0.net] >>524 > "=SUBTOTAL(103,A4:A300)" & "&""/""&" & "COUNTA(A4:A300)" "=SUBTOTAL(103, A4:A300) & ""/"" & COUNTA(A4:A300)" じゃだめなの?
533 名前:デフォルトの名無しさん [2022/12/24(土) 13:48:48.91 ID:4SoiJAnm0.net] >>525 それでもいい
534 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 17:51:15.49 ID:45VxsXpS0.net] にんげんだもの
535 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 20:52:11.13 ID:04vSlPMR0.net] 正月はVBA三昧! コード書きまくるぞ~
536 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 10:24:03.69 ID:RFEZE8mMa.net] 休みでもVBA書くのか、凄いな 家だとVBAのネタがないからいまいちやる気にならない
537 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 12:52:26.69 ID:lugHnWiN0.net] え?みんな休日はExcelやらないの? 自分は隙あれば何かしらの練習してる。 勘と腕が鈍りそうな気がして。。。
538 名前:デフォルトの名無しさん [2022/12/27(火) 12:56:35.30 ID:4LpiodjLH.net] このスレに質問が来ればいくらでも回答するよ
539 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 14:46:03.57 ID:r8IxISV7a.net] 家だとVBAで作りたいネタが思い浮かばない、、 何を題材にして練習しているのか教えてくれると嬉しいな
540 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 14:52:53.05 ID:ITKU+yxr0.net] >>515 VBAを教えるのに必要なのは、講義の時間ではなく、「自分でも業務改善プログラムを作れた!」っていう成功体験だと思う。 処理速度云々は、相当後のほうでいいと思う。 ここで、資質があるやつと、そうでないやつがわかる。 資質のあるやつは、自分の作ったプログラムをさらに改善しようと、いじる。 このいじる作業をしているやつだけを見つけて、さらに教える。 改良作業をやってるやつは、理屈を理解し始めているから、いじれる。 そして、そのうちマニュアルやサイトでの調べ方と適用方法を理解して、自然と、命令数が増えてくる。 改良を試みてないやつは、たぶんプログラム自体、どっかから丸々コピペしてきて、それで運よく目的を達成できてるだけだから、動作原理わかってない。 ゆえに、次の問題を与えても、成長していないから組めない。
541 名前:デフォルトの名無しさん [2022/12/27(火) 15:30:01.29 ID:4LpiodjLH.net] >>532 このスレをずーっと過去に遡って、面白そうな奴を片っ端から解いていくだけでいいんじゃないか? 俺は毎日やってるから出来ないけど あと、vbaよりもスプレッドシートのGASのほうが色々出来て面白いよ
542 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 15:56:24.02 ID:lnirqxnTd.net] 雑談みたいな書き込みは自重すればいいのに・・・
543 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 18:13:52.44 ID:lugHnWiN0.net] いやならスレを開かなければ良い
544 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 23:00:25.77 ID:lvm99r8j0.net] いやなら5chやめればいいのに
545 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 01:04:02.08 ID:vaYWjZbJ0.net] いやならヅラを被れば良いのにな
546 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 20:47:21.58 ID:sL7xQ5iP0.net] いわなら砕けばいいのにな
547 名前:デフォルトの名無しさん [2022/12/28(水) 23:15:21.21 ID:5cqOgtBW0.net] いや奈良公園にせんべい持ってくと鹿に襲われるけどな
548 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 23:31:04.44 ID:iylgISulM.net] 人間用のせんべい持って行くなよ
549 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 06:52:02.69 ID:AIOxbE0/0.net] マジレスすると、2ちゃんねる時代からスレタイから脱線した内容になるのは普通だから。 それが気にくわないなら開かなきゃ良いだけ。
550 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 18:32:00.23 ID:tmwuu1S/p.net] 軌道修正レスも普通だから。 いやなら開かなければいいだけ。
551 名前:デフォルトの名無しさん [2022/12/30(金) 09:09:52.34 ID:WIIszMQ70.net] Excell2019 win10という環境で標準のVBEを使用しています。 ローカルインドウやウォッチウインドウにて多次元配列の中身を確認しながらデバッグを している時に、一個ずつ+マークを押して展開するのが不便に思っています。 一行ずつ動かしながら逐次中身の変化を追いかけたいので、ずっと展開しっぱなしにしたいです。 ボタン一発で配列全部展開してくれるとか、展開しっぱなしにするとか何か良い方法はないでしょうか?
552 名前:デフォルトの名無しさん [2022/12/30(金) 10:22:12.46 ID:xFabiT9dM.net] 無い。 配列の内容をワークシートに展開する関数を作って、 イミィディエトウインドウから 関数(配列) と実行。
553 名前:デフォルトの名無しさん [2022/12/30(金) 11:00:35.06 ID:zE3ePWnpH.net] 最初から個別の値をウォッチ式に入れておくとか a(0) a(1)
554 名前:544 [2022/12/30(金) 11:34:25.20 ID:WIIszMQ70.net] >>545 >>546 ありがとうございました。 個別でウォッチ追加します。
555 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 12:00:12.33 ID:MT1c2vte0.net] いえいえ
556 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 15:58:51.64 ID:IwLtnZMZ0.net] 複数のExcelファイルで作業をしていると、ふと見るとVBEの左側のツリーに立ち上げたファイル名がずらずら並んでいることがあります 普通はそのファイルを閉じればツリーから消えるのですが、たまに消えずに延々と溜まりまくるときがあります こうなるとメモリ消費しまくって最終的にはメモリ不足で動かなくなります こうなってしまうのはどんな理由が考えられるのでしょうか それとも、Excelは定期的に全部閉じる癖をつけておくべきなんでしょうか
557 名前:デフォルトの名無しさん [2022/12/30(金) 17:13:53.47 ID:zE3ePWnpH.net] >>549 Excelがファイル閉じるのを失敗している その場合、一度失敗するとそれ以降全部失敗する 再インストールか、メモリの増設した方がいいと思う あとLAN上にあるExcelファイルを開くとそれになりやすい
558 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 17:26:59.66 ID:esJPCknOd.net] >>549 マクロで開いてるならマクロがおかしいから private変数でブックを保持する様にしているならそれが解放されてないと起きるかと
559 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 17:56:14.08 ID:IwLtnZMZ0.net] >>550-551 ありがとうございます 他ファイル参照するために開いて閉じるようなマクロは結構多用してます 基本的には単純に開いてはデータ引っ張って保存せず閉じるというような内容ですが… 参照するファイルはLAN上ではありませんが、OneDriveの共有フォルダには置いてあります(ローカル保存) 一度この辺のマクロを見直してみたいと思います 原因がわからなければ再インストールしてみます
560 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 19:08:24.88 ID:k0Mu53Mo0.net] >>549-552 ウチもマクロで他の個別ブックを開いて その中のマクロを実行して上書き保存・当該ブックを閉じる をやってたけど、VBEの左側ツリーに閉じたはずのブックがズラズラ・・・ 開くブックが70個ちょっと、中のクエリーをテーブルとして変数に設定するところで いつもコケるようになった。 ブックの保存先はいずれもローカル。 操作するブックと操作される個別ブックの変数、プロシージャ名は 重複しないようにしていたがダメ。 次のブックを開くインターバルを1秒~とか、 クエリーはテーブルオブジェクト変数に入れているので、 毎回Nothingを入れてみたがダメ。 結局、地域毎に開くブックを50個くらいに収まるように 操作するブックを分けた。 ブックを割り当てる変数と、 それを保存・閉じる記述を見直してみようと思う。
561 名前:デフォルトの名無しさん [2022/12/30(金) 20:11:23.30 ID:zE3ePWnpH.net] >>552 onedriveか、あれもLANと同様になんか変な挙動になっている 僕はあまりの挙動不安定さにスプレッドシートに逃げたよ 閉じる動作・共有に関して、もっと突き詰めたほうがいいかもしれない カンだけど僕がやるなら以下のような形です。解決するかどうかは不定。 ・開いたExcelを、一回activebookにしてから閉じる ・適度に、OSに処理を返す。forを使っている+時間が掛かっている場合、適当にDoEvents()を挟んでみると改善する可能性があります ・onedriveの挙動が予測できないので、一旦ダウンロードフォルダなどにコピーしてから使ってみる。 どうも共有フォルダはタイムラグがあるのか、意図しない非同期になってしまい良くないことが起こっている気がする。 非常に問題を捉えづらい、難しい問題と思います。頑張ってください
562 名前:デフォルトの名無しさん mailto:sage [2022/12/30(金) 20:26:56.53 ID:esJPCknOd.net] >>553 WorkbookやWorksheet含めてObjectは順序だててNothingするようにしたらそんなこと起きないとおもうよ set oWB = xxx set oWS = oWB.xxx なら set oWS = nothing set oWB = nothing という順ね 面倒でもNothingで解放するクセつけたほうがいいと思うぞ
563 名前:デフォルトの名無しさん [2022/12/31(土) 09:58:21.76 ID:doxP0Tnc0.net] マクロの管理・閲覧ってみなさんはどうしてるんでしょうか? 基本的にはブックの中に保存してるとは思うんですが ブック開かないと中身確認できないですよね? 何らかのファイルに中身を保存して、たとえばvscodeなどのエ
564 名前:fィタで開いたりするのでしょうか? [] [ここ壊れてます]
565 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 10:37:26.00 ID:YncayN1e0.net] 俺は普通にブックをSVNでバージョン管理してる 差分を見たい時は見たいバージョンを保存して最新版と保存したバージョンから各々エクスポートして差分を取ってる VsCode の拡張もあるみたいよ ⇒ >>462
566 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 11:33:27.48 ID:h8iAJsoLd.net] >>556 ブックのマクロを別ファイルに保存するということはコードの2元管理になるからしない 普通にブック開いてVBEでみるだけでそれで困ったことはない 別のブックのコードを参照したい場合は一時的にそのコードをコピペしてエディタで見ることはあるけど終わったら削除してる 何度も手直しするような事もないからバージョン管理もしてない
567 名前:デフォルトの名無しさん [2022/12/31(土) 12:12:05.76 ID:60VcS97wH.net] >>556 特にしてない 昔はよく使う「最終行の取得」や、「set〜」なんかをまとめたブックを作ってそれをコピペしていたけど、 コピペしないほうが早い事に気づいてからはそういうのもなくなった 高速化もよほどじゃない限りしなくなったな。
568 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 14:12:00.31 ID:QIMjPb7U0.net] vbaでファイルを開くダイアログを出させて、ユーザーに任意のシートを指定させ、 VBA側でそのシートオブジェクトを取得して、解析をするというものを作ろうとしています。 よろしくお願いします。 ttps://oshiete.goo.ne.jp/qa/3042408.html こちらに「シートを選択させてアクティブにする」というコードがあります。 ttps://www.kurumico.com/excel-vba-file/315/ こちらには「ファイルをダイアログから選択指定して開く」というコードがあります。 単純に組み合わせたら願望はかないました。 そこで質問したいのは MyDialog.Controls.Add(ID:=957).Execute これが一体何なのかということです。 エクセル2019の左下にあるシート一覧を左右に移動する ← → このマークのところで右クリックをすると同じようなシート選択ダイアログが出てきます。 そして選ぶと、アクティブになります。 957を一覧から探してもこういう説明を見つけられないでいます そういう理由からCommandsBarsもControls.addもイマイチ理解を深める事が出来ずにいます。 どこかいい説明サイトがありますでしょうか?
569 名前:デフォルトの名無しさん [2022/12/31(土) 15:46:44.58 ID:60VcS97wH.net] >>560 無かった 一応コードの意味から '新規コマンドバーを一時的に追加する Set foo = CommandBars.Add(Temporary:=True) '上記にコマンドID957を追加し、実行する。2はスペルチェック。多分1はダミーコードでなにも起こらないはず。 foo.Controls.Add(ID:=957).Execute で、この957って何って質問なんだろうけど、これはシート選択ダイアログのIDと思われる。 普通は定数名で設定し、マジックナンバーは使わない。 foo.Controls.Add(xlSheetList).Execute 'のような形になるはず 定数名とIDの対応表がどこかにあるはずなんだけど、全然見つからない。もしかすると無いのかもしれない。 使い方は公式を見るのが早い https://learn.microsoft.com/ja-jp/office/vba/api/office.commandbarcontrol https://learn.microsoft.com/en-us/office/vba/api/office.commandbarcontrol.id 一覧はこれだと思うけど、そこにも載ってない https://www.microsoft.com/en-us/download/details.aspx?id=50745 ただこのコマンドリストを一時的に利用するというテクニックは、これ以外に使い道は無いと思うから そんなに深く考えなくてもいいと思うよ
570 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 16:01:13.15 ID:jV5H7FOV0.net] 俺もID=957が何なのか探したけど見つからんな 昔のExcelでもちゃんとシート選択ダイアログは出てくるからVBAが付いてるOfficeならバージョンによって動かないみたいな事は起きないと思われるが これが気持ち悪い場合は適当な選択フォームを作った方が良いだろうね
571 名前:560 mailto:sage [2022/12/31(土) 18:56:24.99 ID:QIMjPb7U0.net] >>561 >>562 調べていただきましてありがとうございました。 これで質問を解決とさせていただきます。 深く考えない事にしますが、これを初めて見つけた人はどうやって見つけたのでしょう…
572 名前:デフォルトの名無しさん [2022/12/31(土) 19:13:19.72 ID:60VcS97wH.net] >>563 昔はそういう一覧が合ったんだと思う で、マイクロソフトが更新忘れて、忘却していると思う (別に作る義務はないんだけど) マイクロソフトに言えば、作ってくれるかもね
573 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 20:36:02.66 ID:2V6bSqaW0.net] >>563 debug.Print CommandBars.Add(Temporary:=True).Controls.Add(ID:=957).Caption 「シート一覧(&S)」 これで存在を確認できるね for-nextで総当たりして見つけたんだろうね リボン以前の時代に
574 名前:デフォルトの名無しさん mailto:sage [2022/12/31(土) 22:52:34.11 ID:J15SQ39W0.net] マイクロソフトのサポートに聞けば有償で教えてくれるだろ
575 名前:デフォルトの名無しさん [2023/01/01(日) 02:02:13.06 ID:WHfKVncD0.net] 素人質問で申し訳ありません。 G行(列?)にワンクリックで時刻を出るように Private Sub CommandButton1_Click() End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("G2:G30000")) Is Nothing Then Exit Sub Target.Value = Date Cancel = True End Sub とvisualbasicで入力しました。 でワンクリックで「時間:分:秒」は出るようになりましたが、全部「0:00:00」 になってしまいます。今の「時間:分:秒」が出るにはどうしたらよいでしょうか。 ちなみにセルの書式設定で「時刻」⇒「13:30:30」の設定にしてあります。 よろしくお願いいたします。
576 名前:デフォルトの名無しさん mailto:sage [2023/01/01(日) 02:13:01.01 ID:U+Y4eA/v0.net] Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("G2:G30000")) Is Nothing Then Exit Sub Target.Value = Now Cancel = True End Sub
577 名前:567 [2023/01/01(日) 02:19:43.81 ID:WHfKVncD0.net] >>568 ID違うかもですが早急なご回答感謝です。 下から3行目のDateをNowに変更いたします。 ID:U+Y4eA/v0様とご家族の今年一年の 健康をお祈り申し上げます。
578 名前:デフォルトの名無しさん mailto:sage [2023/01/01(日) 09:02:52.64 ID:QhZkuHz30.net] 凄く初歩的な事かもしれませんが、自力でわからなかったので教えてください。 コマンドボタンが3つあって、そのうち1つがエラーで止まるとします。 エラーで止まるボタンをA 正常なコードになっているBとCみたいな Aを押してエラーが出たらVBE画面が開いてしまいます。 そしてVBE側のリセットボタンを押さないと処理がリセットされません。 これを気にした事はありませんでした。 しかしこれから他人に使わせたいので 【1】エラーが出ても一時停止ではなくて初めから完全停止になって欲しい。 【2】エラーが出てもVBE画面が開いて欲しくない こういうのはどうすれば良いのでしょうか?
579 名前:デフォルトの名無しさん mailto:sage [2023/01/01(日) 09:28:20.79 ID:l9m14P5Y0.net] >>570 【2】はOn Error Go To を使ってエラーが出たら処理を辞める方法がある もしくはエラーが出る特定のところのみOn Error Resume Nextを使ってエラーを無視して、その時にErrオブジェクトが値を持つかを見て値を持ってたら処理をやめるとか 【1】は無理 というかエラーが出ることが分かるならエラーが出ないように直すべき 個人で使うのならいいけど、他人に使わせるのにエラーが出たままは相当マズい
580 名前:デフォルトの名無しさん [2023/01/01(日) 09:31:32.39 ID:N3XMs5RAH.net] >>570 エラートラップはかなりしっかりやっといたほうが良いけど・・・ 対処法として、gotoとresume nextがある gotoはちゃんとした分岐 resume nextはエラー完全無視でそのまま実行し続ける。 後者は超危険だけど、自作ゲームぐらいならこれで済ませてもいいと思う Sub foo() On Error GoTo err foo2 = 0 / 0 '0で割り算 MsgBox "エラーはありませんでした。通常終了です" Exit Sub '正常終了 err: MsgBox "エラーが起きたので終了します" End Sub Sub bar() On Error Resume Next bar2 = 0 / 0 '通知 If err.Number > 0 Then MsgBox "エラーが起きたようですがそのまま実行しました" End If End Sub
581 名前:570 mailto:sage [2023/01/01(日) 13:29:35.26 ID:QhZkuHz30.net] >>571 >>572 無理でしたか… 「エラーが出たら一旦エクセルを再起動してもらって、私がコードを直すまではそのボタン触らないで」 っていう事にしようかと思います。 >というかエラーが出ることが分かるならエラーが出ないように直すべき ハっとしました。 On Error Go To処理はエラーが出るの前提みたいで使うのいやだなと思ってましたが、 エラーを前提にしてたのはよっぽど自分の方でした。 解決です。ありがとうございました。
582 名前:デフォルトの名無しさん [2023/01/01(日) 20:36:34.67 ID:QH48KlFOM.net] 新年早々馬鹿か こんなのが作ったものを使わされる人達可哀想
583 名前:デフォルトの名無しさん mailto:sage [2023/01/01(日) 21:09:46.92 ID:ZzHbs0In0.net] >>574 おまえのほうがバカだよ
584 名前:デフォルトの名無しさん [2023/01/01(日) 21:18:44.46 ID:gVENJcWpd.net] >エラーが出たら一旦エクセルを再起動してもらって いや、馬鹿だろこいつ
585 名前:デフォルトの名無しさん mailto:sage [2023/01/01(日) 21:33:46.27 ID:uPXSUIhV0.net] 他人に使わせる品質でないことは確かだな
586 名前:デフォルトの名無しさん mailto:sage [2023/01/01(日) 22:55:58.30 ID:SDgcSZSgr.net] >>573 「エラーが出たら一旦エクセルを再起動してもらって、私がコードを直すまではそのボタン触らないで」 これはいいけどさ、そもそもエラーが出るって分かってるものを使わせるのはヤバいだろ エラーを出さないようにしてから使わせるか運用制限を書いとくかするのは必須だろ それでもエラーが出た場合はそう言うのであって、最初からエラーありきはどう考えてもおかしい
587 名前:デフォルトの名無しさん [2023/01/01(日) 23:30:29.85 ID:gVENJcWpd.net] >>578 よくないだろ どんなエラーかどういうデータでエラーになってるかをエクセルを終了して全部消して連絡くださいと書いてるわけだ 馬鹿過ぎて片腹痛い
588 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 00:23:35.65 ID:WJKKDxmM0.net] >>579 そうだな エラーが出た時点で連絡するべきだ ただ「馬鹿過ぎて片腹痛い」これは言うべきか? こういうことを言ったら萎縮してスレに書き込む人が減るだけ メリットがなにもないどころかデメリットしかないことを言う意味はない
589 名前:デフォルトの名無しさん [2023/01/02(月) 00:43:21.31 ID:qD3952vu0.net] エラー地雷が必ずあるボタンとか怖すぎる マクロの結果は元に戻せないから、コードの先頭に関係するブックをセーブするように書くことをお勧めする
590 名前:デフォルトの名無しさん [2023/01/02(月) 00:49:52.66 ID:4s2WSfqGM.net] >>580 内容も吟味せずに脊髄反射で書き込んで馬鹿を擁護するお前のような奴が馬鹿を蔓延らせることに気付くべき
591 名前:デフォルトの名無しさん [2023/01/02(月) 02:07:30.17 ID:u1h4+miEd.net] >>580 >>560 にも答えられない馬鹿に言われてもな
592 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 09:35:04.20 ID:WJKKDxmM0.net] >>582 お前の書き込み内容、有益な情報が一つもないじゃん 「内容も吟味せずに脊髄反射で書き込んで馬鹿」ってお前の事?
593 名前:570 mailto:sage [2023/01/02(月) 11:24:49.11 ID:5oIC6wjS0.net] なんだかすみません。 今回は主にファイルオープン関連で「絶対にエラーが出ない全てに対応したコード」というのが 書く自信がありませんでした。勉強不足です。 今も一つわからないのですが、例えばマクロと同じフォルダにあるBookAを開いてる状態で、 BookAファイルをさらにオープンしようとするとwin10office2019の当方環境においてエラーが出ないのですが、 これは基本的に他のパソコンでもエラーが出ないのでしょうか? winxp以降office2000以降あたりであれば大丈夫なものなのでしょうか? 別フォルダにある同名ブックを開こうとするとエラーになります。 こちらは開く前にファイル名で既に開いてるブックを確認するコードを追加しようとみたいなサイトが いくつも見つかるので解決したのですが、既に開いてるファイル自身を開く事が成功してしまう ケースを通常と思ってエラーの出ないコードと考えてよろしいのでしょうか?
594 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 11:57:58.32 ID:C7IOio2r0.net] 初心者が思い込みで作ると失敗する 開発環境と実行環境がバージョンやパッチも含めて違うなら同じ環境で動作の確認をするしかない 作ったら終わりではなく、条件を変えても正しく動作するかを確認するくらいやれよ 長いファイル名とか共有フォルダとか、サイズ0に壊したファイルとか作って試すなど
595 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 13:14:15.32 ID:cWlG9T3F0.net] 当たり前だけどファイル操作はVBAの知識以外にOSの知識もある程度必要になるから聞かなきゃ判断できないような処理ならやらないが吉かと。 開くのは諦めてせいぜいファイルの存在確認程度にとどめておけば?
596 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 13:45:13.52 ID:N69RPsxQd.net] >>585 自分はWin10+Ofiice365だけど 開いているファイルと同じフォルダのファイルを開こうとすると開いているファイルがアクティブになって 別フォルダの同名ファイルであれば同じ名前のファイルは開けないってエラーになるから 古いバージョンでも一緒なんじゃないかと思うけど 回避したいならWorkBooksの内容をチェックして同じファイル名があればメッセージを出して処理を止めるなりすればいいんだと思うけどね 古いバージョンでもチェックしたいなら単純にフォルダA、フォルダBに同じファイルをいれて両方開けるか試してもらうだけでいいと思うぞ
597 名前:デフォルトの名無しさん mailto:sage [2023/01/02(月) 14:06:13.66 ID:v+YqJ02u0.net] 多分だけど、手動で同一ファイルをダブルクリックで開くような操作では無く 開いたファイルを元に「新しいウィンドウを開く」のようなコードを書いてると思う いろいろとオリジナルというか無手勝流というか、な制作してるようだし、個人利用に留めとけ と忠告しておきたい ま、他人からコテンパンに罵られて伸びるタイプも居ない訳でも無いから、ご自由になんだけど(例えばMS社 毎月バグって世界中から罵られても知らん顔してアプデを続けるし)
598 名前:570 mailto:sage [2023/01/02(月) 21:56:15.06 ID:5oIC6wjS0.net] ありがとうございました。 完璧なコードって、人間の行動を全て読むレベルのとんでもない高度な行為ですよね… プログラムに携わりたいなら甘えずに向き合うべき課題なんだと思います。 年末年始みたいな時くらいしか勉強出来ないの悔しいですね。
599 名前:デフォルトの名無しさん [2023/01/02(月) 22:55:02.83 ID:qD3952vu0.net] 上の方でエラーが出たら自分でコードを修正するって書いているから解決方法は知っているんだろ? なら、Do loopとOn Error Go Toを使ってエラーが解決するまで、知っている限りの解決コードを全て書けばいいと思うが
600 名前:デフォルトの名無しさん [2023/01/03(火) 00:15:50.12 ID:QpUipTPJH.net] >>590 全てって言っても場合によるよ 入力内容のチェックなら数値文字列エラー値ぐらいでほぼ網羅できるけど、 ファイルを開いたりアクティブになったりってなるとExcelやOSとの兼ね合いも出てくるからほんとキツイ 通常操作の9割をカバーできればいいと思う あとは起きたエラーに都度対応していくしかない
601 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 00:27:15.59 ID:mykrlOkz0.net] >>591 ファイルロックとかは可愛いもんでウイルスに実行ファイルを書き換えられたとか、アクセス中に停電とか、HDD不安定とかもしもを考えだすと切りがない
602 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 01:34:33.44 ID:JZU75e4ya.net] VSCode では、同名のファイルでも、パスが異なると開ける。 a/a.txt, b/a.txt みたいに判別できる そもそも、そういう事を想定していないアプリがおかしい。 アプリを作る際に、これぐらい誰でも分かる
603 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 01:35:01.24 ID:JZU75e4ya.net] VSCode では、同名のファイルでも、パスが異なると開ける。 a/a.txt, b/a.txt みたいに判別できる そもそも、そういう事を想定していないアプリがおかしい。 アプリを作る際に、これぐらい誰でも分かる
604 名前:デフォルトの名無しさん [2023/01/03(火) 01:52:28.54 ID:r5MucSoo0.net] アルツハイマーでもこれくらい分かる
605 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 06:33:04.83 ID:t9t/KRTz0.net] 最初にon error resume nextを書いとけばランタイムエラーを出さずに原因不明の謎の挙動だけで済む もし時間に余裕があれば目星を付けた処理の直後でif err<>0 thenでエラーになってないかチェックする エラーの検出後はon error goto 0でエラーをクリアして再度on error resume nextを仕掛ける これぐらいいい加減でもVBAの場合は許されるから覚えておくといい
606 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 06:33:48.96 ID:cXTWG1PB0.net] >>593 でた、極論で語る奴w お前は毎回そこまで考えてコード書いてるのかよ
607 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 06:35:37.55 ID:cXTWG1PB0.net] >>594 むしろダメなのはメジャーなソフトではExcelぐらいだと思うぞ...
608 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 12:03:30.64 ID:fDnSRX1A0.net] 読み込みに失敗、書き込みに失敗程度の動作確認は初心者でなければやると思ってる あとはエラーコード吐いて、異常がでた場合○○を確認してくださいとかで対応 フリーズしない、ファイルを壊さない、間違った表示をしないように作るのは最低でもやってほしいもんだ 俺ならそうするがみんなは違うのかな?
609 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 12:39:40.67 ID:a1UWVOIma.net] まあテストをどこまでやるかは状況次第だけどファイル関係をエラートラップしてリトライなりエラー表示をするのは普通だと思う 書捨てとか自分しか使わないならエラートラップを端折ってあえてVBAのエラーで止めるとかはある 個人的にないのは>>597 みたいなエラーの握りつぶし
610 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 13:00:34.65 ID:NsWNvAiQa.net] まともな開発だとエラー握り潰しは絶対ダメだけどVBAだからなあ 必ずエラーが出るゴミみたいなマクロは珍しくないから、いっそ握り潰してくれた方がマシだと思うことはある
611 名前:デフォルトの名無しさん (ワッチョイ 1a7c-xGsa) mailto:sage [2023/01/03(火) 13:33:35.71 ID:mykrlOkz0.net] >>598 アホが食いつかんかなと思って恣意的に書たんたがこれほどとはw こどおじには解らんだろうが絶対落ちてはいけないシステムならそのくらいの対策は普通にされてるぞ
612 名前:デフォルトの名無しさん (ワッチョイ 9a01-+uJR) mailto:sage [2023/01/03(火) 13:40:10.21 ID:cXTWG1PB0.net] >>602 VBA だから握りつぶしても良いと言うのはよくわからん まあモダンな言語に比べてエラー処理がやりにくいと言うのはあるけど
613 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 13:49:00.13 ID:cXTWG1PB0.net] >>603 VBA で書く絶対落ちてはいけないシステム! 本でも出せば?w
614 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 14:02:20.98 ID:mykrlOkz0.net] >>605 おいおい俺はVBAとは言ってないぞ お前が勝手に吹いてるだけなんだが自覚できんのか
615 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 14:07:51.30 ID:mykrlOkz0.net] VBAでは絶対に落ちてはいけないシステムとかいう発想自体がシロウト臭丸出しでハズいな
616 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 14:09:48.88 ID:mykrlOkz0.net] 正月からこんなとこでイキってる程度だから仕方ないか w
617 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 14:34:55.58 ID:jJKJi0M8a.net] >>606-608 スレタイ100回読んで来年までROMっとけ
618 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 15:58:29.44 ID:zc6LNDpCd.net] >>593 なんてハードウェアやその周りのソフトの対策であって開発するアプリケーションで考慮する話ではないと俺も思ってるけどな まあ戻れないところまで追いつめられて必死なんだろうけどそろそろ落ち着いたらどうかね
619 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 05:43:45.27 ID:kI1B+abx0.net] やりたいことあって今日人生で初めてプログラミングに触れたんですけど、ぜんぜんわかりません idが_rって書いてあるから_rって書いてんのになんでこれでエラー吐くんでしょうか 助けてください https://i.imgur.com/xYbWeZX.jpg https://i.imgur.com/KMcczJ7.jpg
620 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 09:18:44.49 ID:9L/11j8r0.net] まずインデント揃える所から覚えようか
621 名前:デフォルトの名無しさん [2023/01/04(水) 09:44:30.63 ID:fU7igCvDH.net] >>611 Seleniumでスクレイピングしようとしてるのは分かるけど、 その部分だけコード見せられても分からない 全部見せて
622 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 09:54:05.40 ID:lFNs7lW+0.net] てかエラーの内容も書かない奴の相手すんなよ...
623 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 10:34:18.99 ID:2ktLmHHjd.net] これって前澤じゃんけんで金もらえるから自動化したいとかそういう事考えてるんじゃね?
624 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 11:05:45.68 ID:lFNs7lW+0.net] モチベーションの起点はなんでもいいだろ 俺だってエロ画像見たいからperl覚えた口だし
625 名前:デフォルトの名無しさん [2023/01/04(水) 11:22:52.20 ID:fU7igCvDH.net] >>615 まさにそれだね 招待すると挑戦回数が増える 謎アプリをインストールすると100円ぐらいもらえる という仕組みらしい プログラムを覚える同期としてはとても良いと思うが、 登録とか色々必要だからめんどくさくて検証できないな
626 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 11:28:33.03 ID:2ktLmHHjd.net] >>616 おれは教えないだけだから別にかまわんよ そもそも今さらそんなこと聞いてる奴だから他でも聞いてるかもしれんし作れるとも思えないしな
627 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 11:33:57.55 ID:lFNs7lW+0.net] 教えないなら黙ってりゃいいのに...
628 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 17:52:13.99 ID:YWyY+Uw80.net] おまえもな
629 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 19:22:28.05 ID:Hj1uvutd0.net] 教えないぞー! 俺は教えないぞー!!
630 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:38:59.74 ID:SsOt/AigF.net] それよりもグー、チョキ、パーがr、s、pになる理由を誰か説明してくれ
631 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:45:41.73 ID:FttywtqZ0.net] 英語版の頭文字
632 名前:デフォルトの名無しさん [2023/01/04(水) 23:17:45.40 ID:J/WGQ1Ed0.net] 自己解決しましたありがとうございます
633 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:03:16.68 ID:iBplyV5pr.net] すみません、質問させてください Listのようなものに最大5000行のデータを表示、編集、Excelに保存したいです 可能なツールと良ければアドバイス等頂けないでしょうか
634 名前:デフォルトの名無しさん [2023/01/05(木) 12:18:42.51 ID:fXFdLaAK0.net] Excelを使ってみたらどうかな
635 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:36:59.21 ID:f8HxjLWUd.net] Listってなに? 俺には意味不明だけど他の人には通じるのかね
636 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:45:31.09 ID:8BS+8waCa.net] >>625 PowerApps使えば一行もコード書かずにできるよ
637 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:51:12.92 ID:BoetuCcOH.net] >>625 それ本当にExcelそのものじゃん 新しいウィンドウを開くとか試してみて
638 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:53:15.69 ID:iBplyV5pr.net] >>627 listviewなどです listviewはコード以外に画面編集可能ですか?
639 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:55:06.72 ID:BoetuCcOH.net] シートに書いてそれをlistviewに反映させればいいんじゃないかな
640 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:55:24.41 ID:SJZhIGhQ0.net] エクセル2019とそこに付随するVBAでは日付の起点が違うのですか? ちょっと調べると1900年をうるう年と勘違いしてるとかなんとかでてきます。 44932とセルに手打ちしてから日付に直すと2023/1/6になります。 =Now()をセルに入力して数値表示すると44932、しかし日付にすると今2023/1/5 VBAは1899/12/30=1でエクセルは1900/1/1=1ということでしょうか? それでもつじつまがあわないのですが。
641 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:59:20.88 ID:iBplyV5pr.net] >>631 それを嫌っている人達がいるんですよ であればlistview等を使用してどうにかするしかないですが、そこまでするならVBAでやる必要が無いと思ってます
642 名前:デフォルトの名無しさん [2023/01/05(木) 13:09:13.57 ID:oKKcVbTt0.net] 僕ちゃんの頭の中にはlistviewと勝手に名付けた理想のツールが存在しますということか
643 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 13:14:36.43 ID:BoetuCcOH.net] >>633 う~~ん、Excelが駄目な理由がよくわかんないな キャッサバとか使ってみては?? https://forest.watch.impress.co.jp/library/software/cassavaedit/ もしくはスプレッドシート+googleform使うとか >>632 「数値」は四捨五入されるから同じに見えるだけだよ。シリアル値を確認する時は、小数点も表示した方がいい ちなみにmac版が1900年-1904年ぐらいがうるう年かlotusかなんかの関係でズレている。1905年以降からは全てのバージョン・マクロで同じシリアル値になる
644 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 13:15:31.72 ID:BoetuCcOH.net] >>634 通じるからいいじゃん 無駄な煽りはやめよう >>633 いい忘れてたけどlistviewじゃなくてlistboxかなんか
645 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 13:33:51.27 ID:f8HxjLWUd.net] >>630 どんな編集したいのか不明だけど楽したいならAccessでもいいんじゃない そもそも質問が漠然としすぎててListの形式もわからんし 単一項目や相関項目の入力チェックとか何がしたいかも不明なんだよね 質問する側も回答欲しいなら要件を書き出せないと適切な回答もらえないぞ
646 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 13:34:51.53 ID:kWWCj/ior.net] >>635 項目が50近くあって混乱するからといった理由ですね 他の人はできてますしそれくらい覚えられると思いますが、とにかく多量のデータを見ると混乱するそうです
647 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 16:58:29.73 ID:f2A56PmY0.net] >>632 ちょっとだけじゃ無くて、もっと調べると簡単に理由が出て来るじゃん で、1900年の日付のデータを扱う必要が頻繁にあるのだとしたら、もっと詳しく調べて間違いが無いようにしとかないと
648 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 18:51:14.37 ID:EwaN69BP0.net] >>636 通じないよ Excelシートが閲覧、編集すべての点で最適
649 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 19:13:27.32 ID:E/ecJHKW0.net] 何なら良くて何がダメなのかハッキリさせておかないと何度もやり直す羽目になるパターンだな
650 名前:632 mailto:sage [2023/01/06(金) 03:18:12.99 ID:6MUppODp0.net] >>635 明日の昼くらいの時間に=Now()を小数点表示させてみます!感謝です!
651 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 07:15:36.61 ID:Kv5xGipe0.net] 昨日Sessionで「トランプの影響力低下」 と断言した北●さん 面目丸潰れ
652 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 12:14:29.82 ID:nHEEKyAQr.net] >>640 通じないなら通じる人が答えるから通じない人は黙ってればよくね?
653 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 19:13:43.70 ID:dhf9eLfP0.net] 便秘じゃしょうがないな
654 名前:デフォルトの名無しさん [2023/01/06(金) 21:21:30.88 ID:eBXD7Bag0.net] >>642 セルの書式との組み合わせだから、セルの書式を意識しないと「標準」ではまる。 Excelの「標準」はExcelだけにしかわからないから、Excelで閉じた世界でないから使わない方がいい。
655 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 13:21:26.68 ID:BFQrwMXK0.net] 配列=range("A1:C3") と格納した配列にrange("A5:C8")を追加で格納したいです この場合、配列の要素1つづつに格納していくしかないのでしょうか?範囲をまるごと格納できますか?
656 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 18:18:20.53 ID:rkRkNs/h0.net] ぐぐれば配列を結合してくれる関数が出てくるよ
657 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 18:45:14.41 ID:XI+ZuMXx0.net] ぐぐれとかの用語を初心者は知らないんじゃね
658 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 21:17:42.27 ID:KZGY+9uwH.net] >>647 用途がよく分からんけど、普通に文字列で結合していけばいいのでは? オブジェクトで返す事もできる Sub foo() r = "a2:b3" r = r & "," & "e3:f4" r = r & "," & "h3:i4" Range(r).Value = 1 Set ra = Range(r) ra.Activate End Sub Intersect辺りでもなにかできそうかも?と考えたけど、 全然できないかもしれない
659 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 01:02:59.56 ID:mpsC9VsR0.net] オブジェクト指向って Range.Offset(1).value みたいな事でしょうか? 自作関数って基本は引数渡して返
660 名前:り値貰ってみたいな手続きするだけの存在ですが、 それをオブジェクトを作る関数(Rangeオブジェクトみたいなものを生み出せる関数)にして、 その関数から出てきたオブジェクトは メソッドA、メソッドBが使えて、プロパティA、プロパティBみたいな状態も持っている みたいな考えの元に組んでいくとオブジェクト指向なプログラミングになるのでしょうか? それはやはりそういう形式を取った方が、少ない脳みそでも複雑化に対応できるという事なのでしょうか? 同じ機能を持ったプログラミングを後から書き直す事があります。 勉強を進めた結果、「もしかしてこういうルールで書いた方がわかりやすいかも」みたいに思って書き直します。 うまく行くと複雑だと思っていたものがとてもチープで難易度の低いものに見えてきます。 オブジェクト指向はその極致みたいなものですか? [] [ここ壊れてます]
661 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 02:37:15.71 ID:FOdy7Dic0.net] >>651 >みたいな事でしょうか? それはメソッドチェーンという記法で、オブジェクト指向言語から生まれた副産物 一見便利で、実際これが無ければVB/VBAはとっくに廃れていたと思われる ただしメソッドの呼び出しと中間オブジェクトの生成で毎回コストが掛かるため、 複数同じような処理を書く場合は一旦適当な変数で受けるか、VBAの場合はWithステートメントでまとめた方が良い
662 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 02:50:51.43 ID:Z6otLx+Dd.net] オブジェクト指向の原理主義的には、関数の戻り値はあまり積極的に使用すべきではない でもドットで階層を掘っていくのは頭悪い人にもわかりやすいから、VB系のエセオブジェクト指向ではわりとよく使われる
663 名前:デフォルトの名無しさん [2023/01/08(日) 03:26:30.83 ID:nZw+zsKC0.net] >>653 「関数」という自分しかわからない用語の定義で話すのはやめろ
664 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 08:20:15.45 ID:oIS5HnAUM.net] オブジェクト指向には大きく分けてクラスベースとプロトタイプベースの2種類の流派がある ちなみにExcel VBAのオブジェクト指向はどちらとも言えない傍流としか言いようがない 本格的にオブジェクト指向を学ぶなら別の言語の方が良い
665 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 11:07:33.40 ID:9yImgFMvH.net] >>651 エクセルvbaの場合、オブジェクト指向かどうかは考えなくていいよ オブジェクト指向かどうかは、オブジェクトをメインに据えるかどうかによる しかしエクセルvbaは「エクセル」という超巨大なオブジェクトが中心なので、 普通に書いてたら勝手にオブジェクト指向になる
666 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 11:19:24.04 ID:ardQjEVJ0.net] そもそもWindowsというOSを使ってる時点で、すべてのアプリは「Window」オブジェクトの上で転がってるだけ
667 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 12:08:40.63 ID:6Q9yzQxXM.net] オブジェクトの設計図そのものを作って組み合せていくスタイルがクラスベース(C++やC#など) 半完成品のオブジェクトに手を加え加工したクローンを作って組み合わせていくスタイルがプロトタイプベース(JavaScript/TypeScriptなど) Excel VBAは完成品として用意されたオブジェクトをそのまま利用するスタイル (VBAのクラスモジュールは変数や関数を単純 にまとめるだけでクラス自体の拡張性はほぼ無い)
668 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 23:34:49.21 ID:9yImgFMvH.net] sheetクラスを継承できれば・・・ いやできなくてよかった
669 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 00:09:50.06 ID:2yNmR2Eh0.net] VBAのオブジェクト指向機能は、あくまでCOMを使うために設計されてると言っていいよ OfficeやC++その他で作成されたCOMを利用するだけだし クラスを作ったりできるのはおまけで、VBAでそこからさらに派生なんてことは誰もやらないし
670 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 08:59:03.23 ID:YumOwVoa0.net] できないからやらないだけできるなら派生とかやりまくってると思う
671 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 12:03:48.87 ID:ruGKlfL0H.net] あまり考えたくないな
672 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 13:50:58.25 ID:iDst/v4Qd.net] 現代的なオブジェクト指向ではクラスの継承はあまり使用せずインターフェイスを使うので、クラスを派生できないこと自体はそれほど問題ではない とはいえVBAでクラスを使うべきでないのは同意する
673 名前:デフォルトの名無しさん mailto:sage [2023/01/10(火) 19:35:26.63 ID:2zy2vhhW0.net] オブジェクト指向は考え方の一つとして知っていればいい
674 名前:デフォルトの名無しさん mailto:sage [2023/01/10(火) 19:47:40.17 ID:10oUx2C+a.net] VBAのたとえなんちゃってオブジェクト指向でもクラスは普通に便利じゃん 俺はカプセル化もオブジェクト指向も正直どうでもいいから Publicで書いたりすることも少なく無い
675 名前:651 mailto:sage [2023/01/11(水) 00:58:56.65 ID:UjJptVS80.net] オブジェクト指向の話は自分にはまだ早かったようです。 時間のあるときにC++やC#の世界がどんなものか覗いてみようと思います。 ありがとうございました。 ちょっと初歩的な事で質問をしたいのですが、 UserForm1の方に Private Sub ButtonEnter_Click() FormData = TextBox1.Value Unload Me End Sub とあるとします。エクセルシート側のコマンドボタンに登録してるマクロには Public FormData as Variant Sub Sample() FormData = 1 UserForm1.Show vbModeless MsgBox FormData end Sub みたいにしてパブリック変数でフォームの入力値のやりとりをしようとしています。 しかしこれを実行するとユーザーフォームが表示された直後にMsgBoxが1表示してきます。 原因はvbModelessまでは調べが付きました。 RefEditでvbModeless使うとボタンが反応しなくなりエクセルの強制終了しか手がなくなる事も。 win10office2019環境特有かもしれませんが。 そこで質問ですがvbModelessって本来どうやって使うものなのでしょうか? この挙動だと何にも使えない気がするのです。 処理がShowで止まらずに進んでしまうので入力値を受け取れませんし。 処理を止めるコードとセットで使うのでしょうか? RefEditでは絶対にvbModelessは正常に動作しませんか?
676 名前:デフォルトの名無しさん mailto:sage [2023/01/11(水) 07:07:46.99 ID:ESDkH7B7d.net] 画面表示後に後続のコードを実行させたくないなら vbModal にしないとだめ vbModeless のままで作りたいなら後続のコードを画面側にもっていくか ブック側に別のPublic関数として用意して画面側から実行するなりしないとだめ vbModeless は画面を表示した状態でもブック側を操作できるようにしたいときに指定するものなので そういう事をしたいときに使いましょう
677 名前:デフォルトの名無しさん [2023/01/11(水) 07:14:17.28 ID:pPL7W2Oc0.net] >>666 vbModeless は単純にユーザーフォームを表示したままEXCELシートを編集できるようにするか 否かなので、入力待ちのような場合には不要ですね。 本来の使い方というか、特徴からしてフローティングツールボックスみたいなことができる感じ? Photoshopとか見たことあるとイメージしやすいかな。。。 必要かどうかは置いておいて例えば、、、 複数のマクロが作ってあるEXCELファイルでシート上のコマンドボタンでマクロ呼出ししようと すると当然、別シートに移ると使えなくなるけどvbModelessのユーザーフォームに作っておけば シートを移ってもボタン一発で呼び出せる、みたいな? あとはテーブルがいくつか作られているシートでテーブルを渡りながら編集する必要がある場合、 目的のテーブルのみを表示させるマクロを登録しておけば簡単にアクセスできるようになる、とか。 どちらもどうでもいい使い方だけどw ユーザーフォームとのデータの受け渡しならココを参考にしてみては? 関数化して引数でやりとりしてしまえばいいような気がする。。。 https://excel-ubara.com/excelvba3/EXCELFORM010.html
678 名前:666 mailto:sage [2023/01/11(水) 10:17:37.94 ID:UjJptVS80.net] >>667 >>668 ありがとうございます。 パブリック変数よりFunctionの戻り値をうまく使うっていう方がいいのですね。 UserForm_Initializeもいらなくなりそうですね。 フォームが増えていくとフォーム毎に渡すよう受け取るようのパブリック変数作って ちょっと管理しづらいなと思っていましたのでいい勉強になりました。 Hideも使っていきます。 モーダルだとフォーム出てる間、タッチパッドの二本指スクロールが正常に動作しなくなるので そのためだけにモードレスに魅力を感じていました。
679 名前:666 mailto:sage [2023/01/11(水) 10:30:30.16 ID:UjJptVS80.net] >>668 ちなみにそのサイトにあるdoModalというフォーム側に書くパブリック関数名ですが。 今試したところ、標準モジュールと違ってPublic Subで同名のdoModal関数を フォーム毎に一つずつ名前重複エラーにならなかったんですが、これを仕様として受け止めて フォーム側の呼び出し関数を全部同じ名前にしてしまっても安全でしょうか? フォームが5個あるとして、別々の呼び出し関数を作るのは名前を憶えれないどうせ 呼び出し時には 標準モジュール側で 受け取る変数名 = FormName.doModal(引数1,引数2) みたいにするので別にdoModalにこだわりませんでが フォーム名.Initializeとか、フォーム名.ShowMeとかにする危険性はありますでしょうか?
680 名前:デフォルトの名無しさん mailto:sage [2023/01/11(水) 10:47:26.82 ID:fNRPVgbqM.net] オブジェクト指向ですね
681 名前:デフォルトの名無しさん mailto:sage [2023/01/11(水) 11:07:44.33 ID:ESDkH7B7d.net] >>670 標準モジュールに宣言するPublic関数とは違って ユーザーフォームに宣言するPublic関数はユーザーフォーム名.XXXのような記載をして呼び出すので同名の関数でも構わない (XXX単独では呼べない)
682 名前:デフォルトの名無しさん mailto:sage [2023/01/11(水) 11:12:01.18 ID:ESDkH7B7d.net] >>670 VBEの画面でF2を押下するとオブジェクトブラウザが表示されるから 自分で作った変数や関数がどういう管理をされているかみてみるといいかもね
683 名前:デフォルトの名無しさん mailto:sage [2023/01/11(水) 12:42:00.54 ID:R7jAcCIud.net] >>670 > みたいにするので別にdoModalにこだわりませんでが > フォーム名.Initializeとか、フォーム名.ShowMeとかにする危険性はありますでしょうか? 頭にshowをつけてユニークな名前にすることは個人的にはよくある。 initializeはつけたことないけどユニークな名前なら平気なんじゃないかな。ただVBA側で用意されている名前に酷似してしまうから避けるけど。
684 名前:670 mailto:sage [2023/01/11(水) 14:39:04.35 ID:UjJptVS80.net] >>672 そうですよね。自信持って決まった名前のやつ使い回します。 >>673 見る習慣なかったですが見ないと理解は深まらないやつですねこれは。 >>674 予約語とぶつからないよう気を付けます。 グローバル変数のやりとりなくしたら右上×ボタン閉じでエラーが出る原因が突き止められなくて苦労しました。 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then Cancel = True Me.Hide End If End Sub 右上×ボタンで閉じるとShowの次の行に制御は戻るのに、モジュールレベルの変数は 値をクリアされてしまうのですね。 とりあえずグローバルのやりとりは卒業できました。ありがとうございました。
685 名前:デフォルトの名無しさん [2023/01/11(水) 23:25:55.84 ID:DN2jjrph0.net] オブジェクト指向では 多態性を覚えて初めてその恩恵を実感すると思う。
686 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 01:03:37.94 ID:kydlVtmO0.net] >>676 多態性とは… プログラムの経験が浅いとイマイチ具体例が出て来なくてモヤモヤっとした状態から抜け出せませんね。 VBAはオブジェクトは作れないけど、元々作ってあるオブジェクトの利用は出来るんですよね?多分 as objectとされるものは大体、オブジェクト名.プロパティ名とかオブジェクト名.メソッド名みたいなの持ってますよね。 継承というのは、Range.InsertとRange.EntireRow.Insertみたいな親クラスのメソッドを 引き継いでる子クラスみたいなことなのでしょうか。 今の経験量ではどれだけリファレンスサイトを読んでもピンときません。 残念ですし、アドバイスを活かせず申し訳ないです。 オブジェクト指向と非オブジェクト指向の境目がわかるようになるまで深入りしないようにしようと思っています。
687 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 01:27:45.18 ID:285P/eUV0.net] VBAはそもそもちゃんとしたオブジェクト指向言語じゃないから ちゃんとしたオブジェクト指向言語やらんと、その境目なんてわからんよ
688 名前:デフォルトの名無しさん [2023/01/12(木) 05:03:44.98 ID:DzjvAA7t0.net] そうね Object指向の概念はVBAだけやってれば 人によっては一生身につかないかもね。 この手の参考資料が一番多いのはやっぱりJavaになるのかなぁ。 VBAと文法が近いVB.Netでもあまり見かけないね。アレもIObject指向言語なのに。
689 名前:デフォルトの名無しさん [2023/01/12(木) 14:53:02.95 ID:HTRe+k0wd.net] >>679 お前には見つけられないだけ
690 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 15:01:56.40 ID:LJFXYIUK0.net] vbscriptでwin32apiのキーダウンを使おうとしているのですが、 キーダウンは検知できるのですが、標準入力に
691 名前:押したキーが入ってしまいます。 この標準入力を削除することはできないでしょうか もしくはキーダウンが標準入力にならないようにする方法はないでしょうか [] [ここ壊れてます]
692 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 15:37:08.41 ID:EIUtrygUd.net] ここはExcelVBAのスレなのでスレチです
693 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 18:59:52.86 ID:UVTOHIyL0.net] vbsのスレは気持ち悪いからねえ win32apiコールとか何でもできるpowershellを検討しよう
694 名前:デフォルトの名無しさん [2023/01/12(木) 21:50:28.71 ID:YA4W27ZxM.net] でもパワーシェルはダブルクリックで起動できないって ところが
695 名前:デフォルトの名無しさん [2023/01/12(木) 22:14:31.34 ID:HTRe+k0wd.net] >>684 馬鹿にはできないだけだぞ
696 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 22:22:53.89 ID:Iq4TKL6o0.net] >>684 バッチからPowerShell呼べばいいだけ
697 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 22:26:21.46 ID:9uITPonqM.net] PowerShellのスクリプトは.ps1ファイル 普通に起動できる
698 名前:デフォルトの名無しさん [2023/01/12(木) 22:27:21.44 ID:DzjvAA7t0.net] >>680 そうなんかな? VBAのデザインパターン扱ってる本なんて見たことないけど
699 名前:デフォルトの名無しさん (スッップ Sdb3-kOMB) [2023/01/12(木) 22:47:57.75 ID:HTRe+k0wd.net] >>688 VB.NETの方
700 名前:デフォルトの名無しさん [2023/01/13(金) 05:15:26.60 ID:60PuJGcsM.net] パワーシェルでやってみます
701 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 06:09:05.42 ID:pezk+gKQa.net] オブジェクト指向の典型は、Ruby on Rails。 派生ばっかり おまけにRubyは、メソッドチェーンで関数型プログラミングもできる ウェブ開発では、ガチガチのオブジェクト指向で、 テキスト処理では、Linux のパイプラインみたいなメソッドチェーンの両方を使うから、 あらゆるデザインパターンの宝庫 おまけに、Stack Overflow によると米国年収ではトップ。 Rubyは9.3万ドル、多くの言語は6.5万ドル、PHPは5万ドル
702 名前:デフォルトの名無しさん [2023/01/13(金) 09:12:44.75 ID:ZL1fQ8g50.net] >>691 でも 日本ではVBAより平均年収安いって記事 前このスレに挙げられてたよね
703 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 13:37:47.00 ID:wDcYqAP4a.net] また何かにつけて馬鹿馬鹿って連呼するヤツが来たか。揚げ足の取り合い、誹謗中傷スレになるのも時間の問題だな 荒らしにイチイチ構っているお前らも同罪
704 名前:デフォルトの名無しさん [2023/01/14(土) 15:05:35.60 ID:Ta24dazVa.net] そんな馬鹿な
705 名前:デフォルトの名無しさん (ワッチョイ 8663-+y77) mailto:sage [2023/01/14(土) 16:08:53.73 ID:2YQsutp50.net] Rubyはほんとにオブジェクト指向の学習に向いてるのに5chだとキチガイのせいで勧めづらい いい加減消えてほしい
706 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 21:16:02.63 ID:MMspDEqhH.net] 今ruby勧めたらボッコボコにたたかれるだろうな
707 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 03:52:20.14 ID:N2qBk67x0.net] 新年明けましておめでとう 今年はここの住人に《禿》とか《馬鹿》とか《氏ね》とか言われない事を目標にするぞ!
708 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 09:48:56.12 ID:OWvGRTxwH.net] >>697 禿ましておめでとうございます
709 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 22:39:41.40 ID:aQZF8rrya.net] 氏ね
710 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 01:40:45.06 ID:EHand8Cf0.net] >>682 VBSからWin32api呼ぶのにVBA使わんの?
711 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 03:47:49.20 ID:O4/VkLb30.net] 別の確実な方法があるのにそんなもん使わないのでは
712 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 04:20:04.61 ID:MheiSf/Y0.net] VBA使ってAPIコールするなら最初からVBAで作るだろ... 何が悲しくてvbsなんて使うんだよ
713 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 07:47:36.98 ID:6JcN0E/Sd.net] >>700 ここは”Excel”のVBAスレです
714 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 07:56:54.09 ID:pOVzc0STH.net] もう忘れたけどvbsの方がいい場面があることはある ただもう二度と使う事はないだろう
715 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 11:52:06.85 ID:9WgehSBk0.net] Excelのスレだったのか?
716 名前:デフォルトの名無しさん [2023/01/16(月) 11:57:18.10 ID:ySDGoo7La.net] スレタイ読めないのか
717 名前:デフォルトの名無しさん (オッペケ Sr6d-O4H0) mailto:sage [2023/01/16(月) 12:02:48.00 ID:saP8Jzxpr.net] >>705 流石にこの発言は馬鹿と言われても仕方ないな
718 名前:デフォルトの名無しさん (スップ Sdea-f6s+) mailto:sage [2023/01/16(月) 12:10:40.38 ID:6JcN0E/Sd.net] Excelにかぎらなければこっちにスレがあるからこちらへどうぞ VBAなんでも質問スレ Part3 https://mevius.5ch.net/test/read.cgi/tech/1631184381/
719 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 12:19:23.79 ID:saP8Jzxpr.net] >>708 質問するにはこっちのスレの方が平和的でいいな このスレには人をバカにしてマウント取るような人間しかいないし
720 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 12:29:47.52 ID:Y+j2ikJL0.net] それはw 自分の発言読み返して反省しろよw >>705 はボケただけだろ 客席がドッ!と沸くトコだぞ
721 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 12:40:01.09 ID:jJVBcCwBa.net] ガチでボケてるのか後出しでボケたことにしたいのか どちらにせよ>>710 が恥ずかしいことに変わりはないなw
722 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 18:41:31.88 ID:9WgehSBk0.net] スレの住人のカラーや雰囲気全然違ってワロタww ここは人をバカにして楽しむクソスレww
723 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 19:21:15.63 ID:2xniVU/jM.net] winapi使いたいならexe作れよ 古いけどVB.NETのコンパイラ入ってるから
724 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 21:08:05.75 ID:6JcN0E/Sd.net] >>712 ここにはスレタイも読めなければスレの趣旨も理解できずにただ雑談にくる人も多いからね クソスレにしてるのはあなたみたいな人だって事を理解したほうがいい
725 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 21:21:18.66 ID:uo4zKdp70.net] >>703 エクセルのVBAだろ? ワードのVBAなんか使わないぞ?
726 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 22:19:09.74 ID:BSKY6W440.net] たまに勘違いしてVBの質問してくる人とかいるくらいだからな。
727 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 22:29:25.09 ID:lscX0yJQ0.net] vbaとribbon customuiって直接関係ありませんが、マクロをribbon customuiから利用を考えています。 ネットやyoutube等調べて試したのですが、タブやボタンが表示されずに困っています。 また2007と2010でxmlnsの名前空間指定方法が異なることも理解しているつもりです。 2010以降を想定しています。 環境:Excel for Microsoft 365 MSO (バージョン 2212 ビルド 16.0.15928.20196) 64 ビット ribbon_test.xlsm(zip) _rels, customUI, docProps, xl, [Content_Types].xml マクロ Module1.main _relsの.rels <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId3" Type="(略)" Target="docProps/core.xml"/> <Relationship Id="rId1" Type="(略)" Target="xl/workbook.xml"/> <Relationship Id="rId4" Type="(略)" Target="docProps/app.xml"/> <Relationship Id="rId5" Type="schemas.microsoft.com/office/2007/relationships/ui/extensibility" Target="customUI/customUI14.xml"/> </Relationships> customUIのcustomUI14.xml <?xml version="1.0" encoding="utf-8"?> <customUI xmlns="schemas.microsoft.com/office/2009/07/customui"> <ribbon><tabs> <tab id="CustomTab" label="Custom Tab"> <group id="customGroup" label="Custom Group"><button id="member" visible="true" label="Custom Button" size="large" imageMso="HappyFace" onAction="Module1.main" /></group> </tab> </tabs></ribbon> </customUI> ご教授お願いいたしますm(_ _;)m
728 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 23:43:37.93 ID:lscX0yJQ0.net] 自己解決できました。 お騒がせしました。
729 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 20:59:44.95 ID:ta9bzp4r0.net] なんやねん
730 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 07:37:02.75 ID:40XBuhhWH.net] VBA知らないのですけど シート間やブック間の情報のやり取りには コールバック関数みたい非同期処理をしてるんですか?
731 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 07:47:03.02 ID:hjMxdzIvH.net] >>720 オブジェクトのプロパティを書き換えたり取得したりする 超古い言語だよ
732 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 08:01:59.36 ID:40XBuhhWH.net] 書き換えや取得してる間はコードの実行は待機し 書き換え、取得が済んでからコードを再開するってことなのでしょうか?
733 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 08:06:32.97 ID:hjMxdzIvH.net] >>722 書き換えや取得するコードを書く やって見た方が早い
734 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 08:33:41.90 ID:WQbdwelX0.net] コールバックではなくCOMという概念で実際のところプロセス間通信している VBAの場合多分インプロセスなので他の手段より有利 シートやブックに対してコールバックする処理ってあったっけかな
735 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 08:42:01.19 ID:hjMxdzIvH.net] >>724 色々あるみたいだけど、vbaで使う場面って思いつかない。ってかバグりそうでやらない方がいい気がしてならない・・・ https://qiita.com/Kamo123/items/e676e0cbe6de83410980
736 名前:デフォルトの名無しさん (ラクッペペ MMde-VZwO) mailto:sage [2023/01/19(木) 09:20:35.66 ID:IH8Q0Y2+M.net] Excelのオブジェクトを外部から弄るつもりならVBAよりもCOMアドインやVSTOアドイン、Office Scriptsなど別の方法利用を検討する方が良い気がする
737 名前:デフォルトの名無しさん (ラクッペペ MMde-+m4i) mailto:sage [2023/01/19(木) 10:50:54.77 ID:hkE7HGyaM.net] >>722 その通り データの書き換えしている様子も見えるから仕事しているなって気がしてくる
738 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 13:24:17.21 ID:4qclTsLf0.net] イベントはコールバック
739 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 19:42:15.97 ID:Dvqs9CAA0.net] 例外処理の悩みなんだけど、 普段、オプションでエラーをクラスで停止するように設定している その状態でクラスでErr.Raiseすると、標準モジュールでOnErrorGotoステートメントで受け取れないけど皆さんはどうしてるんですかね?
740 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 19:46:40.02 ID:Dvqs9CAA0.net] オプションを変えれば標準モジュールで受けとれるんだけど切り替えが面倒
741 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 20:51:52.93 ID:4qclTsLf0.net] 普段からオプション変えとけばいいんじゃね クラスモジュールで中断って、使いどころがわからん
742 名前:720 mailto:sage [2023/01/19(木) 21:58:24.97 ID:40XBuhhWH.net] みなさん、ありがとうです >>727 様、ありがとうです web系はユーザーの待機ストレスをなくすために コールバックを多用しますけれど 事務系は一つの処理が終わってから次の処理に移るって なんだかそんな感じを受けました ありがとうございました
743 名前:720 mailto:sage [2023/01/19(木) 22:00:12.46 ID:40XBuhhWH.net] >>728 イベントはコールバックしかないですものね
744 名前:デフォルトの名無しさん [2023/01/19(木) 23:05:36.09 ID:eT7lxKel0.net] 外部取り込みデータでcsvファイルを QueryTablesメソッドを使用して、TextFileColumnDataTypesを文字列では取り込むとデータの後ろに半角スペースが入ります。 これなぜでしょうか? 標準で取り込むと半角スペースが入らないです。 やりたいのが数値などを文字列で取り込んだ時に、先頭の0を表示させて、E形式で表示されてる数値を全部表示させたいです。 今、文字列形式で取り込むと必ず全データの後ろに半角スペースが入ります。半角スペースが入らないように取り込みたいです
745 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 23:47:25.42 ID:XtxzJxUF0.net] >>734 そのcsvメモ帳で開いて 本当に生データに半角入ってないの?
746 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 01:33:26.94 ID:W1xzt6Zf0.net] シートが2つあって、片方非表示にしようとしたら、最低1個は表示しろって怒られるの何で? 非表示にする1行手前でデバッグプリント取ったけど、間違いなく2つとも表示されている。 単体で実行すると問題ないが、新規ブック作ってシートを2つに増やしてからやるとエラーになる。 DoEvents入れても駄目、On Error Resume Next入れてもエラーで止まる。 ワケわからん。
747 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 01:44:54.53 ID:ptsQI5JN0.net] その非表示にする行が悪いんじゃないの 御託はいいからコード貼れカス
748 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 02:56:01.96 ID:W1xzt6Zf0.net] 悪くない。 1行手前では2シートともVisibleは-1を返すから、前後がどんなどんなコードでも関係ないだろ。
749 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 03:42:39.52 ID:iiD2fqs40.net] コード貼れ
750 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 06:53:35.87 ID:WgMHwss/0.net] >>736 ブック2つあってその片方を丸ごと非表示にしょうとしてるとか
751 名前:デフォルトの名無しさん [2023/01/20(金) 07:00:14.46 ID:Q4AfyMd20.net] >>735 半角スペース入ってないです アクセスから抜いてきたデータなんですけど、何回やっても入るんですよね
752 名前:デフォルトの名無しさん [2023/01/20(金) 07:46:13.25 ID:z8VJTXTl0.net] もうACCESSに直接ADO接続して値取って来たら?
753 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 08:00:52.80 ID:ayeW68tCd.net] 質問者がよくわからない現象だから質問してくるんだろうけどそういう人の質問だといまいち状況がつかみにくいから オリジナルでなくてもいいから現象が再現するサンプルコードでも提供すれば解決しやすいのにね そういう事ができない人多いよね
754 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 08:13:31.91 ID:9/vVytdyH.net] >>743 ^^;
755 名前:デフォルトの名無しさん [2023/01/20(金) 09:37:46.21 ID:phBDDUUBd.net] >>742 結局、全部にトリムすることにしましたわ
756 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 02:59:07.37 ID:ZfbTiSBFr.net] 総合スレからこちらに誘導されて来ました マクロ記録は使えるけどVBAは使えないのに。。 【1 Windows10】 【2 Excel2019 】 【3 いいえ】 【4 否】 普段横書きで印刷をしているシートを 月一回の報告資料のみ、範囲を変えて縦書きにして印刷する必要があります それでマクロ記録を使って印刷範囲を絞り込んで縦書きにして印刷をするボタンを作成してみたのですが、問題は印刷範囲の最終行が毎回変わるのでその最終行に合わせた範囲指定にするにはどうしたら良いでしょうか? CTRL+↓を記録は出来ないみたいだし。。 印刷範囲の最終行に透明な「※」でも打ち込んでそこまでを印刷というような事は出来ますでしょうか?
757 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 04:22:08.36 ID:H5hcEaoi0.net] >>746 印刷範囲(ActiveSheet.PageSetup.PrintArea)が設定されている前提で dim printrange, lastRow ' 現在の印刷範囲のRangeオブジェクトを得る set printrange = ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea) ' 実際の最終行を得る lastRow = ActiveSheet.Cells(printrange.Row, printrange.Column).SpecialCells(xlLastCell).Row '最終行を変更したRangeオブジェクトのAddressを印刷範囲に設定する ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range(ActiveSheet.Cells(printrange.Row, printrange.Column), ActiveSheet.Cells(lastRow, printrange.Column + printrange.Columns.Count - 1)).Address
758 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 07:02:51.83 ID:liCBEODDH.net] >>746 これを機にVBA使いになりましょう そんな難しくないですよ まずはダミーデータと マクロで記録したコードを張ってみてもらえますか?
759 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 09:23:02.19 ID:DWiRZY6Xr.net] >>747-748 ありがとうございます マクロ記録はボタンを押すだけなので簡単ですが VBAになると一気に難易度が。。 1980年代のDOSの前のBASICはちょろっとやってたので本気出せばなんとかなるかもですが 分かりやすい書籍、動画、講座とかありますかね?
760 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 10:59:00.69 ID:Zr2lAE610.net] そも、縦書きと横書きという独特の言い回しが相手には伝わりにくい あいうえお ← 横書き あ い ← 縦書き 普通に読んでればこう捉える う え お でもそれでは無くて、帳票の状態が普通はA4横長で印刷してるものを、月イチではA4縦長で印刷したいとかなのか ほんとうに文字ごとタテ並びにしてしまいたいのか 後者なら敷居が相当高いけど しかし、初めて白状した状況だと相当の高齢者が毎月なんらかの帳票を印刷するのに苦心している様子からして 自治会の会計資料だのそういう方面だとも考えられる 自分でサンプルを提示するのが困難なら、どっかのサイトで似たような状況を探って画像検索でもしてみて「こういうのをこうしたい」と書かないと伝わり難い 自治会用のExcelサンプルなんかゴロゴロ転がってるし、それを参考にするとか流用するとか 見立て違いなら失敬 しかし、単に「印刷範囲」をその都度指定するだけで簡単に解決するような質問のような気もしてる
761 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 12:20:46.74 ID:qZakY6uUr.net] >>750 打ち出しているのは零細企業の売上報告資料です 経営陣と上司が高齢者なので今まで長年使い続けて来た会議資料のフォーマットは原則何も変えてはならないという前提の作業です 売上が得意先の売上高順に並べられている資料で 右側に売上の内訳があります 単純にA4縦をA4横にして印刷するわけでは無くて列の削除が2列必要になり、その列を単純に削除すると関数が埋められてるのでエラー表示に
762 名前:ネるので、手作業だと毎回大変だったので、マクロ記録を使って自動的に印刷出来るようにしました ところが一つだけ上手く行かなかったのが 今回の印刷範囲の指定でした 簡単な例を作成中なので後でアップします [] [ここ壊れてます]
763 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 13:39:30.09 ID:3LuUMb1z0.net] >>750 毎日こんな表を作成しています https://i.imgur.com/U2Pky8f.jpg
764 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 13:40:43.92 ID:3LuUMb1z0.net] >>750 そして毎週こんな感じで縦向きの印刷をしています(右側の内訳は不要) https://i.imgur.com/RpWsFui.jpg
765 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 13:41:54.11 ID:3LuUMb1z0.net] >>750 そして毎月、売上が確定するとこんな感じで横向きの印刷をします 列の削除が必要となります https://i.imgur.com/DfWRUBx.jpg
766 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 13:46:51.08 ID:3LuUMb1z0.net] ほんとは >>752 の上の表と下の表の間に担当者別の売上集計表があるので毎月、列の削除は行えずに右側の内訳をスライドして値複写して整形する必要が有ります この作業が地味に面倒なのでマクロ記録で自動化しました
767 名前:デフォルトの名無しさん [2023/01/21(土) 14:05:07.15 ID:hYuLYDCi0.net] >>749 Console 0,25,0,1とかで始まるやつか 文法こそ同じような部分はあるけど全くの別物だぞ
768 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 14:07:16.17 ID:3LuUMb1z0.net] >>756 syntax error
769 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 14:10:22.83 ID:qZakY6uUr.net] 最初で最後のプログラミングが 年賀状当選ハガキ発見プログラムでした。。
770 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 14:55:21.95 ID:Zr2lAE610.net] レコード総数どのくらいか判らんけど、回答待ってる間に別シートにコピーして並べ替えするだけで済むような いくら零細だからって業務用途なら自社内で解決できるレベルに収めておかないと、引き継ぎに難儀するような ↓こういうのを参考にしてじぶんで懸命に制作してもいいかも知らんけど https://forest.watch.impress.co.jp/docs/serial/exceltips/1306514.html 単なる受け売りじゃ応用利かなくなるだろうし
771 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 15:43:24.35 ID:qZakY6uUr.net] >>759 そのくらいは使えるんだけど。
772 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 15:55:42.09 ID:qZakY6uUr.net] 数字掴むのはパワークエリやパワーピボットでなんとでもなるんだけど 今まである資料にキッチリ合わせた体裁にしないとならんところで苦労をしていて
773 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 16:26:39.90 ID:qZakY6uUr.net] >>754 改めて考えたらこの横向きの印刷は苦労して無かったんだった >>752 のシートを新規シートにコピーしてから不要列を削除してプリントするマクロ記録で出来るので 問題は >>753 の印刷です この表の下に2月分の納品予定、3月分の納品予定、4月、5月と続いていくので最終行を指定する事は出来なくて 印刷したい範囲はあくまでも当月の1月分までなので
774 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 16:46:59.18 ID:H5hcEaoi0.net] >>752-754 1 日次を人間が更新 or 印刷 2 1を元に週次で印刷 3 1を元に月次で印刷 ということなら、シートをあらかじめ上記3つに分ける方向で考えた方がいいんじゃないかね ご存知かもしれないけど「Excel VBA やりたい事」でぐぐれば大抵の事は出てくるよ 取り急ぎ動的な範囲選択の記述の仕方とか判ればVBAの文法とかあやふやでも全然いけそうだけど
775 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 16:50:11.61 ID:qZakY6uUr.net] >>763 ああ、なるほど、確かに 固定フォーマットに数字だけ行くように出来れば良いのかなと思ったけど 会社も毎月変わるから難しいかな あと売上高の多い順だし
776 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 16:58:34.85 ID:Zr2lAE610.net] 何度も聞くけど「印刷範囲」の設定ってどうやってる? マウスで印刷したい範囲をドラッグ選択して印刷範囲に設定するだけなんだけど? 月ごとに微妙に行数が増減するから用紙からはみ出るとかの懸念? Excelの初歩の初歩のような気がしてきた
777 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 17:11:10.91 ID:pNicHJvH0.net] 必要な情報を配列に入れ込んで それで新しいシートを作り直したらどうでしょう? 新しいシートは手作業でフォーマットしておくか VBAで印刷範囲の列数行数を取得して 配列から取り出してセルに代入するとか 誤って元データを失わないように シートの追加削除はあまりどうなんだろうって気がします
778 名前:デフォルトの名無しさん (オッペケ Src7-zVY0) mailto:sage [2023/01/21(土) 17:26:56.30 ID:qZakY6uUr.net] >>765 いや、だから関数とか印刷範囲の設定で済まないので悩んでいるわけです それだけで済むならマクロ記録で終了です 不要範囲の削除で関数の連携が無くなるから 数値コピーしたり 手動の整形を伴うのと 毎月売上の会社は一定じゃないし
779 名前:デフォルトの名無しさん (オッペケ Src7-zVY0) mailto:sage [2023/01/21(土) 17:34:58.85 ID:qZakY6uUr.net] >>766 元データを失わないように 元データからマクロで読み込んでコピーファイルを作成して、そこで作業を行ってから終了時にマクロで元データに書き込むようにはしています。。 売上の最新情報は他の人と共有しているファイルになるので、これもコピーファイルを作成してからデータを新しいシートにコピペして、パワークエリを使ってそのファイルから読み込んで毎度自動更新するようにしています 定形フォーマット(シート)を使ってVBAで行数を決められると確かに良いですね
780 名前:デフォルトの名無しさん [2023/01/21(土) 17:41:46.80 ID:zrHjWBn6M.net] >>768 なんか頭のハゲた人がいっぱいいそうな会社だなあ。
781 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 17:57:20.75 ID:Zr2lAE610.net] ダメだこりゃ 行や列の非表示とかも知らなそう たぶん「書き間違えました」とか訂正あるんだろうけど、>作業を行ってから終了時にマクロで元データに書き込むようにはしています これはやっちゃいけない最たるものじゃないのか? 元ファイルと作業ファイルは一方通行にしとかなきゃ、戻してどうすんだ 40年前にBASIC触った世代? なんかアタマでっかちで実務に向いてない 縦書き横書きすら誤用してるのにいっちょまえな用語駆使しようとして伝わらない すまんがサジ投げる 君らに任せた
782 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 17:58:03.03 ID:qZakY6uUr.net] >>769 残念ながら剥げてるのは俺一人
783 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 17:58:43.35 ID:qZakY6uUr.net] >>770 いやいや他の人はともかくあなただけ異次元にレベル低い パワーピボットとか使って無いでしょ
784 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 18:11:05.02 ID:qZakY6uUr.net] >>770 他の優秀な方は皆さん理解出来るのに一人だけトンチンカンなVBAスレにいてはいけないレベルのような 列の非表示をしたらその下の担当者別の列まで非表示になるから 範囲指定や非常時でなんとかなるレベルじゃないでしょ じゃあなたにVBAの質問して答えられるのかな?
785 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 18:14:32.74 ID:qZakY6uUr.net] >>770 元ファイルは自分だけの使っているファイルだから問題無し 共有ファイルは参照するだけで元には戻さない なんで書いてる事を理解出来ないのかな
786 名前:デフォルトの名無しさん [2023/01/21(土) 18:47:58.93 ID:zrHjWBn6M.net] >>774 このハゲ! / ̄ ̄ ̄ ̄ ̄ ̄\ / \ / ヽ l:::::::::. | |:::::::::: (●) (●) | |::::::::::::::::: \___/ | ヽ:::::::::::::::::::. \/ ノ
787 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 18:49:06.36 ID:qZakY6uUr.net] >>775 オマエモナー 久しぶりに書いたなこれ
788 名前:デフォルトの名無しさん [2023/01/21(土) 18:51:29.36 ID:zrHjWBn6M.net] (爆)
789 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 18:51:32.42 ID:qZakY6uUr.net] ほんとは表示がなんでも良ければ >>752 こんな内容はパワークエリとパワーピボットで、何もしなくても常に最新データに書き換えられるんだけどな。。 といつも思いながらEXCELの加工してます
790 名前:デフォルトの名無しさん [2023/01/21(土) 19:34:50.38 ID:rwfwwGNyd.net] 零細企業だからこんな馬鹿しか雇えないのかね
791 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 19:38:29.43 ID:qZakY6uUr.net] >>779 馬鹿に出来るほどの回答してないよね?
792 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 20:00:29.29 ID:liCBEODDH.net] >>752 連想配列、多次元配列を使えば、好きな項目を紐づけでき 表示も好きなようにできるので楽だと思います 一度覚えたら重宝しますのでいつか学んでみたらいかがでしょう? VBAの学習はネットで十分ですし是非 例えばシートから顧客名を取得して 顧客名をキーワードにして、製品名、単価、数量、担当者名を配列に格納し 単価×売上高の多い順に配列をソートして、配列から必要な表示項目だけセルに代入する そうやって処理すれば担当者別であれ製品別であれ好きなように表示できます その後、罫線処理をして、最後に幅調整をしてあげればって思います
793 名前:デフォルトの名無しさん [2023/01/21(土) 20:08:19.63 ID:rwfwwGNyd.net] >>780 あまりにも馬鹿過ぎるから馬鹿と指摘しているのだが こんなのしか雇えないから零細企業のままなのか、零細企業だからこんなの雇っちゃうのか
794 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 20:10:55.81 ID:qZakY6uUr.net] >>782 あ、 (ワッチョイ 53da-Jpma) がスマホで書いてるだけか
795 名前:デフォルトの名無しさん [2023/01/21(土) 20:12:17.60 ID:HFKnvzRq0.net] 今度は言い掛かりを始めた馬鹿
796 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 20:15:45.52 ID:qZakY6uUr.net] >>784 ほらバレて脊髄反射w
797 名前:デフォルトの名無しさん [2023/01/21(土) 20:18:33.47 ID:HFKnvzRq0.net] 馬鹿の質問はそもそも馬鹿が考えることだから問題解決へのアプローチが間違えている というか端的に言えば馬鹿だから馬鹿な発想しかできないから解決方法がややこしくなり何倍も何十倍も時間が必要になる
798 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 20:21:20.82 ID:qZakY6uUr.net] とりま馬鹿はNG
799 名前:デフォルトの名無しさん [2023/01/21(土) 20:23:35.37 ID:HFKnvzRq0.net] 逃げた
800 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 20:23:44.73 ID:qZakY6uUr.net] >>781 ありがとうございます 他は全てワンボタンで済んだので あと表示だけが手動なので そのために時間掛ける価値があるかどうテンピンに掛けながら でもこういうのは嫌いじゃ無いので学んでみます
801 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 20:28:47.01 ID:qiWRJhmvM.net] >>786 わかる。こういう奴に任せるといつまで経ってもまともな成果が上がらない。
802 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 20:34:39.84 ID:liCBEODDH.net] >>789 なんかスレッドが熱いですけど気にせずがんばってください 配列はデータベースみたいなものなのでエクセルと相性がいいんです とても便利ですので是非がんばってください
803 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 21:38:19.62 ID:ALAIHDfad.net] 煽るヤカラに反応してるとスレが荒れていつも回答してくれる人も敬遠しちゃうぞ 月別のレイアウト範囲を決めるなら参考の表なら 開始は「月売上高表」の文字列が入っている行 最後は「納品予定」の文字列が入っている行を見つけて最後の金額が入ってる行を取得すれば>>747 のコードが流用できるんじゃないの
804 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 21:55:48.52 ID:qZakY6uUr.net] >>791 早速、YouTubeの金子さんの動画を見ました 今まで外国語に見えてたのが理解出来て来ました
805 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 21:57:12.93 ID:qZakY6uUr.net] >>792 ありがとうございます 最終行に、色を白で「最終行」と入れて それを拾おうかと
806 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 22:09:21.22 ID:WRTpu51ud.net] >>794 うざい
807 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 22:31:20.27 ID:liCBEODDH.net] >>789 もし嫌じゃないのなら才能というか適性あります VBAから入ってある程度楽しいなって思えたら pythonとかjava、C#とかやってみたらいいと思います
808 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 04:34:19.88 ID:K9eOTOpDr.net] >>792 その印刷したい最後の行≒「途中の行」の場合はどのように指定したら良いんでしょうか? 売上先の数が毎月一定では無いので印刷したい最後の行が毎月変わってしまうのです 「売上最終行」「売上最終列」 「納品最終行」「納品最終列」 を透明な文字で埋め込んで認識させるのが良いのかなと
809 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 04:41:38.79 ID:hOwNbSAHr.net] >>796 もともと1982年にマイコン(パソコン)を買ったくらいなので好きな方だと思います
810 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 06:11:47.65 ID:wUjIjG/wd.net] >>797 vba 最終行 vba 最終列 でぐぐる
811 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 06:47:36.72 ID:hOwNbSAHr.net] >>799 ありがとうございます ググりましたが本当の最終行の説明しか無くて 上に書いた通り、実際には途中に存在する 任意の最終行(実際には途中の行)の説明が無いのですが
812 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 06:54:51.41 ID:1NpPY/pKa.net] CSV などのテキスト処理なら、Ruby
813 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 06:55:38.90 ID:5nd4WcY/0.net] >>797 どれを印刷したいのかよくわからんけど >>752-753 なら納品予定の列を見て空になった行のひとつ上、>>754 なら得意先名の列を見て合計となって行までを印刷すりゃいいんじゃないの? って>>792 は言ってるんだが? そもそも > 印刷したい最後の行≒「途中の行」 とか意味不明すぎる
814 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 07:02:04.85 ID:hOwNbSAHr.net] マクロを使ってそのシートを新規シートにコピーしてから不要行や不要列を削除して、その後に最終行と最終列を指定して印刷すれば良いのかな
815 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 07:03:38.95 ID:hOwNbSAHr.net] >>802 言葉でそのように説明するのは簡単だけど 具体的にVBAで書けますbゥ?
816 名前:デフォャ泣gの名無しさb mailto:sage [2023/01/22(日) 07:12:25.00 ID:hOwNbSAHr.net] 毎日 752のシートを毎日作成していて そのシートを元に 753や754のような印刷結果としたいのです 上の画像が失敗したのは 確かに非表示で済むような画像になってしまいましたが 実際には列の非常時を使うと印刷したい列まで隠れてしまうので非表示は使えません
817 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 07:19:41.79 ID:hOwNbSAHr.net] もう一度書くと 作成しているのはこの表 https://i.imgur.com/MNy37BM.jpg
818 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 07:21:57.46 ID:hOwNbSAHr.net] >>806 806の赤い部分にも文字が入ってるとして 印刷したいのは806を元にして これらが印刷結果となるように https://i.imgur.com/JUP2t7B.jpg https://i.imgur.com/LhkqS7p.jpg
819 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 07:28:29.54 ID:hOwNbSAHr.net] 実際の数字は販売管理ソフトから吐き出したデータをパワークエリとパワーピボットによってリアルタイムにデータを見ることは出来ています その他の付随情報をEXCELで管理していて、そのEXCELデータと販売管理ソフトが正しいかどうかのチェックもそのEXCELファイルで行っています
820 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 07:32:21.84 ID:hOwNbSAHr.net] 20年前からパワークエリやパワーピボットが存在していれば、その結果を元に報告資料を作っていたんだろうけど、存在しない時代に手動で作成していたのでそれに合わせる事に苦労してるということです
821 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 08:09:47.45 ID:5nd4WcY/0.net] >>804 >>807 の表はできてるんだろ? 得意先名の列がB列としたら Dim Row As Long Row = 1 While Cell(Row, "B").Value <> ”合計" Row = Row + 1 WEnd ってやるだけだろ
822 名前:デフォルトの名無しさん (ワッチョイ f34a-+xDT) mailto:sage [2023/01/22(日) 08:52:06.84 ID:LXKdZzsm0.net] BASIC知ってるはずなのに配列知らんのか
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 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています