Excel VBA 質問スレ Part78

■ このスレッドは過去ログ倉庫に格納されています
2022/10/30(日) 13:43:16.31ID:6yf2E1Gz0
!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
2023/01/19(木) 08:06:32.97ID:hjMxdzIvH
>>722
書き換えや取得するコードを書く
やって見た方が早い
2023/01/19(木) 08:33:41.90ID:WQbdwelX0
コールバックではなくCOMという概念で実際のところプロセス間通信している
VBAの場合多分インプロセスなので他の手段より有利
シートやブックに対してコールバックする処理ってあったっけかな
2023/01/19(木) 08:42:01.19ID:hjMxdzIvH
>>724
色々あるみたいだけど、vbaで使う場面って思いつかない。ってかバグりそうでやらない方がいい気がしてならない・・・
https://qiita.com/Kamo123/items/e676e0cbe6de83410980
2023/01/19(木) 09:20:35.66ID:IH8Q0Y2+M
Excelのオブジェクトを外部から弄るつもりならVBAよりもCOMアドインやVSTOアドイン、Office Scriptsなど別の方法利用を検討する方が良い気がする
2023/01/19(木) 10:50:54.77ID:hkE7HGyaM
>>722
その通り

データの書き換えしている様子も見えるから仕事しているなって気がしてくる
2023/01/19(木) 13:24:17.21ID:4qclTsLf0
イベントはコールバック
2023/01/19(木) 19:42:15.97ID:Dvqs9CAA0
例外処理の悩みなんだけど、
普段、オプションでエラーをクラスで停止するように設定している
その状態でクラスでErr.Raiseすると、標準モジュールでOnErrorGotoステートメントで受け取れないけど皆さんはどうしてるんですかね?
2023/01/19(木) 19:46:40.02ID:Dvqs9CAA0
オプションを変えれば標準モジュールで受けとれるんだけど切り替えが面倒
2023/01/19(木) 20:51:52.93ID:4qclTsLf0
普段からオプション変えとけばいいんじゃね
クラスモジュールで中断って、使いどころがわからん
2023/01/19(木) 21:58:24.97ID:40XBuhhWH
みなさん、ありがとうです
>>727様、ありがとうです

web系はユーザーの待機ストレスをなくすために
コールバックを多用しますけれど
事務系は一つの処理が終わってから次の処理に移るって
なんだかそんな感じを受けました

ありがとうございました
2023/01/19(木) 22:00:12.46ID:40XBuhhWH
>>728
イベントはコールバックしかないですものね
734デフォルトの名無しさん (ワッチョイ 9568-3JZN)
垢版 |
2023/01/19(木) 23:05:36.09ID:eT7lxKel0
外部取り込みデータでcsvファイルを
QueryTablesメソッドを使用して、TextFileColumnDataTypesを文字列では取り込むとデータの後ろに半角スペースが入ります。
これなぜでしょうか?
標準で取り込むと半角スペースが入らないです。

やりたいのが数値などを文字列で取り込んだ時に、先頭の0を表示させて、E形式で表示されてる数値を全部表示させたいです。

今、文字列形式で取り込むと必ず全データの後ろに半角スペースが入ります。半角スペースが入らないように取り込みたいです
2023/01/19(木) 23:47:25.42ID:XtxzJxUF0
>>734
そのcsvメモ帳で開いて
本当に生データに半角入ってないの?
2023/01/20(金) 01:33:26.94ID:W1xzt6Zf0
シートが2つあって、片方非表示にしようとしたら、最低1個は表示しろって怒られるの何で?
非表示にする1行手前でデバッグプリント取ったけど、間違いなく2つとも表示されている。
単体で実行すると問題ないが、新規ブック作ってシートを2つに増やしてからやるとエラーになる。
DoEvents入れても駄目、On Error Resume Next入れてもエラーで止まる。
ワケわからん。
2023/01/20(金) 01:44:54.53ID:ptsQI5JN0
その非表示にする行が悪いんじゃないの
御託はいいからコード貼れカス
2023/01/20(金) 02:56:01.96ID:W1xzt6Zf0
悪くない。
1行手前では2シートともVisibleは-1を返すから、前後がどんなどんなコードでも関係ないだろ。
2023/01/20(金) 03:42:39.52ID:iiD2fqs40
コード貼れ
2023/01/20(金) 06:53:35.87ID:WgMHwss/0
>>736
ブック2つあってその片方を丸ごと非表示にしょうとしてるとか
741デフォルトの名無しさん (ワッチョイ 9568-3JZN)
垢版 |
2023/01/20(金) 07:00:14.46ID:Q4AfyMd20
>>735
半角スペース入ってないです
アクセスから抜いてきたデータなんですけど、何回やっても入るんですよね
742デフォルトの名無しさん (ワッチョイ 7e19-9FUj)
垢版 |
2023/01/20(金) 07:46:13.25ID:z8VJTXTl0
もうACCESSに直接ADO接続して値取って来たら?
2023/01/20(金) 08:00:52.80ID:ayeW68tCd
質問者がよくわからない現象だから質問してくるんだろうけどそういう人の質問だといまいち状況がつかみにくいから
オリジナルでなくてもいいから現象が再現するサンプルコードでも提供すれば解決しやすいのにね
そういう事ができない人多いよね
2023/01/20(金) 08:13:31.91ID:9/vVytdyH
>>743
^^;
745デフォルトの名無しさん (スップー Sdca-3JZN)
垢版 |
2023/01/20(金) 09:37:46.21ID:phBDDUUBd
>>742
結局、全部にトリムすることにしましたわ
2023/01/21(土) 02:59:07.37ID:ZfbTiSBFr
総合スレからこちらに誘導されて来ました
マクロ記録は使えるけどVBAは使えないのに。。

【1 Windows10】
【2 Excel2019 】
【3 いいえ】
【4 否】

普段横書きで印刷をしているシートを
月一回の報告資料のみ、範囲を変えて縦書きにして印刷する必要があります

それでマクロ記録を使って印刷範囲を絞り込んで縦書きにして印刷をするボタンを作成してみたのですが、問題は印刷範囲の最終行が毎回変わるのでその最終行に合わせた範囲指定にするにはどうしたら良いでしょうか?
CTRL+↓を記録は出来ないみたいだし。。

印刷範囲の最終行に透明な「※」でも打ち込んでそこまでを印刷というような事は出来ますでしょうか?
2023/01/21(土) 04:22:08.36ID:H5hcEaoi0
>>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
2023/01/21(土) 07:02:51.83ID:liCBEODDH
>>746
これを機にVBA使いになりましょう
そんな難しくないですよ

まずはダミーデータと
マクロで記録したコードを張ってみてもらえますか?
2023/01/21(土) 09:23:02.19ID:DWiRZY6Xr
>>747-748

ありがとうございます

マクロ記録はボタンを押すだけなので簡単ですが
VBAになると一気に難易度が。。

1980年代のDOSの前のBASICはちょろっとやってたので本気出せばなんとかなるかもですが

分かりやすい書籍、動画、講座とかありますかね?
2023/01/21(土) 10:59:00.69ID:Zr2lAE610
そも、縦書きと横書きという独特の言い回しが相手には伝わりにくい
あいうえお ← 横書き

い  ← 縦書き  普通に読んでればこう捉える




でもそれでは無くて、帳票の状態が普通はA4横長で印刷してるものを、月イチではA4縦長で印刷したいとかなのか
ほんとうに文字ごとタテ並びにしてしまいたいのか  後者なら敷居が相当高いけど
しかし、初めて白状した状況だと相当の高齢者が毎月なんらかの帳票を印刷するのに苦心している様子からして
自治会の会計資料だのそういう方面だとも考えられる
自分でサンプルを提示するのが困難なら、どっかのサイトで似たような状況を探って画像検索でもしてみて「こういうのをこうしたい」と書かないと伝わり難い
自治会用のExcelサンプルなんかゴロゴロ転がってるし、それを参考にするとか流用するとか  見立て違いなら失敬
   しかし、単に「印刷範囲」をその都度指定するだけで簡単に解決するような質問のような気もしてる
2023/01/21(土) 12:20:46.74ID:qZakY6uUr
>>750
打ち出しているのは零細企業の売上報告資料です
経営陣と上司が高齢者なので今まで長年使い続けて来た会議資料のフォーマットは原則何も変えてはならないという前提の作業です

売上が得意先の売上高順に並べられている資料で
右側に売上の内訳があります

単純にA4縦をA4横にして印刷するわけでは無くて列の削除が2列必要になり、その列を単純に削除すると関数が埋められてるのでエラー表示になるので、手作業だと毎回大変だったので、マクロ記録を使って自動的に印刷出来るようにしました

ところが一つだけ上手く行かなかったのが
今回の印刷範囲の指定でした

簡単な例を作成中なので後でアップします
2023/01/21(土) 13:39:30.09ID:3LuUMb1z0
>>750
毎日こんな表を作成しています

https://i.imgur.com/U2Pky8f.jpg
2023/01/21(土) 13:40:43.92ID:3LuUMb1z0
>>750
そして毎週こんな感じで縦向きの印刷をしています(右側の内訳は不要)

https://i.imgur.com/RpWsFui.jpg
2023/01/21(土) 13:41:54.11ID:3LuUMb1z0
>>750
そして毎月、売上が確定するとこんな感じで横向きの印刷をします

列の削除が必要となります

https://i.imgur.com/DfWRUBx.jpg
2023/01/21(土) 13:46:51.08ID:3LuUMb1z0
ほんとは
>>752
の上の表と下の表の間に担当者別の売上集計表があるので毎月、列の削除は行えずに右側の内訳をスライドして値複写して整形する必要が有ります

この作業が地味に面倒なのでマクロ記録で自動化しました
756デフォルトの名無しさん (ワッチョイ 6f19-1gWY)
垢版 |
2023/01/21(土) 14:05:07.15ID:hYuLYDCi0
>>749
Console 0,25,0,1とかで始まるやつか
文法こそ同じような部分はあるけど全くの別物だぞ
2023/01/21(土) 14:07:16.17ID:3LuUMb1z0
>>756
syntax error
2023/01/21(土) 14:10:22.83ID:qZakY6uUr
最初で最後のプログラミングが
年賀状当選ハガキ発見プログラムでした。。
2023/01/21(土) 14:55:21.95ID:Zr2lAE610
レコード総数どのくらいか判らんけど、回答待ってる間に別シートにコピーして並べ替えするだけで済むような
いくら零細だからって業務用途なら自社内で解決できるレベルに収めておかないと、引き継ぎに難儀するような
 ↓こういうのを参考にしてじぶんで懸命に制作してもいいかも知らんけど
https://forest.watch.impress.co.jp/docs/serial/exceltips/1306514.html  単なる受け売りじゃ応用利かなくなるだろうし
2023/01/21(土) 15:43:24.35ID:qZakY6uUr
>>759
そのくらいは使えるんだけど。
2023/01/21(土) 15:55:42.09ID:qZakY6uUr
数字掴むのはパワークエリやパワーピボットでなんとでもなるんだけど
今まである資料にキッチリ合わせた体裁にしないとならんところで苦労をしていて
2023/01/21(土) 16:26:39.90ID:qZakY6uUr
>>754
改めて考えたらこの横向きの印刷は苦労して無かったんだった
>>752
のシートを新規シートにコピーしてから不要列を削除してプリントするマクロ記録で出来るので

問題は
>>753
の印刷です

この表の下に2月分の納品予定、3月分の納品予定、4月、5月と続いていくので最終行を指定する事は出来なくて
印刷したい範囲はあくまでも当月の1月分までなので
2023/01/21(土) 16:46:59.18ID:H5hcEaoi0
>>752-754
1 日次を人間が更新 or 印刷
2 1を元に週次で印刷
3 1を元に月次で印刷
ということなら、シートをあらかじめ上記3つに分ける方向で考えた方がいいんじゃないかね
ご存知かもしれないけど「Excel VBA やりたい事」でぐぐれば大抵の事は出てくるよ
取り急ぎ動的な範囲選択の記述の仕方とか判ればVBAの文法とかあやふやでも全然いけそうだけど
2023/01/21(土) 16:50:11.61ID:qZakY6uUr
>>763
ああ、なるほど、確かに
固定フォーマットに数字だけ行くように出来れば良いのかなと思ったけど
会社も毎月変わるから難しいかな
あと売上高の多い順だし
2023/01/21(土) 16:58:34.85ID:Zr2lAE610
何度も聞くけど「印刷範囲」の設定ってどうやってる? マウスで印刷したい範囲をドラッグ選択して印刷範囲に設定するだけなんだけど?
月ごとに微妙に行数が増減するから用紙からはみ出るとかの懸念? Excelの初歩の初歩のような気がしてきた
2023/01/21(土) 17:11:10.91ID:pNicHJvH0
必要な情報を配列に入れ込んで
それで新しいシートを作り直したらどうでしょう?

新しいシートは手作業でフォーマットしておくか
VBAで印刷範囲の列数行数を取得して
配列から取り出してセルに代入するとか

誤って元データを失わないように
シートの追加削除はあまりどうなんだろうって気がします
2023/01/21(土) 17:26:56.30ID:qZakY6uUr
>>765
いや、だから関数とか印刷範囲の設定で済まないので悩んでいるわけです
それだけで済むならマクロ記録で終了です

不要範囲の削除で関数の連携が無くなるから
数値コピーしたり
手動の整形を伴うのと

毎月売上の会社は一定じゃないし
2023/01/21(土) 17:34:58.85ID:qZakY6uUr
>>766
元データを失わないように
元データからマクロで読み込んでコピーファイルを作成して、そこで作業を行ってから終了時にマクロで元データに書き込むようにはしています。。

売上の最新情報は他の人と共有しているファイルになるので、これもコピーファイルを作成してからデータを新しいシートにコピペして、パワークエリを使ってそのファイルから読み込んで毎度自動更新するようにしています

定形フォーマット(シート)を使ってVBAで行数を決められると確かに良いですね
769デフォルトの名無しさん (ブーイモ MM7f-Njuq)
垢版 |
2023/01/21(土) 17:41:46.80ID:zrHjWBn6M
>>768
なんか頭のハゲた人がいっぱいいそうな会社だなあ。
2023/01/21(土) 17:57:20.75ID:Zr2lAE610
ダメだこりゃ 行や列の非表示とかも知らなそう
たぶん「書き間違えました」とか訂正あるんだろうけど、>作業を行ってから終了時にマクロで元データに書き込むようにはしています
これはやっちゃいけない最たるものじゃないのか? 元ファイルと作業ファイルは一方通行にしとかなきゃ、戻してどうすんだ
40年前にBASIC触った世代? なんかアタマでっかちで実務に向いてない 縦書き横書きすら誤用してるのにいっちょまえな用語駆使しようとして伝わらない
すまんがサジ投げる 君らに任せた
2023/01/21(土) 17:58:03.03ID:qZakY6uUr
>>769
残念ながら剥げてるのは俺一人
2023/01/21(土) 17:58:43.35ID:qZakY6uUr
>>770
いやいや他の人はともかくあなただけ異次元にレベル低い
パワーピボットとか使って無いでしょ
2023/01/21(土) 18:11:05.02ID:qZakY6uUr
>>770
他の優秀な方は皆さん理解出来るのに一人だけトンチンカンなVBAスレにいてはいけないレベルのような

列の非表示をしたらその下の担当者別の列まで非表示になるから
範囲指定や非常時でなんとかなるレベルじゃないでしょ

じゃあなたにVBAの質問して答えられるのかな?
2023/01/21(土) 18:14:32.74ID:qZakY6uUr
>>770
元ファイルは自分だけの使っているファイルだから問題無し
共有ファイルは参照するだけで元には戻さない 
なんで書いてる事を理解出来ないのかな
775デフォルトの名無しさん (ブーイモ MM7f-Njuq)
垢版 |
2023/01/21(土) 18:47:58.93ID:zrHjWBn6M
>>774
このハゲ!
                 
      / ̄ ̄ ̄ ̄ ̄ ̄\
    /             \
   /                  ヽ 
    l:::::::::.                  | 
    |::::::::::   (●)     (●)   | 
   |:::::::::::::::::   \___/     |  
    ヽ:::::::::::::::::::.  \/     ノ
2023/01/21(土) 18:49:06.36ID:qZakY6uUr
>>775
オマエモナー

久しぶりに書いたなこれ
777デフォルトの名無しさん (ブーイモ MM7f-Njuq)
垢版 |
2023/01/21(土) 18:51:29.36ID:zrHjWBn6M
(爆)
2023/01/21(土) 18:51:32.42ID:qZakY6uUr
ほんとは表示がなんでも良ければ
>>752
こんな内容はパワークエリとパワーピボットで、何もしなくても常に最新データに書き換えられるんだけどな。。
といつも思いながらEXCELの加工してます
779デフォルトの名無しさん (スッップ Sd1f-RQPf)
垢版 |
2023/01/21(土) 19:34:50.38ID:rwfwwGNyd
零細企業だからこんな馬鹿しか雇えないのかね
2023/01/21(土) 19:38:29.43ID:qZakY6uUr
>>779
馬鹿に出来るほどの回答してないよね?
2023/01/21(土) 20:00:29.29ID:liCBEODDH
>>752
連想配列、多次元配列を使えば、好きな項目を紐づけでき
表示も好きなようにできるので楽だと思います
一度覚えたら重宝しますのでいつか学んでみたらいかがでしょう?
VBAの学習はネットで十分ですし是非

例えばシートから顧客名を取得して
顧客名をキーワードにして、製品名、単価、数量、担当者名を配列に格納し
単価×売上高の多い順に配列をソートして、配列から必要な表示項目だけセルに代入する
そうやって処理すれば担当者別であれ製品別であれ好きなように表示できます
その後、罫線処理をして、最後に幅調整をしてあげればって思います
782デフォルトの名無しさん (スッップ Sd1f-RQPf)
垢版 |
2023/01/21(土) 20:08:19.63ID:rwfwwGNyd
>>780
あまりにも馬鹿過ぎるから馬鹿と指摘しているのだが
こんなのしか雇えないから零細企業のままなのか、零細企業だからこんなの雇っちゃうのか
2023/01/21(土) 20:10:55.81ID:qZakY6uUr
>>782
あ、
(ワッチョイ 53da-Jpma)

がスマホで書いてるだけか
784デフォルトの名無しさん (ワッチョイ 638e-RQPf)
垢版 |
2023/01/21(土) 20:12:17.60ID:HFKnvzRq0
今度は言い掛かりを始めた馬鹿
2023/01/21(土) 20:15:45.52ID:qZakY6uUr
>>784
ほらバレて脊髄反射w
786デフォルトの名無しさん (ワッチョイ 638e-RQPf)
垢版 |
2023/01/21(土) 20:18:33.47ID:HFKnvzRq0
馬鹿の質問はそもそも馬鹿が考えることだから問題解決へのアプローチが間違えている
というか端的に言えば馬鹿だから馬鹿な発想しかできないから解決方法がややこしくなり何倍も何十倍も時間が必要になる
2023/01/21(土) 20:21:20.82ID:qZakY6uUr
とりま馬鹿はNG
788デフォルトの名無しさん (ワッチョイ 638e-RQPf)
垢版 |
2023/01/21(土) 20:23:35.37ID:HFKnvzRq0
逃げた
2023/01/21(土) 20:23:44.73ID:qZakY6uUr
>>781
ありがとうございます

他は全てワンボタンで済んだので
あと表示だけが手動なので
そのために時間掛ける価値があるかどうテンピンに掛けながら
でもこういうのは嫌いじゃ無いので学んでみます
2023/01/21(土) 20:28:47.01ID:qiWRJhmvM
>>786
わかる。こういう奴に任せるといつまで経ってもまともな成果が上がらない。
2023/01/21(土) 20:34:39.84ID:liCBEODDH
>>789
なんかスレッドが熱いですけど気にせずがんばってください

配列はデータベースみたいなものなのでエクセルと相性がいいんです
とても便利ですので是非がんばってください
2023/01/21(土) 21:38:19.62ID:ALAIHDfad
煽るヤカラに反応してるとスレが荒れていつも回答してくれる人も敬遠しちゃうぞ
月別のレイアウト範囲を決めるなら参考の表なら
開始は「月売上高表」の文字列が入っている行
最後は「納品予定」の文字列が入っている行を見つけて最後の金額が入ってる行を取得すれば>>747のコードが流用できるんじゃないの
2023/01/21(土) 21:55:48.52ID:qZakY6uUr
>>791
早速、YouTubeの金子さんの動画を見ました
今まで外国語に見えてたのが理解出来て来ました
2023/01/21(土) 21:57:12.93ID:qZakY6uUr
>>792
ありがとうございます

最終行に、色を白で「最終行」と入れて
それを拾おうかと
2023/01/21(土) 22:09:21.22ID:WRTpu51ud
>>794
うざい
2023/01/21(土) 22:31:20.27ID:liCBEODDH
>>789
もし嫌じゃないのなら才能というか適性あります
VBAから入ってある程度楽しいなって思えたら
pythonとかjava、C#とかやってみたらいいと思います
2023/01/22(日) 04:34:19.88ID:K9eOTOpDr
>>792
その印刷したい最後の行≒「途中の行」の場合はどのように指定したら良いんでしょうか?

売上先の数が毎月一定では無いので印刷したい最後の行が毎月変わってしまうのです

「売上最終行」「売上最終列」
「納品最終行」「納品最終列」
を透明な文字で埋め込んで認識させるのが良いのかなと
2023/01/22(日) 04:41:38.79ID:hOwNbSAHr
>>796
もともと1982年にマイコン(パソコン)を買ったくらいなので好きな方だと思います
2023/01/22(日) 06:11:47.65ID:wUjIjG/wd
>>797
vba 最終行
vba 最終列

でぐぐる
2023/01/22(日) 06:47:36.72ID:hOwNbSAHr
>>799
ありがとうございます
ググりましたが本当の最終行の説明しか無くて

上に書いた通り、実際には途中に存在する
任意の最終行(実際には途中の行)の説明が無いのですが
2023/01/22(日) 06:54:51.41ID:1NpPY/pKa
CSV などのテキスト処理なら、Ruby
2023/01/22(日) 06:55:38.90ID:5nd4WcY/0
>>797
どれを印刷したいのかよくわからんけど >>752-753 なら納品予定の列を見て空になった行のひとつ上、>>754 なら得意先名の列を見て合計となって行までを印刷すりゃいいんじゃないの?
って>>792は言ってるんだが?
そもそも
> 印刷したい最後の行≒「途中の行」
とか意味不明すぎる
2023/01/22(日) 07:02:04.85ID:hOwNbSAHr
マクロを使ってそのシートを新規シートにコピーしてから不要行や不要列を削除して、その後に最終行と最終列を指定して印刷すれば良いのかな
2023/01/22(日) 07:03:38.95ID:hOwNbSAHr
>>802
言葉でそのように説明するのは簡単だけど
具体的にVBAで書けますbゥ?
2023/01/22(日) 07:12:25.00ID:hOwNbSAHr
毎日
752のシートを毎日作成していて
そのシートを元に
753や754のような印刷結果としたいのです

上の画像が失敗したのは
確かに非表示で済むような画像になってしまいましたが
実際には列の非常時を使うと印刷したい列まで隠れてしまうので非表示は使えません
2023/01/22(日) 07:19:41.79ID:hOwNbSAHr
もう一度書くと

作成しているのはこの表


https://i.imgur.com/MNy37BM.jpg
2023/01/22(日) 07:21:57.46ID:hOwNbSAHr
>>806
806の赤い部分にも文字が入ってるとして


印刷したいのは806を元にして
これらが印刷結果となるように



https://i.imgur.com/JUP2t7B.jpg

https://i.imgur.com/LhkqS7p.jpg
2023/01/22(日) 07:28:29.54ID:hOwNbSAHr
実際の数字は販売管理ソフトから吐き出したデータをパワークエリとパワーピボットによってリアルタイムにデータを見ることは出来ています
その他の付随情報をEXCELで管理していて、そのEXCELデータと販売管理ソフトが正しいかどうかのチェックもそのEXCELファイルで行っています
2023/01/22(日) 07:32:21.84ID:hOwNbSAHr
20年前からパワークエリやパワーピボットが存在していれば、その結果を元に報告資料を作っていたんだろうけど、存在しない時代に手動で作成していたのでそれに合わせる事に苦労してるということです
2023/01/22(日) 08:09:47.45ID:5nd4WcY/0
>>804
>>807の表はできてるんだろ?
得意先名の列がB列としたら
Dim Row As Long
Row = 1
While Cell(Row, "B").Value <> ”合計"
Row = Row + 1
WEnd
ってやるだけだろ
2023/01/22(日) 08:52:06.84ID:LXKdZzsm0
BASIC知ってるはずなのに配列知らんのか
2023/01/22(日) 09:17:23.76ID:Hx9JKMaXr
>>810
ありがとう
行か列を任意を指定してキーワードを見つければ良いんですね


>>811
BASIC自体を知ってるのでは無く
その当時、マイコンを買って
雑誌の記事を見て自分用にカスタマイズしただけ
主にカセットテープから20分くらいLoadしてゼビウスとかやってた
2023/01/22(日) 09:18:35.16ID:Hx9JKMaXr
適当に打つとsyntax errorが出てくる事は知ってる
2023/01/22(日) 13:00:42.70ID:vQS42HbD0
連想配列のコレクションを使いたいんだが、個別の要素が書き換えられない。
書き換えると全要素が書き関わってしまう???
これはどうしたらいい?
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--
魔理沙 魔理沙だぜ ←こっちも書き換わってる
魔理沙 魔理沙だぜ
2023/01/22(日) 13:08:27.56ID:CdSwQQ4cd
>>806
自分が何もできないから100%他人任せにしてるような割りに態度が少し横柄なんじゃねと思わなくもないんだよね
少なくとも>>806の月別の表が何か月分も同じシートにあるのであれば
・シートを2つコピーして>>807用の2つのシートを作る
・それぞれのシートで1行目から最終行まで検索する
・月別の始点はA列?の「月売上高表」の文字列が含まれる行
 終点は次の月の「月売上高表」の文字列が含まれる行の-1
 ※ただし最終月は翌月の文字列が見つからないので最終行でよい
これをもとにそれぞれのシートの行を非表示にしたり、列を非表示にして
印刷範囲決めたらいいだけなんじゃないの
ここまでの説明はマクロで可能
俺はやる気のあるコードを見せてくれたりする人には付き合う気はあるけど
100%他人任せには構ってられないから以降は他の人が回答してくれることを祈るわ
2023/01/22(日) 13:23:01.10ID:0592ee0wr
>>815
私ってサバサバしてるから
2023/01/22(日) 13:29:43.69ID:5nd4WcY/0
>>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
のように中身をコピーして作る
818デフォルトの名無しさん (スッップ Sd1f-RQPf)
垢版 |
2023/01/22(日) 14:10:36.46ID:3khvOI6Qd
また零細企業の馬鹿が粘着してるのか
しつこい馬鹿は迷惑
2023/01/22(日) 15:30:30.53ID:DNm1kf3fH
>>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
2023/01/22(日) 15:30:46.23ID:DNm1kf3fH
これで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()で合計を算出して表示すればどうでしょう

製品テーブル(略称含む)や顧客テーブル(略称含む)をシートで作って置ければ
さらに楽にできると思います
2023/01/22(日) 16:01:00.37ID:PpuiymMq0
>>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
2023/01/22(日) 16:06:26.01ID:DNm1kf3fH
>>821
どの程度の大きさのデータを印刷したいのかわからないですが
サンプル程度のデータ量でしたら配列を使って取り込みと出力をして
印刷設定はエクセル側で行えば十分かと思いましたけど
それではあまり役立ちませんか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況