1 名前:1000 [2020/05/10(日) 13:43:45 ID:Nkoph0aj.net] ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part65 https://mevius.5ch.net/test/read.cgi/tech/1584430040/ ※デフォルト設定
148 名前:デフォルトの名無しさん mailto:sage [2020/05/18(月) 20:57:41 ID:ZYPN6nu1.net] >>142 インデックス色はカラーパレットの位置に設定してある色だから環境によっては色が変わるよ
149 名前:デフォルトの名無しさん [2020/05/18(月) 21:11:42.05 ID:W41e55Iy.net] ほんと勉強になりますわ 最初は0と255の組み合わせだけでRGB関数で覚えちゃうようにしますわ この8種類くらいしか多分使わないかな
150 名前:デフォルトの名無しさん mailto:sage [2020/05/18(月) 22:21:45 ID:MHLvuQaE.net] どういう時どれを使うのが適しているかで選ぶのであって、どっちで覚えるとかじゃない
151 名前:デフォルトの名無しさん mailto:sage [2020/05/18(月) 22:29:22.00 ID:1EfbZi6v.net] >>145 社内のマクロツールの中味たまに見るけどなんとなく、どっちかに統一してるって感じの人が多くない?
152 名前:デフォルトの名無しさん mailto:sage [2020/05/18(月) 22:32:29.74 ID:MHLvuQaE.net] どっちでもいいんであれば好きに統一すればいいんじゃね
153 名前:デフォルトの名無しさん [2020/05/18(月) 22:39:17.66 ID:W41e55Iy.net] たかが色だと思って使わないと思ってたけど メッセージボックスで黄色い部分の数値を確認後、入力とかで その範囲を真っ黄色にしてやって元に戻したり 他人、(おばちゃん)とかにはとにかくわかりやすく作るようにしてみることにした
154 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 05:32:55.42 ID:MuDspthZ.net] rgb値の組み合わせを覚えるのは大変なのでWebColor名で覚えるといいかも。 rgbAliceBlue rgbLightBlue rgbBlue rgbMidnightBlue みたいな感じで記述すればrgb値を指定できる。よく使うやつだけ覚えとけばいい。
155 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 07:27:37.05 ID:oLWOmWCd.net] vbRed 「・・・。」 vbGreen 「・・・。」 vbBlue 「・・・。」
156 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 07:31:04 ID:FCPlMZOp.net] >「・・・。」 あーウゼー
157 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 08:30:30.69 ID:D2gK0p2V.net] あーおれも、基本はそのvb〜だ グラデーション的な見栄えが必要の時とかは変えるけど
158 名前:デフォルトの名無しさん [2020/05/19(火) 17:47:57 ID:J9ZEMPxu.net] アクティブシートをコピーした後のコードがムズいなぁ 細かい所をいじる知識がなさすぎ
159 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 18:07:59 ID:uEHEf6fZ.net] 逆に原紙を作っておいて普段はそのコピーを使うようにするといい
160 名前:デフォルトの名無しさん [2020/05/19(火) 18:17:23 ID:J9ZEMPxu.net] >>154 ありがとう。そ
161 名前:の方が都合そうしたよ。 シート名の取得も特定のセルから何とかできた。あとはブック名を指示したいんだけど調べりゃすぐ出てきそうだけどなかなか出て来ないわ エラー出ないように細かく作りたいもんだけ [] [ここ壊れてます]
162 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 19:19:11 ID:qQEEjoZO.net] 10万円給付の紐付けなんかVBAで余裕に出来るのに話題にならないのが不思議
163 名前:デフォルトの名無しさん [2020/05/19(火) 19:48:13 ID:NEFcECdd.net] >>156 こういう馬鹿が職場にいて余計混乱させているだけだろ
164 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 20:27:14.48 ID:F1sOO54s.net] そのうち消えた10万円とかなるんじゃね
165 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 20:56:41 ID:FccdSYLU.net] クルーズ船の消えた弁当
166 名前:デフォルトの名無しさん [2020/05/19(火) 21:22:42.73 ID:oItI0x3V.net] 絶対にわからん関数ばかり使ってる理解不明なコードをネットからパクって少し弄ったら完全に業務で対応できてラッキー そこから今日もユーザーフォーム適当に作ってメッセージボックスとインプットボックスを組んでいって 効率化したけど相変わらず上達せん毎日だわ
167 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 21:40:57 ID:OdQysc5C.net] ここは日記帳ではない
168 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 22:33:25.66 ID:flKz052u.net] >>156 1億2000万件のデータを、誤読無く、重複無く、生死の年月日まで 勘案して処理する自治体まで勘案してエクセルに食わせろとな?
169 名前:デフォルトの名無しさん mailto:sage [2020/05/19(火) 23:58:06 ID:dbsigt0d.net] 相談させてください。 羅列されたデータにオートフィルタをかけて、その中でのランダム選択をシートを使わないでやる方法が知りたいです。 A列(1〜6年)、B列(1〜8組)、C列(名前) みたいな感じで、AとBから複数選択後にCから選び出す感じです。 今までは作業用のシートを設けてオートフィルタをかけたものを別シートにコピーし、その中でrandomで選んでいました。 諸事情により作業用シートが作れないので、おそらく配列内だとは思うのですが・・・・
170 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 00:07:04 ID:vp7gkhOL.net] >>163 VBAなら、とりあえず乱数を発生して、その行がオートフィルタかかってたらもう一度乱数からやり直せばいいだけ
171 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 01:09:15.99 ID:0kv4kFzW.net] 俺なら配列に入れてからやる
172 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 02:23:38.33 ID:p47zFM4b.net] >>163 フィルタ掛けた結果をROWだけ配列に抜き出して、乱数で配列の中から一つ選べばいいんじゃね
173 名前:163 [2020/05/20(水) 06:43:20.78 ID:98prku9b.net] >>166 早速ありがとうございます そのままだとフィルターかけられたROWも選ばれません? オートフィルターかけた配列を一旦コピーすればいいのでしょうか?
174 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 07:03:34.54 ID:skRckF1R.net] ランダム選択が目的なら、そもそも、オートフィルターにこだわる必要あるのかな? VBA使うなら、オートフィルターを扱うのは微妙に面倒だから、自前でフィルターすればいいと思うぞ
175 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 08:27:34.61 ID:DAK+DifG.net] オートフィルタやオートフィルタ的コードは使わない VBAのみで 乱数生成は一度きり 3桁の乱数 a を生成する まず a を6で割って余りが0〜5まででるんで 0が出たら6年 1が出たら1年 2が出たら2年 3が出たら3年 4が出たら4年 5が出たら5年 とする 例えばここで2が出て2年が選択されたら さっきの乱数 a をまた使って、組数で割って余りを求める んで同じようにして 今度は選択された組の人数で割って個人に割り当てられた番号でを特定する これを繰り返して複数人を選んでいく 選ぶ過程で同じ学年はダメとかあるなら 上の例で言えば一旦2が出たら次は2
176 名前:を排除するとか 繰り返し文の中で if 使って条件つけていく 学年の数、組の数、クラス人数は予めシートに表にしておくこと とかとか [] [ここ壊れてます]
177 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 08:28:13.58 ID:DAK+DifG.net] 一度きりってのは1人選ぶのに一度ってことでしゅ
178 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 08:30:51.03 ID:DAK+DifG.net] 6学年あって6組の学年があったりするとだめか 階層が下がるごとに乱数生成してもいいのかね
179 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 09:26:22 ID:CH9LsvxQ.net] 何年何組は決めておいてから誰にするかを乱数?
180 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 09:45:48.33 ID:B3VzH1xh.net] A1からオートフィルターをかけて もし、変数aが空欄でなければ、B列で変数aと同じ値だけにしぼる もし、変数bが空欄でなければ、C列で変数bと同じ値だけにしぼる もし、変数cが空欄でなければ、D列で変数cと同じ値だけにしぼる というような書き方をおしえてください
181 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 11:11:47 ID:nPhD6zxk.net] >>163 Dim r As Range Dim n As Long Dim i As Long With Range("A1").CurrentRegion With .Offset(1, 0).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) n = 0 For Each r In .Rows n = n + 1 Next if n = 0 then exit sub end if n = 1以上n以下の乱数 i = 1 For Each r In .Rows If i = n Then rを使ってなにかする Exit Sub End If i = i + 1 Next End With End With
182 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 11:23:14.33 ID:qcti6JCq.net] >>173 まず意味が不明 →「変数aが空欄」 よくわかんないけど、 特定の表について、 VBA上で宣言した変数ごとに対応した列をフィルタする簡単なものなら書いてみた。 「空欄」の意味が不明なので、NULLか空文字か、それともセルのことだったのか、 そういうことも質問時に気にするように。 https://i.imgur.com/wNuWmnl.png
183 名前:173 mailto:sage [2020/05/20(水) 12:02:23.38 ID:B3VzH1xh.net] >>175 ありがとうございますm(_ _)m
184 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 15:56:33 ID:a9xbkMkn.net] 余談だがグループの中から1人をランダムで選ぶ場合、 同じことを繰り返すと同じ人が選ばれる可能性がでてくる それを無くしたい場合はシャッフルしてから順番に選ぶといい
185 名前:デフォルトの名無しさん [2020/05/20(水) 17:56:09 ID:IoSOKpcA.net] 何かをさせるときに一度リセットする的なアレですね。 プロージャくっつけて作ってる初心者だが何となくその感覚 スマホとPCのデータが両方消えて 前スレで乱数の発生教えてくれた人のコードが見れなくなったが、やべえ
186 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 18:10:15.58 ID:bnGR2vkC.net] いや選ばれる人の立場になると、 俺前回やったのにまた俺?他の選ばれてない人はズルくね?みたいな
187 名前:デフォルトの名無しさん [2020/05/20(水) 22:38:53 ID:cJtMR3HM.net] 前スレの教えてくれた恩人のコードやっと見つけたあああああ Sub 乱数発生させる() For 項目 = 1 To 6 '項目数を変更 列 = 項目 + 2 最小 = WorksheetFunction.Min(Cells(6, 列).Resize(30)) 最大 = WorksheetFunction.Max(Cells(6, 列).Resize(30)) 幅 = 最大 - 最小 For サンプル = 1 To 25 'サンプル数 行 = サンプル + 5 If Cells(行, 列) = "" Then Cells(行, 列).NumberFormatLocal = "0.000" Cells(行, 列) = Rnd() * 幅 + 最小 Cells(行, 列) = Round(Rnd() * 幅 + 最小, 3) End If Next Next End Sub これがC6がサンプル1の項目1が始まりになるシートで使えてるんだけど これをC12からとかに変えるにはどこ弄ればいいですか? 誰かコメントをこれに添えてもらえませんか… 前スレの大恩人に救われたコードを更に流用したいです
188 名前:デフォルトの名無しさん [2020/05/20(水) 23:01:
] [ここ壊れてます]
189 名前:11 ID:cJtMR3HM.net mailto: Sub 乱数発生させる() For 項目 = 1 To 20 '項目数を変更 列 = 項目 + 最小 = WorksheetFunction.Min(Cells(6, 列).Resize(30)) 最大 = WorksheetFunction.Max(Cells(6, 列).Resize(30)) 幅 = 最大 - 最小 For サンプル = 1 To 25 'サンプル数 行 = サンプル + 11 If Cells(行, 列) = "" Then Cells(行, 列).NumberFormatLocal = "0.000" Cells(行, 列) = Rnd() * 幅 + 最小 Cells(行, 列) = Round(Rnd() * 幅 + 最小, 3) End If Next Next End Sub 項目数を20に変えてC12セルから入力させたいんだけどWorksheetfunctionのとこの6と30も変えないとダメですかねこれ 乱数が狂うのかなぁ [] [ここ壊れてます]
190 名前:デフォルトの名無しさん [2020/05/20(水) 23:30:59 ID:c0Xo7Xk6.net] 自分で考えることもしない厚かましい馬鹿は消えろ
191 名前:デフォルトの名無しさん [2020/05/20(水) 23:45:16 ID:cJtMR3HM.net] Sub 乱数発生させる() For 項目 = 1 To 20 '項目数を変更 列 = 項目 + 最小 = WorksheetFunction.Min(Cells(12, 列).Resize(36)) 最大 = WorksheetFunction.Max(Cells(12, 列).Resize(36)) 幅 = 最大 - 最小 For サンプル = 1 To 25 'サンプル数 行 = サンプル + 11 If Cells(行, 列) = "" Then Cells(行, 列).NumberFormatLocal = "0.000" Cells(行, 列) = Rnd() * 幅 + 最小 Cells(行, 列) = Round(Rnd() * 幅 + 最小, 3) End If Next Next End Sub 考えたけどこれかなぁ 他ののまっさらなシートだと乱数再現できた けど反映させたいシートだと乱数が狂う 配置も数値も同じなのに シートの設定かぁ
192 名前:デフォルトの名無しさん mailto:sage [2020/05/20(水) 23:49:11 ID:Khp9j2eL.net] 数千行〜数万行のデータが格納されてるシートで、 ある特定の範囲で最大文字数を取得するには 配列関数で{Max(Len(A1:A10))}とすれば良いですが(VBA上でEvaluateを用いて実装してます)、その最大文字数があるセルの場所(行番号)を特定する方法はありますか? 最大文字数のセルが複数ある場合はその全てのセルの行番号を取得したいです 最終的に、範囲内の最大文字数のセルの背景色を変えたいのが目的です
193 名前:デフォルトの名無しさん mailto:sage [2020/05/21(Thu) 00:19:06 ID:OWznaKXu.net] >>184 セルの文字数がその最大文字数と同じなら色変えるっていう条件付き書式を設定する
194 名前:デフォルトの名無しさん mailto:sage [2020/05/21(Thu) 00:48:50 ID:V79mjqtT.net] >>185 条件付き書式とは盲点でした。 トライしてみます。ありがとう!
195 名前:デフォルトの名無しさん [2020/05/21(木) 01:01:13.95 ID:eV6pHfb6.net] わかった。 けどもう後には引けんほど次元の高い事やらせてて手に負えないわ
196 名前:デフォルトの名無しさん mailto:sage [2020/05/21(木) 03:10:09.62 ID:u8xoMicA.net] 気づくの遅すぎ
197 名前:デフォルトの名無しさん mailto:sage [2020/05/21(Thu) 06:58:06 ID:Qgph+4Ei.net] フォームのラベルに計算結果を表示について。 結果がプラスならそのまま、マイナスなら赤字にマイナス記号を付けるにはどうしたらいいですか? 例 350 -350←赤字
198 名前:デフォルトの名無しさん mailto:sage [2020/05/21(木) 07:11:40.31 ID:uDeLtUtB.net] >>183 セル範囲の内容で乱数の範囲が設定されているからデータが入力されていないと乱数にならないのに、 そこにデータが入力されていると値が更新されない なかなかのジレンマだね 余談だけど、直感的にわかりにくいから、ループカウンタは列と行そのものにした方がいいと思うぞ あと、項目数と基準セルを変えたいなら、それを変数にして、こんな感じ 項目数 = 20 サンプル数 = 25 行0 = Range("C12").Row 列0 = Range("C12").Column For 列 = 列0 To 列0 + 項目数 - 1 ...以降も上記変数で置き換える
199 名前:デフォルトの名無しさん [2020/05/21(Thu) 08:07:12 ID:Sgq4UdRX.net] >>190 ありがとう、全部のコード貰った後に少しずついじる事しかできないレベルだからまた挑戦してみるわ コメントしっかり残して勉強するべしですな
200 名前:デフォルトの名無しさん [2020/05/21(Thu) 12:39:59 ID:VB42BHka.net] >>190 それとこのコード見てさらっとそうやって理解できるってやっぱすごいね 仰るとおり今記入してある数値はそのまま で残りその数値を元に乱数で埋めるというのを 前スレの人が教えてくれた みんな凄いの一言
201 名前:デフォルトの名無しさん [2020/05/21(Thu) 12:46:28 ID:/CAIZx5s.net] 日本語よりはるかに簡単
202 名前:デフォルトの名無しさん mailto:sage [2020/05/21(Thu) 18:17:58 ID:uS9Lfycl.net] パワークエリでデータモデルに読み込んだ後ファイル移動等して元ファイルを参照できない状態からデータをシートに書き出したいのですがvbaで出来ますか? 手動では既存の接続からテーブルとして書き出せるのですがマクロ化するとクエリの更新処理でパスが見つかりませんというエラーになります
203 名前:デフォルトの名無しさん mailto:sage [2020/05/21(木) 20:15:46.18 ID:2OHs6iV3.net] >>189 その文章そのまんま単純に処理に起こすだけでいけるだろ
204 名前:、 [] [ここ壊れてます]
205 名前:デフォルトの名無しさん mailto:sage [2020/05/21(Thu) 20:23:35 ID:L96ERFQO.net] >>194 読込時にテーブルデータを別シートにコピーするようにしとけば?
206 名前:デフォルトの名無しさん mailto:sage [2020/05/21(木) 21:28:40.44 ID:1bkcSVS7.net] >>194 Excel.Currentworkbookで、テーブルの値をパスとして読み込むようにしておいて、ファイル移動したらVBAでそのテーブルの値を書き換えるようにする
207 名前:デフォルトの名無しさん [2020/05/21(Thu) 22:27:29 ID:eV6pHfb6.net] 銀行まるめ型だっけ 仕事で四捨五入多用する俺はあの機能がうざすぎる Format関数使ってるけど素直にRound関数はエクセルと同じ機能にしろよマジで
208 名前:デフォルトの名無しさん mailto:sage [2020/05/21(Thu) 23:25:30 ID:uS9Lfycl.net] >>196 容量がでかいのでどうしても必要なときだけシートに書き出す形にしたいんです >>197 元ファイルは自分のローカルにあって共有フォルダで別の人が使う想定なので
209 名前:デフォルトの名無しさん [2020/05/21(木) 23:51:59.74 ID:g1Bqd7P3.net] ある何かをやりたいときに骨子になるコードが完成するともうそこから手直しが楽しくて止まらないわ
210 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 00:18:17 ID:TbAUFCKp.net] プロパティと引数の使い分けがいまいちわからん クラス内の一つのプロシージャで利用する変数なら引数で渡してよいの?
211 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 03:00:05 ID:qVNfs0Gr.net] 動けばいいんじゃね
212 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 04:52:54.15 ID:HmQhS1LZ.net] プロパティ とりあえず1個ずつセットしといて、処理の開始は後回しにできる 順番を意識しなくていい 引数 複数の変数を参照渡ししたい時、構造体やサブプロパティは微妙にめんどくさい セット忘れが防げそう(願望
213 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 06:38:47 ID:mpVA2e0J.net] >>201 一応定義としては、プロパティはオブジェクトの設定や状態を見たり書いたりするものという事になってる 一度設定したら変えることが殆どない設定はプロパティ、 ちょくちょく変える設定は引数、 みたいな感じでいいと思う
214 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 07:33:08.57 ID:TbAUFCKp.net] >>203 >>204 ありがとう 厳密に使い分けは難しそう 動くけど、他人が読んだら混乱するんだろうなと思いながら書いてる
215 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 11:06:37 ID:y/Lzet5S.net] >>205 色々作ってるとそのうちなんとなくどっちにした方がいいかわかってくると思うよ
216 名前:デフォルトの名無しさん [2020/05/22(金) 13:23:07 ID:DQGXczns.net] 変数ってみんなどんな付け方してんの My〜とかそういう変数付けたりしてるサイトもあれば色々だね
217 名前:デフォルトの名無しさん [2020/05/22(金) 13:55:43 ID:uqJ26gv2.net] 日本語で 「わたしの〜」とかそういう変数名を付けたりしてる。
218 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 18:08:02 ID:FMkBDb3b.net] 拙者も
219 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 18:16:23 ID:CsJitSv2.net] 我(われ) 某(それがし) 拙(せつ) 朕(ちん)
220 名前:デフォルトの名無しさん mailto:sage [2020/05/22(金) 21:51:59 ID:Cbv5LLjj.net] セルの数式中で条件成立時のみHYPERLINK関数を生成してるのですが、 ?HYPERLINK関数が生成された事を確認 ?リンク切れが無いか確認 する事は可能でしょうか? イメージは下記ですが、数式は複数のパターンがあり困っています =if (A1<>"", HYPERLINK(A1&B1,B1),B1)
221 名前:デフォルトの名無しさん [2020/05/22(金) 23:34:25.54 ID:xc22QBUa.net] 未だに二つのセルの掛け算を電卓で計算してて手入力する50歳のおじさんがいる職場なんだよな
222 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 01:03:15 ID:pi9ABoQN.net] ?HYPERLINK関数が生成された事を確認 -> 隣のセルに If (xxx, 1, 0) とかやっとけばいいんじゃないの ?リンク切れが無いか確認 -> マクロでHTTPリクエストしてステータスコード見ないと駄目だろうね
223 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 04:02:16 ID:TU97qQFp.net] >>205 プロパティは根幹部分を触らせるメンテ用メソッド的な意味合いで用
224 名前:意するといいよ。 例えば「何かを〇倍にする」というメソッドを持つクラスがあったとして、 この「何か」部分が引数で、「〇倍」部分がプロパティ。 利用者はプロパティで「〇倍」を「二倍」等に変えて異なる機能を持つインスタンスを作る事が出来る。 もちろん予め二倍や三倍に設定済みのクラスを作ってもいいんだけど、 プロパティで変更出来るようにすれば一つのクラスで済むという利点がある。 インスタンス化してプロパティを変えたオブジェクトを返す関数(コンストラクタ関数)を作れば凄く便利だよ [] [ここ壊れてます]
225 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 04:04:50 ID:TU97qQFp.net] インスタンス化は new クラス名 でオブジェクトを作ることで、 インスタンスはその作成したオブジェクトのことね
226 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 17:42:06 ID:x2nf7i64.net] ExcelVBAでCSVファイルを2次元配列に格納しようと思い、そこまで作成はできました。 ここを参照しました:ttps://ateitexe.com/excel-vba-csv-to-multi-dimensional-array/ その配列に格納した後、特定の文字列がある行を削除しようと思うと、配列だとかなり手間だと感じました。 (文字列を検索、行を削除、詰める作業が必要) だったら、そもそも配列に入れる前にそのcsvの行を無視しようと思うのですが、どうしてもうまくいきません。 どうしたらいいのでしょうか?
227 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 17:46:18 ID:105ldQbQ.net] 文字列を検索、行を削除、詰める作業をお勧めします
228 名前:デフォルトの名無しさん [2020/05/23(土) 18:20:37 ID:RvKaLrIF.net] >>216 馬鹿過ぎて話しにならない 少しは学んでから出直せ
229 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 18:40:31.27 ID:0VGwJWuY.net] >>216 if(文字列.含んでるよ("RegExp") )then continue; で済む(VBAにはcontinue無いけど概念的には)処理を 「どうしてもうまくいきません」と言ってるわけ?
230 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 18:49:52.27 ID:J+1ULzMv.net] 特定の文字列がある行は空にすればええやん それとも別に空の行も含まれてるんか
231 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 19:27:43 ID:n1v+MUu8.net] >>216 そのどうしてもうまくいかない部分を書けよ…
232 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 19:33:17 ID:P5e4K719.net] 例えば、Ruby で、入力ファイルが、 あ,いう a,bc 1,23 require 'csv' ary = [ ] CSV.foreach( "input.csv" ) do |row| # 1行ずつ処理する next if row[ 1 ] == "bc" # skip ary.push row # 追加 end p ary #=> [["あ", "いう"], ["1", "23"]]
233 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 20:02:14.42 ID:FaM1nYaB.net] 要素数を変えるような操作を配列にする場合、 VBAだと大抵は新しい配列を作るような処理にしたほうが楽 foreachで条件にあえば追加する、そんな感じ
234 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 20:16:37 ID:+RVUJGzG.net] 配列に入れる前にそのcsvの行を無視しようという発想は正しいと思うぞ Splitする前に文字列判定して、無かったときのみ n=n+1 まで実行するようにすればいけるはずだよ それと、ary(n, i) = tmp(i) のところは要注意 csvの列数がRedimの行で設定した数分を越えると、配列の範囲外エラーが起きるので
235 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 21:48:22 ID:GhgCxwTJ.net] B列の2行目から最終行に「2020/5/23」のような文字列が入力されているので この文字列を「2020/5/23」に変換するコードを教えてください
236 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 22:07:45 ID:DEt0hEL0.net] >>225 Sub Sample1() End Sub
237 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 22:09:12 ID:YkB5QRvg.net] >>226 ありがとうございます!
238 名前:225 mailto:sage [2020/05/23(土) 22:38:35 ID:GhgCxwTJ.net] >>226 >>227 すみません。「文字列を日付型」に変換でしたm(__)m
239 名前:デフォルトの名無しさん [2020/05/23(土) 23:15:23 ID:RvKaLrIF.net] >>228 馬鹿は死ねよ どうしてこう次から次へと馬鹿が来るんだ?
240 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 23:49:07 ID:DwihZV3Z.net] 例 数値 1500 期間 2020/05/21〜2023/02/12 この期間のセル数に数値1500の値を 均等割で入れる場合のセル数の計算方法がわかりません。 ※用意してるセルの期間 2020年1月から2022年12月まで。 ※ひと月3分割で1年36マス。 上旬1〜10 中旬11〜20 下旬21〜末 ※2022年を超えた場合はそこまでの均等割を入れそれ以降は入れない。 ※開始期間が2020年1月以前の場合は1月からの均等割を割り振る。 こんな感じの事をしたいんですけど、期間の計算方法の伝授願います。
241 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 23:51:24.02 ID:GhgCxwTJ.net] >>225 Sub Test() Dim cnt As Long Dim da As Date For cnt = 2 To Cells(Rows.Count, 2).End(xlUp).Row da = CDate(Cells(cnt, 2)) Range("B" & cnt) = da Next cnt End Sub
242 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:33:29.03 ID:jgkofs6w.net] >>230 VBA関係ないただの算数ないか
243 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 05:46:51.68 ID:kGXS6p+T.net] >>229 君がつけ上がってる限り現れるね
244 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 06:12:40 ID:VMYRmKv4.net] 謙虚にしてたらもっとひどかった
245 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 06:15:08 ID:A7TYPIWJ.net] Ruby の、clamp みたいな関数だろ clamp(min, max) -> object self を範囲内に収めます。 self <=> min が負数を返したときは min を、 self <=> max が正数を返したときは max を、 それ以外の場合は self を返します 1.clamp(0, 100) #=> 1 101.clamp(0, 100) #=> 100 -1.clamp(0, 100) #=> 0
246 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 09:33:40 ID:ozGH/zB/.net] やたらrubyで表したがるやつなんなの? 無意味だし完全にスレチなんだけど
247 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 09:52:14 ID:tKHuSqSe.net] それこのスレの透明人間
248 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 09:56:21 ID:Aun0kaOs.net] 「おれRuby知ってるんだ(どやぁ)」 じゃね?
249 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 11:44:26 ID:0I4G4YZw.net] >>238 え?たかだか一つ言語知ってるだけでどや顔なんて…ありえるかもな。
250 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 15:25:32 ID:ZTIdhNvp.net] >>230 説明がよくわからない。 サンプルを用意するなど、読み手にわかりやすい工夫をすること。 (期間が複数あってよくわからん、期間の基準が上中下旬なのか2023/2/12みたいな細かい日付もあるのか、 「この期間のセル数に」とか、36「マス」とか。 自分で作ったような言葉を、相手はまず理解できないと思うこと。) 最大限理解しようとして作ってみた。 https://i.imgur.com/aYLnniP.png https://i.imgur.com/Edwp9qW.png
251 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 17:31:52 ID:aHD8sbyt.net] >>230 ひと月を3分割って、微妙に面倒だったりするね 質問は期間の求め方なので、こんな感じでいいと思う 簡単な流れは、月の差-1を出して*3し、開始と終了の日-1を10で割って半端な分を補正する感じ 計算上、初回分も算入する必要がある事に注意(例えば、 5/24 〜 5/24 の場合、単純に引くと0 になるから+1する必要がある) あと、月の上中下旬単位でのみ考える(2/12 は2/20と同等に扱う) Function kikan(date1 As Date, date2 As Date) As Integer Dim res As Integer res = DateDiff("m", date1, date2) - 1 'VBAでは単純な月の差なのでDay(開始日)>Day(終了日) となる場合を気にしなくていい If res < 0 Then '同じ月
252 名前:res = min2((Day(date2) - 1) \ 10, 2) + 1 res = res - min2((Day(date1) - 1) \ 10, 2) Else res = res * 3 res = res + 3 - min2((Day(date1) - 1) \ 10, 2) res = res + 1 + min2((Day(date2) - 1) \ 10, 2) End If kikan = res End Function Function min2(a, b) : min2 = IIf(a < b, a, b) : End Function あと、各(月3分割)の均等割を出すとき、単純に等分した数値を次々加算していくと誤差が出る可能性があるので、その都度かけ算で計算しなおした方がいいよ [] [ここ壊れてます]
253 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 18:45:45 ID:X8IGI7Pl.net] 均等ではなくなることが分かっているのに均等割というのは一体 均等ではないなら分割の明確なルールと呈示するのが先だろうに
254 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 20:23:46.09 ID:Ij6CWItZ.net] select case iDay case 1 to 10 ’上旬 case 11 to 20 ’中旬 case else '下旬 end select こんなんでいいんじゃねーの
255 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 20:26:51.14 ID:WNKMZrc1.net] 理解ができるのがすげぇよ 俺には文章から何がしたいのか分からん
256 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 20:35:05 ID:CLZ8mfOM.net] me,too
257 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 20:45:14 ID:i+YVCLEB.net] セルに値を手動入力中にVBAから別のセルにアクセスがあるとエラー落ちするんだけど、非同期に処理する方法はないんかね。 VBA側はインターバルタイマーでデータ処理させてて、一方でユーザーはメモ入れたり諸作業したいんだ。
258 名前:デフォルトの名無しさん [2020/05/24(日) 20:46:27 ID:8AgUd6nh.net] vb全然知らないんだけどサクッと教えてほしい Range("C2").AutoFill Destination:=Range("C2:C804"), Type:=xlFillDefault というオートフィル用をするコードがあるとする。 このコードの804部分はいつでも固定値だからセル内の数字を参照するような可変にしたい 一応このコードの前に Volume = Range("J5").Value として数字があるセルから数値をVolumeに得てるんだけど このVolumeを804の部分に当てはめたい どうしたらいい?
259 名前:デフォルトの名無しさん [2020/05/24(日) 21:22:14.11 ID:xjag2nx7.net] >>247 馬鹿は死ねよ
260 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 21:26:46.69 ID:YjTDgAdj.net] >>247 " "は文字列を表す
261 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 21:29:42.85 ID:IJT9Ws79.net] >>247 C2からvolume個の連続データ(volumeは可変)を作りたいんだとしたら .AutoFill Destination:=.Resize(volume) とかどうやろね
262 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 21:35:15.28 ID:IJT9Ws79.net] >>246 セマフォ(いわゆる排他処理)をエクセルでやるのか 実現するのは結構テクニカルになるね 仮にAccessが使えるなら使ったほうがすっきりするかと
263 名前:デフォルトの名無しさん [2020/05/24(日) 21:50:08.32 ID:8AgUd6nh.net] >>250 C2から始める場合はどうしたらいい?
264 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 22:01:27.85 ID:IJT9Ws79.net] volume = Range("j5") With Range("c10") .AutoFill Destination:=.Resize(volume) これでだめ?
265 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 22:42:24 ID:Ij6CWItZ.net] Volume = Range("J5").Value Range("C2").AutoFill Destination:=Range("C2:C" & cCtr(Volume)), Type:=xlFillDefault こういうことじゃね
266 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 22:43:40 ID:Ij6CWItZ.net] × cCtr 〇 cStr
267 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 23:13:25.93 ID:FPjhV5Sl.net] >>246 VBAでブックへの書き込みがないなら、外部から読み取り専用で開いてデータだけ頂いて処理する方法がある 例えばVBScriptならVBAからソースをコピペできる部分も多い 後はChangeイベントで変更が行われた時に、バックエンドとデータを同期する。 処理自体はバックエンドが行う。 サーバーは空いてるPCに(VBA
268 名前:ナ実行したければ)Excelをインストールして使えばいい。 [] [ここ壊れてます]
269 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 03:36:22.58 ID:fpmiA/eB.net] セルに手入力してるんだから保存するんじゃね
270 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 07:55:53 ID:2rkq/dFE.net] >>240 遅くなり申し訳ないです。説明が下手すみません。後でゆっくり読んで理解してみます。
271 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 07:58:34 ID:2rkq/dFE.net] >>241 知らないコードあるので調べて見ます。
272 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 13:23:07 ID:arQu/7J9.net] セルの入力規則の選択項目をコンボボックスのListindexみたいに番号抽出って出来ないんでしょうか
273 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 15:12:23 ID:TkkoIJYG.net] できる
274 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 15:21:07 ID:TNrQR7ea.net] "セルの入力規則の選択項目"と言っているのは、 データの入力規則ウインドウ−設定タブ−条件の設定について、 入力値の種類を"リスト"にしたときの"元の値"に入力した各値のこと? あとわざわざ番号で抽出する意味は? この"元の値"をVBAでセル(range)のプロパティから取得すると、だいたい下のどちらかのパターンのStringとなる。 1 "元の値"に入れたそのままのリスト用文字列(「a,b,c」など) 2 "元の値"に入れた参照セル範囲(「=$A$1:$A$5」など) 「番号抽出」とかいう言葉がよく分からんけど、上記で 1なら文字列を配列にするなどで解析して、セルの値(Value)で取得する 2なら参照先を取得して配列にするなどする とかで"元の値"を利用できるはず わざわざIndexを取りたいならその配列なりから取ればいい 目的がおかしくなってる可能性がある
275 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 16:03:17 ID:WdAmw2Xs.net] >>260 Function validFormula(c as Range) '選択セルの入力規則式を取得(簡易版) validFormula = Evaluate(c.Validation.Formula1) End Function というユーザー定義関数を用意して =MATCH(A1,validFormula(A1),FALSE) の様な感じ
276 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 16:41:06 ID:arQu/7J9.net] >>262 説明が下手ですいません やりたい事は以下のとおりです。 ?表示する場合 ・機器と通信して、通信データ読み出すとIndex(数値)が取得できる。(変更不可) ・取得値が1の場合、選択リスト要素が"aa,bb,cc,dd"とするとセルにはaaが選択される。 ?取得する場合 ・セルの選択リストの選択要素が"dd"だった場合、4を返すとなる ・Index=4を通信で送る コンボボックスだと楽に出来るのですが、セルを使った場合の対処に困っています。大量に項目があるのでコンボボックス一つずつ作成は対応できなくて。
277 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 18:18:30 ID:pvRy3Vo6.net] PDF出力をするときに、ファイル名をBK19にして、同じフォルダ内の、 "納品書"というフォルダ内に保存したいのですが、保存場所が同じフォルダの同じ階層になってしまいます。 "納品書"フォルダに保存する方法をお願いします Dim PATH_ As String 'このブックと同じフォルダの"納品書"フォルダ 〜途中省略 PATH_ = ThisWorkbook.Path & "\" & 納品書 〜途中省略 sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PATH_ & Range("BK19"), OpenAfterPublish:=False それと、ネット上のサンプルの中に、For文のNextの後の変数が書いていないものがありますが、どういう時に書かなくていいんですか
278 名前:260 mailto:sage [2020/05/25(月) 18:21:44 ID:arQu/7J9.net] 出来ました。
279 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 19:12:11.07 ID:kYm8Dr+5.net] > PATH_ = ThisWorkbook.Path & "\" & 納品書 PATH_ = ThisWorkbook.Path & "\納品書"
280 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 19:17:16.20 ID:0mNo0xGU.net] すみませんエクセルですが教えてください セルに2020/5/25と入っている。 2020/5/25(月)というテキストにしたい。
281 名前:265 mailto:sage [2020/05/25(月) 19:27:24.37 ID:pvRy3Vo6.net] >>267 試しましたが、納品書フォルダには保存されず、同じ階層に保存されてしまいます。
282 名前:デフォルトの名無しさん [2020/05/25(月) 19:32:32.8
] [ここ壊れてます]
283 名前:0 ID:RZDTWD0g.net mailto: >>268 セルの書式設定から表示形式をユーザー定義の yyyy/m/d(aaa) にする [] [ここ壊れてます]
284 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 19:37:30.13 ID:voBvEsJz.net] ごめ PATH_ = ThisWorkbook.Path & "\納品書\" これは?
285 名前:265 mailto:sage [2020/05/25(月) 19:45:38 ID:pvRy3Vo6.net] >>271 ありがとうございます。納品書フォルダに入るようになりました。
286 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 20:09:54 ID:0mNo0xGU.net] >>270 さらに、テキスト化は できますか?
287 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 20:55:09 ID:+lR6vdzO.net] >>273 text関数
288 名前:デフォルトの名無しさん [2020/05/25(月) 21:16:44 ID:Xi2PhkBU.net] >>273 死ね
289 名前:デフォルトの名無しさん [2020/05/25(月) 21:40:54 ID:oBwL7wIu.net] >>275 この馬鹿モンが!
290 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 22:09:44 ID:5DLeDpsM.net] dim sine as object
291 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 22:59:11 ID:SN+Wx3Rt.net] Set sine = Nothing
292 名前:デフォルトの名無しさん [2020/05/25(月) 23:18:40.90 ID:jPur8MoZ.net] テンプレから複数作ってく場合テンプレの右にどんどんコピーしていって あとでテンプレシート以外を新しいブックに保存 これだとなぁ、おばちゃんがややこしいと文句言うかも 悩むなぁ
293 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 10:12:12.68 ID:TGtSSAvG.net] ややこしや
294 名前:デフォルトの名無しさん [2020/05/26(火) 12:54:30.53 ID:aCjjmYBU.net] 所属してる部署や業務によってやりたい処理が違うから全部まんべんなく覚えていきたいという無駄な欲を捨てんといかんなぁ はぁぁ大学行かずに専門とかで情シス専攻すればよかった
295 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 15:22:17 ID:QaHLpt3K.net] アホはしね
296 名前:デフォルトの名無しさん [2020/05/26(火) 15:33:26 ID:aCjjmYBU.net] 毎回それ言うためだけに見に来てるんなら 見なきゃいいのに
297 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 17:01:22 ID:xe35/PQB.net] IT畑の人間は既存の業務フローを神聖不可侵な絶対的公理と考えてそれを自動化しようという発想をしがちだけど、それは注意が必要だと思うわ 自動化以前にそもそも無駄な業務って沢山ある 特にVBAで安易に自動化したくなるような業務はその傾向が強くて、現場の人間とちゃんと話せばあっさり消滅したりするもんだ
298 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 17:18:49.31 ID:2eoVc4aq.net] 客の業務自体の改善に付き合うなんていうめんどくさい事はしないよ
299 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 18:59:45.92 ID:LKm82hyE.net] 客じゃなくて自分の会社なんだろ
300 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 19:26:44.98 ID:VDow7UZ6.net] これはおかしくね?と思っても依頼されたように作るしかない
301 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 19:38:37 ID:4UYpyuwL.net] ああ、上司の命令ならな。 反論しろって? 10個の工程をPGが3工程くらいに短縮すると、理解できなかったりするんだよな。
302 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 19:50:36.19 ID:e8iGmvo7.net] そりゃおまいさんが問題の分離ができてないのでは
303 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 19:52:38.59 ID:MDEhHweB.net] 自社の業務改善って自分もしくは管理下の範疇でしかしないわな 責任取れる範囲でやらないと痛い目みるし、ドキュメントだ体制だルールだなんだ面倒だしな 基本周りは全部敵だよ
304 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 20:18:36 ID:l4mmL3sO.net] そういう組織は長生きしないだろうな
305 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 20:25:34 ID:EtaD8bXQ.net] >>230 Ruby で作ってみたけど、めちゃめちゃ複雑な仕様だった! 2020/05/21 〜 2023/02/12 を以下の、3つの期間に分けて、[0, 94, 5] となった! 〜2019/12/31 2020/1/1〜2022/12/31 2023/1/1〜
306 名前:292 mailto:sage [2020/05/26(火) 20:30:27.90 ID:EtaD8bXQ.net] 10日ごとの期間の数が、[0, 94, 5]
307 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 20:41:03.58 ID:I81g2H63.net] 所定のフォルダの中に「AAA.xl
308 名前:唐」という名前のエクセルファイルがあった場合、そのファイルを削除し、 その後同一フォルダ内のエクセルファイルを「AAA.xlsx」というファイル名に変更する、という処理を しています。マクロ作成当初は問題なく処理できていたのですが、数日前からファイルを削除した後 実際にはエクセルファイルがあるにもかかわらず「エラー53 ファイルが見つかりません」とエラーが でるようになりました。終了ボタンを押してエラーウィンドウを閉じた後、同じ処理をすると今度は エラーが出ずに処理できます。 コード自体は変更していないのですが、このように実際には該当するファイルがあるにもかかわらず、 1度目(ファイル削除後ファイル名変更。ファイル削除処理は正常終了)はファイルが見つからずエラー、 2度目(削除するファイルがない状態でファイル名変更)は正常に処理が終了、となってしまう原因で なにか思い当たるものがある人いますか? 具体的には AAA.xlsx 20200526.xlsx ↓(AAA.xlsxを削除)←1回目はこの処理の後エラー53 20200526.xlsx ↓(ファイル名変更) AAA.xlsx となり、2回目は 20200526.xlsx ↓ AAA.xlsx で正常に処理ができます。 ファイル名変更は Name "*.xlsx" as "AAA.xlsx" で処理しています [] [ここ壊れてます]
309 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 20:46:55.97 ID:VDow7UZ6.net] >>294 エラーが出るコードを見なきゃわからん
310 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 21:22:32.89 ID:EtaD8bXQ.net] >Name "*.xlsx" as "AAA.xlsx" 何となく、この、* がヤバそうw
311 名前:デフォルトの名無しさん mailto:sage [2020/05/26(火) 21:32:47.20 ID:PZVl0MiE.net] プロパティのセットで配列や複数の引数を渡したいんだけど、送り手側の構文エラーにしかならない 調べても見つからないんだけど普通やらないの? Variantで宣言しておけば通るっぽいけど
312 名前:デフォルトの名無しさん [2020/05/26(火) 22:38:28 ID:3xGTmG1z.net] Sub テキストをエクセル() 'txtをエクセル化 With CreateObject("wscript.shell") .currentdirectory = "C:\" End With Application.Dialogs(xlDialogOpen).Show "*txt.*" End Sub 色々調べて作ってみたんですが テキストファイルウィザードのウィンドウが出て完了を押す という手間が残りやす… この手間をスキップというか直接Excelにデータ変換…教えてください
313 名前:デフォルトの名無しさん [2020/05/26(火) 23:46:26.84 ID:l/nHkMvV.net] また馬鹿が来た 馬鹿は何をやりたいかすら自分で把握すらしていないから馬鹿なんだよ
314 名前:292 mailto:sage [2020/05/26(火) 23:56:54 ID:EtaD8bXQ.net] >>230 Ruby で作ってみたけど、めちゃめちゃ複雑な仕様だった! https://paiza.io/projects/S4c8ZaTI3ii2SvkfgJ6gPw
315 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 01:10:50.60 ID:bxZskA6m.net] >>291 組織なんて巨大になるほど無駄が増えていくもんだ
316 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 15:11:46 ID:ILM8Kvmo.net] >>298 開きかたがそもそも違う
317 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 20:47:31 ID:5ROZxNJ2.net] >>297 配列のプロパティは代入と同じくLet(値渡し)での宣言になる でも配列は参照渡ししかできないので矛盾が起きて渡せない(ByRel宣言しろと怒られる) Variantか、インスタンス変数をPublicにするか、Javaみたいにアクセスメソッドを作る SetterがあるならGetterもあるだろうからPublic宣言がいいんじゃないかな
318 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 20:55:13.77 ID:trt6Afr5.net] 294です。エラーが出るコードは以下です -------------------------------------------------------------------- Sub 入力用フォルダ内の入力用ファイル削除() Dim myPath As String myPath = ThisWorkbook.Path & "\入力用\" '入力用.xlsxがすでに存在したら削除 If Dir(myPath & "入力用.xlsx") <> "" Then Kill myPath & "入力用.xlsx" End If End Sub -------------------------------------------------------------------- Sub 入力用フォルダ内のファイル名変更() Dim myPath As String Dim myFile As String myPath = ThisWorkbook.Path & "\入力用\" '事前にこのフォルダにファイルを入れておく myFile = Dir(myPath & "*.xlsx") Call 入力用フォルダ内の入力用ファイル削除 '前回の入力用.xlsxが残っていたら先に削除 Name myPath & myFile As myPath & "入力用.xlsx" 'ファイル名変更 ・ ・ -------------------------------------------------------------------- エラー53の際にデバッグボタンを押すと最後の
319 名前: Name myPath & myFile As myPath & "入力用.xlsx" の行が選択されているので。「myPath」内に「*.xlsx」がない、ということでエラーになっていると 思いますが、実際にはファイルはあるのでもう一度マクロを実行するとファイル名が変更される という状況です [] [ここ壊れてます]
320 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 21:41:05 ID:d63wepvX.net] >>298 >色々調べて作ってみたんですが 他にもあったろうに、よくそんな奇抜な方法を見つけ出したなw そのインポートウィザード自体をマクロで記録して改造すればいいんだよ。
321 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 22:17:38.57 ID:auut2Mwo.net] >>304 なぜエラーになった時のmyFileの値を確認しないの?
322 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 09:11:03 ID:oSYrowbf.net] Dir関数って何でコレクション返さずに、あんな奇妙な実装なんだろ なんか訳があるのか
323 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 09:41:03 ID:2MUNkHgk.net] >>307 ファイルが大量にあるとコレクション取得に時間がかかる イテレータがないVBAとかCだとDir()みたいな方式は珍しくないよ
324 名前:デフォルトの名無しさん [2020/05/28(木) 09:59:38.59 ID:8QzLeV6c.net] FDなんかでディレクトリエントリの順番変えて高速化とかの時代
325 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 12:03:25.03 ID:u/WM2FVL.net] vlookupの参照値がエラーの場合に違うところに飛んでしまいます。エクセルの関数みたいにIFERROE(VLOOKUP(**,**,3,FALSE),"")みたいな処理をするためのコードを教えてください Dim bigcnt As Long Sub test() Dim Pagecnt As Long Dim rycnt As Long Dim syouhin As Long Dim Rowcnt As Long For Pagecnt = 1 To MaxPage Step 1 Range("DX8").Value = Pagecnt Rowcnt = 1 For tycnt = 12 To 30 Step 2 On Error Resume Next Range("K" & tycnt).Value = _ Application.WorksheetFunction.VLookup( _ Application.WorksheetFunction.VLookup(bigcnt,Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _ Sheets("list").Range("B:FU"), 107, False) Rowcnt = Rowcnt + 1 Next tyucnt
326 名前:310 mailto:sage [2020/05/28(木) 12:03:59.29 ID:u/WM2FVL.net] つづき Rowcnt = 1 For syouhin = 12 To 30 Step 2 On Error Resume Next Range("AC" & syouhin).Value = _ Application.WorksheetFunction.VLookup( _ Application.WorksheetFunction.VLookup(bigcnt, Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _ Sheets("list").Range("B:FU"), 63, False) Rowcnt = Rowcnt + 1 Next syouhina Next Pagecnt End Sub ↓のこの変でエラーがでると、次の処理が予測不能な参照値に飛びます bigcnt,Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _ "On Error GoTo 0"にしてもvlookupで参照できずにとまり、やはり予測不能な参照値に飛びます bigcntは正しい値に更新されていました
327 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 12:27:26 ID:CwUX9Txr.net] next に変なカウンタつけるなよ
328 名前:310 mailto:sage [2020/05/28(木) 13:05:26.67 ID:u/WM2FVL.net] すみません。 rycnt→tycnt tyucnt→tycnt syouhina→syouhin
329 名前:デフォルトの名無しさん [2020/05/28(Thu) 13:15:00 ID:8QzLeV6c.net] 読む気無いけどvlookup使うのは高速化とかが目的? VBAerなら自分で探したほうが融通効かないか?
330 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 13:28:52.23 ID:VMjOSmuX.net] 悪いけど、vlookup使う方がセンスいいと思うよ
331 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 13:51:27 ID:EbwElpou.net] 俺もそう思う
332 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 14:17:55.81 ID:fQiHMFwM.net] 正直まともに読む気がしなくなる ・誤字が多すぎてエラーにならないわけがない(手打ちしてるんだろ) ・シート上の範囲とかシート名、構成が不明すぎる ・同じく変数が不明すぎる(こちらはbigcntとかmaxpageとか全く知らない) ・何でデバッグで一時変数に入れるとかしないのか(二つめと四つめのVlookupは返り値とれるやろ。エラーがでるならそこかもしれんやろ、しらんが) ・なんでon errorはその二つしか試してないの、てかデバッグするなら回避しなければいいのに 速度求めるのにworksheetfunction使うのはいいけど、 こんな感じで雑に使うと可読性下がるから、そこは理解して
333 名前:ツかって [] [ここ壊れてます]
334 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 14:35:32.74 ID:1No7OPPN.net] こんな感じかな Function myVLookup(lookup, tbl As Range, col As Integer, Optional flg = True) '個人的にはflg=Falsebノしたいけど On Error GoTo err1 myVLookup = WorksheetFunction.VLookup(lookup, tbl, col, flg) Exit Function err1: 'Debug.Print lookup, tbl.Address myVLookup = "" End Function
335 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 14:55:35.18 ID:1No7OPPN.net] 訂正 × Optional flg=True ○ Optional flg=1 VBAだから、True=-1だっけ
336 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 15:47:43 ID:A0D9Z3DQ.net] vbaerってなんでしょうか?
337 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 16:26:49 ID:Xg+0aVY9.net] >>320 google.com/search?lr=lang_ja&q=vbaer
338 名前:デフォルトの名無しさん [2020/05/28(木) 17:23:33.07 ID:vsv+AImU.net] 測定系の部署だから エクセル関数でもリスト作ったりとかそういうのは使わないんだよぁ 計算系はすんげぇ使う
339 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 17:32:02 ID:NxeE/SGI.net] 100万行以上ある表で特定の範囲に太字があるセルがある場合にTrueを返却したいのですが、 セルをループする以外で判定する方法はないでしょうか。 ループだと遅いので他の方法を探しています。
340 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 17:40:50.70 ID:YLdey8mA.net] 太字で判定するしかない設計を見直す
341 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 17:53:26 ID:6oAsq0wQ.net] >>323 俺も色やフォントでデータを判定する方式はExcelには向いてないから今すぐやめるべきだと思う とりあえず、名前を付けて保存、範囲指定で太字を解除してもう一度別名保存、ファイルサイズの比較
342 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 18:24:58.06 ID:NxeE/SGI.net] >>324-325 私もすごくそう思います。ほんとアホな現場です。 vbaや関数で高速判定する術は無いということになりますかね…
343 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 18:33:29.93 ID:1No7OPPN.net] 例えば、セルB1にして =GET.CELL(20,A1)*1 を LeftIsBold とでも名前定義 太字を確認したい列の右隣に、=LeftIsBold と入力して、それを合計する 遅いか速いかは知らないけど、Excel4.0マクロだから、ユーザー定義関数関数使うよりは早いと思う あと、文字単位の太字には未対応 太字で判定する設計が良くないのは同意
344 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 18:44:24.85 ID:nu6DWAbq.net] ユーザーフォームを印刷したいんだけどA4横印刷で一枚に収まるように倍率変更って出来ない? ちょろっと調べると印刷設定に依存するとか書いてある。 吐き出し用のシートやらコード書くの面倒だし、フォームだけが印刷出来ればいいんだが本当に無理?
345 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 19:09:14 ID:HPtbnCn7.net] >>328 1回PDFにして、PDFビューアの機能でA4フィット印刷 じゃだめ?
346 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 19:19:51 ID:GEIkGrn6.net] >>326 XMLで読み込めば判るんじゃないの?
347 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 20:56:43 ID:0S10FlCu.net] >>330 100万行のワークシートをXMLにするとデータ量が10陪ぐらいになることもあるから、たぶんワークシートをVBAで直接調べた方が早い
348 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 21:21:26 ID:PIoPunSP.net] >>323 usedrangeの範囲を太字で検索してあればtrueは?
349 名前:デフォルトの名無しさん mailto:sage [2020/05/28(木) 21:44:10.77 ID:GEIkGrn6.net] >>331 じゃあXMLを自分宛てにメールで送って、Gmailで検索するのは? ってもうExcelじゃないわ。
350 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 22:37:07 ID:0S10FlCu.net] >>333 ネットを経由したらもっと遅くなると思うぞ
351 名前:デフォルトの名無しさん mailto:sage [2020/05/28(Thu) 22:48:39 ID:0S10FlCu.net] >>323 100万セルのBoldプロパティを調べるコードを作って実験してみたけど数秒で終わったぞ 範囲が限られてるなら一瞬で終わるんじゃない? これより早くする方法はないと思うぞ
352 名前:323 mailto:sage [2020/05/28(Thu) 23:44:38 ID:AwZmzoZa.net] みなさんいろいろありがとうございます。 結局ループですることになりそうです >>335さんのコードと同じような気がしますが、その数秒〜十数秒が短縮できないかなと思ってました。 ありがとうございました。
353 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 00:08:23 ID:QVnkNeSg.net] まあどう考えても>>324
354 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 06:08:45 ID:OHJZg62K.net] 業務上100万件のデータ処理が必要なら専用のソフトを独自に作るべきだろう 初心者にVBAでやらせる上司が無能としか言いようがない 今までその業務手作業でやってたんだとしたらそのままのやり方続けていればいいんじゃね
355 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 06:43:32.30 ID:z6j/3IlC.net] >>329 印刷出来れば構いません。
356 名前:310 mailto:sage [2020/05/29(金) 10:32:29 ID:I8K8veff.net] >>318 ありがとうございます。エラーを回避できました
357 名前:デフォルトの名無しさん [2020/05/29(金) 12:52:21 ID:UXGV4L+b.net] 物凄いコードを3つ 前スレで教えてくれたあの人たちが 今でもここを見てくれてますように
358 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 12:59:11 ID:wRO7TzMi.net] >>323 その範囲.Font.Bold
359 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 13:16:11 ID:I8K8veff.net] 指定したフォルダ内の"B"で始まるxlsファイルの"表紙"シートの各箇所を このブックの"comp"シートA〜C列の2行目以降に書き出していくコードを教えてください Dim path As String ,buf As String, i As Long Dim mysheet As Worksheet, srcbook As Workbook, srcsheet As Worksheet With Application.FileDialog(msoFileDialogFolderPicker)'フォルダを選択する If .Show = 0 Then MsgBox "キャンセルされました。" Exit Sub End If path = .SelectedItems(1) End With Set mysheet = ThisWorkbook.Worksheets("comp") buf = Dir(path & "B*.xls") Do While buf <> "" i = i + 1 Set srcbook = Workbook.Open(path + buf) Set srcsheet = srcbook.Worksheets("表紙") mysheet.Cells(i, 1).Value = srcsheet.Cells(3, 13) mysheet.Cells(i, 2).Value = srcsheet.Cells(5, 2) mysheet.Cells(i, 3).Value = srcsheet.Cells(7, 2) srcbook.Close False buf = Dir() Loop を試したのですが、だめでした
360 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 13:36:39 ID:Afg8U+25.net] debug.print入れまくれ で、どこがどうだめだったの?
361 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 13:38:45 ID:x/xJoOz3.net] buf = Dir(path & "B*.xls") の後ろに、 Debug.print buf Debug.print path & "B○○.xls" <--実際のファイル名を入れる で、何か気づくと思うよ
362 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 14:59:14 ID:4ofbCjLS.net] xls形式って古くね
363 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 15:00:54 ID:xfksWnzq.net] Dir君はいい加減デバッグ機能覚えようぜ ローカルウインドウ見ながらステップイン連打しよう
364 名前:343 mailto:sage [2020/05/29(金) 16:23:07 ID:I8K8veff.net] >>344,345,346,347 できました!ありがとうございます。 path & "B*.xls" ↓↓↓↓↓↓ path & "\B*.xls" Workbook.Open(path + buf) ↓↓↓↓↓↓ Workbooks.Open(path &"\"& buf) だったみたいです
365 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 18:24:55.94 ID:ofRjPTJp.net] 教えてください クリップボードにあるキャプチャを全て貼り付けるマクロできますか。 ちなみに、win+Vで、過去のキャプチャ履歴が出てきます
366 名前:デフォルトの名無しさん [2020/05/29(金) 18:44:55 ID:FhfEW/N2.net] 過去の履歴はクリップボードにはもうありません
367 名前:デフォルトの名無しさん [2020/05/29(金) 19:17:03 ID:/mLagXjz.net] 馬鹿の特徴 教えて、助けて系で始まる書き込みをする
368 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 19:46:11 ID:ofRjPTJp.net] >>350 win+Vやってみれば分かります。 蓄積していきます。
369 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 20:15:13 ID:o3jQNOd+.net] >>350 昔はフリーウェアで対応してたけど、Win10のクリップボードには履歴機能が標準で付いた
370 名前:デフォルトの名無しさん [2020/05/29(金) 20:22:58 ID:rds5fVij.net] 馬鹿は、Win10全て
371 名前:が同じだと思っている [] [ここ壊れてます]
372 名前:デフォルトの名無しさん [2020/05/29(金) 21:14:41.12 ID:Z5PYtswD.net] なるほどね APIが公開されているからそれを使えばいいと思うよ
373 名前:デフォルトの名無しさん mailto:sage [2020/05/29(金) 21:47:35 ID:be+QuDfe.net] Debug.Printの代わりにMsgbox ↓ うっかりループで使う ↓ 必死に×とかEsc連打
374 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 00:10:31 ID:r1iWOzqa.net] VBAで親クラスのインスタンスを子クラスに渡して子クラスから親クラスのメソッドにアクセスする方法ってあります?
375 名前:デフォルトの名無しさん [2020/05/30(土) 05:29:34.61 ID:n48qxrxQ.net] 母のパンティを娘に渡して 娘から母のセックスにチェンジする方法はあるよ
376 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 06:41:58 ID:lz52cF2O.net] >>350 いつまでXP使ってるんだよ
377 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 10:18:37 ID:Lg+IyK0J.net] 仕様書みたいの書かないとダメだな 数年前に自分で作ったの手直ししなきゃなんだけど 結構でかいんでコード理解して全体像を把握するのが大変だわ 仕様書とかそういうのってたぶん書き方があるんだろうね その辺勉強しなきゃダメだね
378 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 10:44:24 ID:A129boaw.net] 過去の自分が書いたソースは他人が書いた物
379 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 10:47:20 ID:gDHPXROS.net] ?画面をプリントスクリーン ?エクセルなりを開いてペースト ?戻る ??がいちいち面倒くさいので、理想的にはプリントスクリーンすれば勝手にそれがペーストされていけば良いのですが。できないかな。
380 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 11:13:20 ID:gDHPXROS.net] 続き あるいはwin+Vで貯まってるキャプチャを自動的にダウンロード出来れば、と思いました
381 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 11:26:13.81 ID:4gyXKXc6.net] >>362 https://github.com/mizutuu/imageClipPaste
382 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 11:40:59.92 ID:Lg+IyK0J.net] 氏名住所をユーザーフォームで連続入力してリストに登録するじゃん んで、フォーム上の印刷ボタンを押すと、ワークシート上に用意されてるテンプレ書類に 氏名住所が必要な箇所に順次記入されて印刷される ていうよくありがちなプログラムあるでしょ このテンプレ書類に数式を使って氏名住所を別のセルにも転記するようにしておく 例えば、VBAでA1に氏名が記入されるとすると B1に =A1 って書いておけばB1にも氏名が記入されて印刷される これも当たり前なんだけど このB1に入る数式にユーザー定義関数使うと、うまく動かないのな Application.Calculate とかもうまくいかなかったわ うまくいかないってのは計算してくれないってことだけど
383 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 12:46:49.94 ID:gDHPXROS.net] >>364 サンキューさん これなら使えそうです。
384 名前:デフォルトの名無しさん [2020/05/30(土) 13:37:34.40 ID:VTd6O4v1.net] 同じなんだけどVBAで膨大な演算処理をコード組んでプロシージャ合わせて作っても おっさんから 「ああ、マクロの記録して作ったやつね」 て言われると少しイラつく 記録じゃつくれねーほど汎用性高くしてんだろうがボケが
385 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 13:50:56.52 ID:LDe7UQpm.net] vbaごときでイキっててわろた
386 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 14:27:17 ID:+Oty3aJ4.net] 無知は罪
387 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 14:46:50 ID:A129boaw.net] そこでイラついてるうちはまだまだ
388 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 15:22:49 ID:uSpMLuhJ.net] VBAはOLさんでも出来る(正論)
389 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 15:27:58 ID:4gyXKXc6.net] マクロの記録しかできない人、Win32APIを使いこなす人、どっちも「VBAができる人」と言われてしまう
390 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 15:39:22.28 ID:49ARh1d+.net] トリッキーなことはやらない方がいい
391 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 15:45:07 ID:49ARh1d+.net] >>365 個人情報とかちゃんと管理しないと流出した場合責任とれる?
392 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 16:36:13 ID:PhwvBcVJ.net] >>365
393 名前:Application.Calculate じゃなくて、Application.Volatileだぞ ワークシートの数式の方に、 &REPT("",NOW()) とかでもいいはず [] [ここ壊れてます]
394 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 16:55:50.78 ID:NW87G0lL.net] >>367 そんなことでイラつく自分を見直そう
395 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 17:00:12.37 ID:EKBxQQvi.net] 14列目から全てセルの巾15ピクセルで固定されてます。指定したピクセル数に伸ばしたり縮めたりしたいんですがどうしたらいいですか? privata Function AAA(objTarSht,intPicel) clmTar=14 do until objTarSht.Cells(1,clmTar)=空 ここ clmTar=clmTar + 1 loop
396 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 17:25:53.46 ID:4gyXKXc6.net] >>377 Private Function AAA(objTarSht, intPixel) clmTar = 14 Do Until objTarSht.Cells(1, clmTar) = "" Columns(clmTar).ColumnWidth = intPixel * 0.118 clmTar = clmTar + 1 Loop
397 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 17:36:07 ID:x6N4SK2n.net] セルのHJ1に式で「=TEXT(EDATE(DE2,(DAY(DE2)>20)+(DT2<>"")),"yyyy""_""m")」をいれて、 最下行までオートフィルをして、HJ列をコピペで値だけにしていますが vbaのforで作ってみたいので、この部分をVBAにした場合のコードを教えてください 「=TEXT(EDATE(DE2,(DAY(DE2)>20)+(DT2<>"")),"yyyy""_""m")」
398 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 17:41:18 ID:NW87G0lL.net] いやまず自分で作ってみろよ…
399 名前:デフォルトの名無しさん [2020/05/30(土) 18:14:09.22 ID:HFWpOc40.net] >>359 馬鹿は書かなければいいのに
400 名前:379 mailto:sage [2020/05/30(土) 18:40:42.91 ID:x6N4SK2n.net] =TEXT( EDATE(DE2, (DAY(DE2)>20)+(DT2<>"")) ,"yyyy""_""m") の並び順で For cnt = 2 To i Range("HJ1") = Format( _'「=TEXT(」にあたる部分 **********'「EDATE(DE2,」EDATEにあたる部分 '「(DAY(DE2)>20)+(DT2<>""))」にあたる部分 DateSerial(Range("DE" & cnt) > 20 + (Range("DT" & cnt) <> "") ,"yyyy""_""m" '「,"yyyy""_""m")」にあたる部分 Next cnt
401 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 18:59:33.29 ID:IeNY1P6O.net] >>367 それ本当にマクロか?っていう圧倒的なものを作ってみるといい。
402 名前:デフォルトの名無しさん [2020/05/30(土) 19:06:40 ID:RuztwjMU.net] >>383 ユーザーフォームのボタンにあてがうと 有り難みが薄れるらしく 最近作るのを断ってるわ
403 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 19:52:23 ID:NW87G0lL.net] どんだけ人間小さくて承認欲求高いんだよ…
404 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 20:13:00 ID:v+h7hopE.net] >>367 マクロ記録でできるレベルじゃないから苛ついてんの?できるんなら言われても仕方ないだろ ソフト屋じゃなけりゃ再利用とか考えるわけないし
405 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 20:39:02.93 ID:x6N4SK2n.net] >>381 京都のアニメ制作会社に放火とかしそうだなw
406 名前:デフォルトの名無しさん [2020/05/30(土) 21:05:02 ID:n48qxrxQ.net] >>372 逆に「VBAができるわたし」は ExcelやWordの複雑な機能のことに異常に詳しいと思われてて 難解な作業を仕事で依頼される。 それをVBAで解決できるかできないかにかかわらず。
407 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 21:08:47.70 ID:A129boaw.net] そういう事を防ぐために能鷹隠爪で
408 名前:デフォルトの名無しさん [2020/05/30(土) 21:10:58.46 ID:n48qxrxQ.net] >>364 これはなにで動いているのですか?
409 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 21:14:47 ID:49ARh1d+.net] >>388 仕事で依頼されたなら、仕事やれよ
410 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 21:45:04 ID:/9v+/+fv.net] >>382 式が何をしようとしているのか不明。 ・何でHJ1(1行目)で2行目の値を評価しているの? ・20日以降は次月として捉えているように見えるけどDT列には何が入るの? 空じゃなければ更に月を進める? Forの使い方という点にコメント これだけじゃ cnt がどこまで回ればよいかわからんよね。たとえば、 i = 30 For cnt 2 To i とするか、 For cnt 2 To 30 とかす
411 名前:れば、Loopはする。 でも書き込むセルが Range("HJ1") に固定されてるから、これじゃ同じセルに 30回、延々と上書きするだけになる。 書き込み先を動的に変える場合は、範囲Objectは Range("番地")じゃなくて、 Cells(行番号、列番号)を使うといい。この中でcntを使えば。 EDATE関数にあたるVBA関数はDateAdd TEXT関数はFormatでOK。 [] [ここ壊れてます]
412 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 21:53:02 ID:IeNY1P6O.net] >ExcelやWordの複雑な機能のことに異常に詳しいと思われてて ありがちな誤解だよな。 プログラムがわかるから細かい機能を知らなくてもどうにか出来るわけで、
413 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 21:53:27 ID:IeNY1P6O.net] Word、Excelの専門家じゃないってのに。
414 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 22:38:43.08 ID:I7l9umXM.net] wordの複雑な機能って?
415 名前:デフォルトの名無しさん mailto:sage [2020/05/30(土) 23:40:16 ID:JE+7y9de.net] フィールドとか?
416 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 01:07:44 ID:0lS4xVrw.net] WordVBAとか
417 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 01:47:47 ID:6kaO8G32.net] 初歩的ですみませんが、sub ()の()の中に文字列が入ることありますか? 買った教本の例題にこの中に文字列が書かれてるのが一つだけあるんですが、おそらくそのせいでマクロが動きません
418 名前:デフォルトの名無しさん [2020/05/31(日) 02:38:20 ID:2V+gQfrN.net] >>398 理解できない奴には無理
419 名前:デフォルトの名無しさん [2020/05/31(日) 02:39:52 ID:86R8wtw/.net] >>391 なんでわたしだけ仕事が増えるんだ この馬鹿モンが!
420 名前:デフォルトの名無しさん [2020/05/31(日) 02:41:39.96 ID:86R8wtw/.net] しかも周りに座ってるような同僚は わたしより仕事スピードが1/2〜1/10の人たちばかりなのに。
421 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 02:50:27.87 ID:0yzq8zA/.net] >>398 subプロシージャで調べてみ
422 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 02:50:46.87 ID:6kaO8G32.net] >>399 理解できるように勉強してるので教えてください 図々しいと思いますが
423 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 02:51:03.70 ID:6kaO8G32.net] >>402 調べてみます!
424 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 02:52:54 ID:wkpADETk.net] >>401 じゃあ転職しろよw
425 名前:デフォルトの名無しさん [2020/05/31(日) 02:56:41.46 ID:2V+gQfrN.net] >>403 この段階でわからないこと自体無理なんだよ 仕組みを理解しなければ無理 公式だけ暗記して終わりの馬鹿には無理なんだよ
426 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 03:25:44.77 ID:C8J9R7KI.net] >>375 ありがとう でもだめだったわ
427 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 03:27:49.96 ID:C8J9R7KI.net] >>403 VBA 引数 でぐぐる
428 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/05/31(日) 04:00:28 ID:KExNe49d.net] エクセルにはリファレンスマニュアルが付属していて、追加でインストールするとF1ヘルプで言語仕様まで見られる。 マニュアルがパソコンに入ってなかったら、管理者からエクセルのシーディーを借りてね。
429 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 05:00:56.16 ID:pJwiV8F0.net] >>398 sub() って文法的に作れないはず マクロが動かないのは文字列のせいじゃないかもよ
430 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 08:40:31 ID:6kaO8G32.net] ごめんなさい sub test ()でした
431 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 08:57:53.05 ID:C8J9R7KI.net] Sub Test0001() Dim i As Integer For i = 1 To 2 Dim ary() MsgBox "ここにブレークポイント設定" ary = Sheet1.Range(Cells(1, i), Cells(5, i)) Next i End Sub A列とB列にあるいずれも5行目までの値を配列に取得するだけのプログラム For中の一回転目はA列、2回転目はB列 こうやってForの中でaryを宣言し直せば、aryは初期化されると思い込んでたんだけどダメなのな 2回目にMsgBoxで止まったときにaryみるとA列のデータがaryに残ってしまってる これってメモリ上に残ってて同じ所を参照し直すからなのかな Eraseすれば消えるからいいんだけど、気づくのに時間かかったわ こんな初歩的なこと分かってないでよく今まで組んできた
432 名前:もんだ [] [ここ壊れてます]
433 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 09:44:52 ID:8XtoheO9.net] すんません今時ブロックスコープない方がアレなんで
434 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 09:49:53 ID:4iioSPSZ.net] >>398 それはLEFT()が動かないのと同じ理屈。 普通LEFT(A1,5)とか書くから。
435 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 10:44:01.62 ID:GCI/GpSg.net] >>412 そういう動作を知るためのテストなんじゃね 残っていても上書きされるんだから問題ないし
436 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 10:47:02.74 ID:GCI/GpSg.net] >>411 sub test("文字列") ってことか?
437 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 11:53:35 ID:df9CBrpd.net] >>398 呼び出し元とプロシージャそれぞれ一行ずつ書いてくれよ
438 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 12:34:25 ID:GcFwCYXw.net] >>412 VBAのDimは書いた場所に関係なく、コード開始時に1回だけ実行される仕様 モジュールの最後に書いても結果は変わらない Sub Test() Dim a() For i = 0 To 9 Dim b() Next Dim c() End Sub
439 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 12:42:20 ID:C8J9R7KI.net] >>413 あーなるほど そこを考えるんですか、勉強になりましたわ ただ、改めて疑問に思ったのは、同じブロックスコープ内で再度宣言してもエラーでないのはどういうことなんだろーとか Forの中での宣言だと繰り返しといっても宣言部分は無視されるってことかな ま、同じ事しないようにちゃんとおぼえておこ・・・ >>415 このプログラムだとそうなんだけど ary = Sheet1.Range(Cells(1, i), Cells(5, i)) この部分が、ある条件を満たした場合のみ代入するっていうコードだとします んで、条件満たさなかった場合には代入されないため、A列のデータがaryに残っちゃっておかしな事になっちゃってたわけですよ 自分で実際に組んでるコードはも少し複雑なものなので
440 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 12:44:02 ID:C8J9R7KI.net] >>418 ありがとうございます 全然知らなかったです ちょい調べてみます
441 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 13:55:17.54 ID:W/GxV3g0.net] >>401 お前は周りにない知識が多少あることに優越感持ってるだけで仕事できる人間の言い分に見えんのよなぁ
442 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 14:13:51 ID:GcFwCYXw.net] 仕事ができる人なら、コードを書くのに何人時かかりますっていう見積もりをざっくりでいいから依頼主にちゃんと提示する それで依頼を取り下げるかどうかはクライアントの決めること 想定外のトラブルで納期が遅れそうならホウ・レン・ソウして迷惑をかけないようにする 難しいからって愚痴るのはまったく建設的じゃないし、なんの解決にもならない
443 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 15:00:37 ID:py7qoVDy.net] なんでそんなにかかるの? どこに時間かかる要素があるの? やればいいだけでしょ? ○○さんはもっと早かったよ? 次の仕事があるんならそれでいいよ?
444 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 15:05:53 ID:ztYbO9r8.net] 報連相つらいよね…プログラムの難しさよりも報連相の方がつらい…
445 名前:デフォルトの名無しさん [2020/05/31(日) 16:55:11 ID:uJxLAScO.net] すみませんド素人ですがご教授下さい。 「あるセルを選択して実行すると選択したセル行のA〜D列以外が全て1.1倍される」 というマクロを組みたいです。 ネットで調べて少し作ろうとしてみましたが 知識がありません。 Sub 倍掛け() Dim SELU As Range '変数名の絶望的センス名 For Each SELU In Selection SELU.Value = SELU.Value * 1.1 Next SELU End Sub Sub 選択したセルの行全選択() ActiveCell.EntireRow.Select End Sub この2つのプロシージャが何となく使えるのかすらわからないのですが試行錯誤しています。 A〜D列を除外というやり方もわかりません。 すみませんが
446 名前:教えていただけないでしょうか。 [] [ここ壊れてます]
447 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/05/31(日) 17:39:48 ID:w6MuXuh+.net] >>425 Excel for Windows 95で動作確認。 Sub Record1() Application.Worksheets(1).Select For I = 5 To 20 For J = 1 To 20 Cells(J, I).Select ActiveCell.FormulaR1C1 = Val(ActiveCell.FormulaR1C1) * 1.1 Next J Next End Sub
448 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/05/31(日) 17:50:31 ID:w6MuXuh+.net] >>426 「To 20」のところは適当に変更してね。
449 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 18:34:56.03 ID:Gn3uBA4V.net] >>425 選択した範囲が処理の起点なので、、 Dim r As Range For Each r In Selection If r.colunm < 5 Then GoTo nextLoop If r.Value = "" Then GoTo nextLoop r.Value = r.Value * 1.1 nextLoop: Next こんな感じ? 行全体を対象にしたいみたいだけど、その時はFor文の前に Selection.EntireRow.Select を差し込めばいい。 1万列処理されるけど、、、
450 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 18:39:34 ID:Gn3uBA4V.net] >>428 綴りを間違っとった If r.Column < 5 Then GoTo nextLoop 文字列セルを避けたければ、、以下も追加 If Not IsNumeric(r.Value) Then GoTo nextLoop
451 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 19:13:07.80 ID:4iioSPSZ.net] >>424 ああつらい。 上司がメール読まないタイプだと特に。
452 名前:デフォルトの名無しさん [2020/05/31(日) 21:17:59.30 ID:yITbq02Q.net] 馬鹿に馬鹿が答えて滅茶苦茶 簡単な質問だとしゃしゃり出てくるからおかしくなる
453 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 22:48:28.20 ID:6kaO8G32.net] >>416 そうです!! カッコ内に文字列です!
454 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 22:49:04.73 ID:6kaO8G32.net] >>417 呼び出し元…すみません、知識不足でした…
455 名前:デフォルトの名無しさん [2020/05/31(日) 23:06:33.42 ID:2V+gQfrN.net] >>433 馬鹿には無理だと悟れよ、馬鹿
456 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 18:21:12.15 ID:JWhdLJJl.net] お前もだ
457 名前:デフォルトの名無しさん [2020/06/01(月) 18:38:31 ID:4Uk/Vywe.net] 異動した先輩が作ったマクロに少し追加しようと思って標準モジュール見てみたら 乱れ雪月花 地ずり残月 かすみ二段 パリィ 何これ???と思ったらゲームの技名なのか 見事なプロシージャだけど関連性が全くわからんかった…
458 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 18:48:48 ID:jizMt7mj.net] Sub 乱れ雪月花 風雪即意付け 月影の太刀 三花仙 End Sub
459 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 19:40:30 ID:o1fpUPSE.net] 取り敢えずマジックナンバーだらけのを保守しろとかいうのはやめてー セル参照も起点ぐらいは定数宣言しといて欲しい
460 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 19:48:00 ID:xzpno8fJ.net] 1列目の2行目から下にEXCELファイル名があります。(同一ファイル名あり) それらを全て開く、処理、閉じるを繰り返すと時間がかかるので、同一ファイル名は一度だけ開いて閉じるをやりたいのですがどしたらいいですか? 1列目をソート Do until 1列目 ??? 処理 loop ファイル名は数字(000001.xlsなどで桁数は同じ) ???の所で開くor閉じるをやりたいのですがどうしたらいいですか?
461 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:00:55.95 ID:Ct20WAoS.net] パリィは草
462 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:10:21 ID:MDu2hpC8.net] >>439 ひとつ上のセルが同じファイル名なら なにもせず次へ
463 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:42:10 ID:eRBcTATy.net] 重複禁止の処理は連想配列(VBAだとDictionaryオブジェクト)を使うと便利だよ。 既に連想配列に存在するなら何もしない、存在しないなら処理して連想配列に登録する。 Valueに結果を入れておいて、実行結果をシートに出力とかするとカッコイイよ。
464 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 21:05:54 ID:Otvtnefa.net] 結果をシートに出すなら配列使わんと重複削除して
465 名前:ゥら開いた方が速くて楽じゃん [] [ここ壊れてます]
466 名前:デフォルトの名無しさん [2020/06/01(月) 23:34:24 ID:5NIHbXOS.net] まだ22歳の学生社長が得た、23億円の「使い道」 あの橋本環奈をCMに使うバイトアプリの雄 https://toyokeizai.net/articles/-/319511 中学時代の車いす生活から、17歳で起業するまで https://www.advertimes.com/20200130/article306925/ ミャンマー発 AIダイニングアプリ「Yathar」をしかける日本人起業家 https://roboteer-tokyo.com/archives/14840 自分の視野は「世の中の0.001%」と自覚せよ。ビジネスチャンスを掴む4つの習慣 https://headlines.yahoo.co.jp/hl?a=20200511-00010001-srnijugo-life アプリの視聴率がわかる 高専卒起業家の独創力 https://www.nikkei.com/article/DGXMZO46695580Y9A620C1000000/ 1万人の若者を支援!インターンが日本を変えるかも!? glowshipの若き創業者・足立卓也氏インタビュー https://sogyotecho.jp/glowship-adachi-interview/ 大学生起業家が設立1年で20億円調達! 単発バイトアプリに外食企業など出資【タイミー】 https://foodfun.jp/archives/3490
467 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 00:29:20 ID:hEtyTtKQ.net] 俺ならこうかな。 Sub サンペイグッドカメラ() どっきりカメラのキシフォート カメラのドイ End Sub
468 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 00:35:26 ID:0adtr6kX.net] VBAだしそういう名前面白いかもなw 簡単だけど保守したくないやつは、もう先輩や同僚の連絡先を名前にしようかな
469 名前:デフォルトの名無しさん [2020/06/02(火) 01:36:20.19 ID:rfJHDu9M.net] Sub 馬鹿専用() 馬鹿には無理() 馬鹿は帰れ() End Sub
470 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:01:31.67 ID:cr7Q5ahz.net] Sub 鱸() 鰯() 鰹() 鮪() End Sub
471 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:07:31.79 ID:SOkkDiQ6.net] >>439 Ruby なら重複要素を許さない、集合を使って、 require 'set' filenames = <<"EOT" a/foo.txt a/bar.txt a/foo.txt EOT set = Set.new filenames.each_line do |filename| # 1行ずつ処理する filename.chomp! # 末尾の改行を削除する # 同じ要素は追加できないので、追加できた時だけ、そのファイルを読み込む p File.read( filename ) if set.add?( filename ) end
472 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:24:02 ID:cr7Q5ahz.net] >>439 [データ]→[重複の削除] って機能あるけど
473 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 04:12:46 ID:xDFjMRpH.net] >>439 ファイル名がリストアップされてる列があるなら そこでまず回して重複排除したファイル名の配列 as Stringをつくればいいだけじゃ てかその程度も思い浮かばないとなるとプログラミング向いてないような気がするわ 重複排除のプログラムって基礎の基礎でやるよ 便利な機能を使う前に順次・分岐・繰り返しでほぼほぼなんでも出来ちゃうことを学んだ方がいいわ C言語の勉強するとそういうの鍛えられる感じする
474 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:37:46 ID:ZejDuh3H.net] >>364 Readme読む限り、ちょっとこれはと思う。 一定間隔はあまり良くないな。 出来ればWM_DRAWCLIPBOARD捕まえるのが常套手段。
475 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:39:17 ID:ZejDuh3H.net] >>386 まあ、プログラマ―としては糞コードの見本を強要されるわけだからねえ。
476 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:41:06 ID:ZejDuh3H.net] >>398 引数という言葉を調べてみよう。
477 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 09:53:39.10 ID:DG4jD+ms.net] い・・引数
478 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 10:17:05 ID:ZKdkos41.net] いんすう、なの? 勝手に、ひきすう、って読んでた。
479 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 10:38:01.33 ID:HxakEXb6.net] いんすうだと因数と間違えるから、わざとひきすうと読む慣習
480 名前:デフォルトの名無しさん [2020/06/02(火) 11:01:38 ID:P+GfDheU.net] ソヒキスウブンカイとかあったよねー。
481 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 11:28:56 ID:Bxw1Fg+T.net] 淫吸だとエロい言葉に聞こえるからひきすうと読む
482 名前:デフォルトの名無しさん [2020/06/02(火) 12:59:58 ID:86yzZ856.net] Sub セル2行を結合して出力() Sheets("雛型").Select ActiveSheet.Copy Dim gg As Long, rr As Long For gg = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1 Rows(gg + 1).Insert For rr = 5 To 31 Cells(gg, rr).Resize(2).Merge Next rr Next gg HorizontalAlignment = xlCenter VerticalAlignment = xlCenter Range("A1") = "2行を結合して出力" End Sub すみません、ネットで調べまくってる相変わらずのど初心者です。 セルの行挿入と結合を範囲指定して 2行を結合するのは何とか調べてできたのですが、 「セルの列挿入と結合を繰り返して 2列1行のセルにしたい」 というのができず。。ご教示頂けませんか。 理想は 「セルを2列挿入と結合をして3列1行のセルにする」や 「2列と2行の挿入と結合繰り返して2列2行のセルにする」 など、色々パターンを作りたいのですが。 ネットと入門編の本だとやはり限界を感じます。。 どなかた何卒お願いします。
483 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 13:09:54.31 ID:YHzZdfxN.net] .resize(1,2).mergeとか Range(rows(gg+1)rows(gg+2)).insertとか
484 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 14:39:08.29 ID:cr7Q5ahz.net] セルの結合をマクロでやる設計者ってセンスないね
485 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 14:42:20 ID:cr7Q5ahz.net] マクロとVBAな
486 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 16:30:35 ID:wladzkcs.net] セル結合はなあ
487 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 17:14:02 ID:3pwUYc8f.net] vlookupとセル結合をディスってはじめてexcel使い方として一人前
488 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 17:30:35.84 ID:ZKdkos41.net] セル結合は帳票イメージでの最終手段。
489 名前:デフォルトの名無しさん [2020/06/02(火) 17:36:37.19 ID:86yzZ856.net] セルの結合をする理由は 取引先の提出フォームが客先ごとに 1セルの結合の構成が本当に様々で8種類くらいパターンがあり 元のマクロで出した値の貼り付けが出来ないのが現状です。 なので元のマクロの1行1列のセルの値を セルの構成を客先のに合わせたシートに出力 そのシートから客先提出フォームに値の貼りつけ というのをやろうとしています。
490 名前:デフォルトの名無しさん [2020/06/02(火) 17:42:54.46 ID:86yzZ856.net] >>461 すみません、どこにどう弄ったらいいか 教えて頂きたいです。 すみません、、
491 名前:デフォルトの名無しさん [2020/06/02(火) 17:45:43.97 ID:lB7mMLW8.net] >>468 自分で考えろ
492 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:33:10 ID:0adtr6kX.net] じゃあ8種類のテンプレでよくね
493 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:40:35 ID:bGVvB1yX.net] 結合したりvlookupとかしたいから、わざわざエクセル使ってるんじゃないの?
494 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:55:17 ID:R+Y1d9Tj.net] セル結合された部分は別の結合とかできないから その都度結合解除するとか 行の挿入や削除で表が壊れたり 見えなくなるプロパティがあったり 嫌な思い出しかない
495 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 19:17:40.08 ID:xDFjMRpH.net] Application.OnKey ってプロシージャに引数渡せないのが残念だなぁ これってキーごとにプロシージャ作らないといけないかね
496 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 19:20:48.48 ID:ZejDuh3H.net] >>462 そんなこたぁねえだろ。 確かに問題多いけど、分かった上で使うことあるぜ。 ゴミのSendkeys使うよりはあるね。
497 名前:デフォルトの名無しさん [2020/06/02(火) 19:31:05.26 ID:0+iVbcJA.net] Sub 列挿入() ActiveSheet.Copy Dim i As Long For i = 32 To 8 Step -1 Columns(i).Insert Next End Sub ここまでは何とか、、ってとこです。 後は指定したの行を全部何とか 2列1行のセルに 道のりが遠すぎる…
498 名前:デフォルトの名無しさん [2020/06/02(火) 19:38:40.44 ID:xX39KyXM.net] データモデルに入れたデータからSQLを使ってシートに出力する方法を教えてください。 ネットになかなか情報がなくて ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("クエリ - パワークエリ名"), Destination:=Range("$A$1")).TableObject から .WorkbookConnection.OLEDBConnection.CommandText = "テーブル名" にするとテーブルを出力 .CommandText = Array("EVALUATE CALCULATETABLE('テーブル名' , 'テーブル名'[項目名] =""検索語"" ) ") .CommandType = xlCmdDAX のようにするとDAX式で加工したテーブルを出力できるようになりましたが、SQLを使用する方法がわかりません。
499 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 03:13:14.17 ID:4xNyRocT.net] >>475 Sub 列挿入() ActiveSheet.Copy Dim i As Long, c As Long, r As Long 'カウント用 Const n As Long = 2 '列挿入, 列マージ数 Const sC As Long = 8, eC As Long = 32 '開始列, 終了列 Const sR As Long = 2, eR As Long = 10 '開始行, 終了行 With Excel.Application .DisplayAlerts = False .ScreenUpdating = False End With For c = eC To sC Step -1 For i = 1 To n - 1 Columns(c).Insert Next i Next c For c = eC * n To sC Step -n For r = sR To eR Cells(r, c).Resize(1, n).Merge Next r Next With Excel.Application .DisplayAlerts = True End With End Sub
500 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 03:29:44 ID:4xNyRocT.net] あっ行別の列マージならRange.Merge Across:=Trueってのがあるのか初めて知ったわ
501 名前:デフォルトの名無しさん [2020/06/03(水) 17:16:57.27 ID:AwTWg+pQ.net] すいません。関数を使って集計する方法を教えていただけないでしょうか。 index matchの組み合わせもしくは、sumifもしくはindex match sumifの複合で表示させたいです。 画像の出荷と書かれたセルに関数を入れて集計したいです。 集計は参照シートの黄色で書かれた「販売+その他出荷」の合計を表示したいです。 sumifでは縦の計算になってしまい、横の足し算が出来ない印象です。 上の数字はmatchを使った際の引用条件になると思い入れました。 説明わかりづらくてすいません。関数を教えていただけないでしょうか。 具体例のエクセルは簡単に書いてますが、実際に書くエクセルはデータが膨大なものです。 なぜかindexもうまく引用できていませんでした。 https://d.kuku.lu/ca513f39a8
502 名前:デフォルトの名無しさん [2020/06/03(水) 17:19:07.42 ID:bl/wSmIk.net] >>479 死ねよ、ここは何のスレかわかっているか?
503 名前:デフォルトの名無しさん [2020/06/03(水) 17:31:05 ID:AwTWg+pQ.net] すれ違いでしたか。。 別のスレで質問してみます 失礼します
504 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 18:58:22.75 ID:ajKAwYcj.net] >>481 説明が下手な質問には答えられない
505 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 19:02:55.47 ID:4xNyRocT.net] >>479 Offsetっていうセルのサイズを変える関数があるが この集計を関数でやるのは根本的にムリだね 1,10行目の数字とかに何の関連性もないから列が特定できない 元データ正規化すんのが先だよ
506 名前:デフォルトの名無しさん [2020/06/03(水) 21:04:01 ID:Wz
] [ここ壊れてます]
507 名前:EARBto.net mailto: 前にも少し聞いたけど上級者はVBAどうやって作ってくもん? そこそこボリュームのあるマクロを素人ながら作ってるんだけど ・標準モジュールにオブジェクト名付けて そこに同じ名前のプロシージャを1つ作る ユーザーフォームのボタンに プロージャ名を2つや3つ並べたり とにかくボタンに割り当ててく コードの表示見ると凄いシンプルに見えるけど 標準モジュールが30個とかあるんだが… 自己流だと全然だめねこれ [] [ここ壊れてます]
508 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:12:23 ID:eXcAe8GC.net] そういうのは言語関係ない 上級者のコード読むなりプログラミング技法の初歩とかを勉強せえ
509 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:16:06 ID:jxQ4kFWw.net] 上級者じゃないんでわからんが 数こなしていくうちに上達するんじゃね
510 名前:デフォルトの名無しさん [2020/06/03(水) 22:45:33 ID:DFbqrKTL.net] ネットで勉強してる初心者以前のレベルだけど 変数をiで宣言してるサイトが結構多いけど テンプレ的な変数名なの?何かの略字?
511 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/06/03(水) 22:54:44 ID:fRs9+Xkd.net] integer
512 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:55:14 ID:1Bet+/qH.net] >>487 もともとはIntegerの頭文字から とりあえず整数型変数にはI、もっと必要な時はJ、K以下略を使うというルールを70年ぐらい前にIBMの技術者が決めて、それが今まで慣習として残っている
513 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:58:16 ID:k+INKoSh.net] テーブル(ListObject)の指定列に計算結果値をLoopで書き込む処理を作ったんだけど、 ひどく遅延します。事象の原因と対策わかる方いたら教えてください。 ・(同一シートの)テーブルの枠外だと同じ行数でも瞬時に終わります。 ・計算結果じゃなくて 1 を埋め込むのでも遅い。 ・再計算Off ・ためしにEnableEvents = false もやってみたけど効果なし。 3000行くらいなんですが、しばらく帰ってこない感じ。 結局式埋込に変えたんだけど、その場合だと5〜6秒くらい。 テーブルなんてそんなもん、ということであればそう認識します。 詳しい方教えてください。
514 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:59:26 ID:uWfzdzS4.net] >>484 モジュールが増えるのは、 他に流用するからとか、 スクロールが面倒だからとか、 そんな理由だと思うけど。 宣言は一番上派、使用する直前派。 参照設定派、CreateObject(xxx)派、 If a = True Then派、If a Then派、 色々だから気にすんなと。
515 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:02:38.52 ID:k+INKoSh.net] >>489 iteratorが語源かと思った。
516 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:03:56.76 ID:LXJ+6sS7.net] DEFINT A-Z
517 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:35:44.50 ID:6MdsocRT.net] ループ変数にはiもよく使うけど、rとかcも割と使う。 列と行を入れ子にしてループ処理する時は、こちらの方が分かりやすい。
518 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:40:14.49 ID:K30dfupm.net] >>487 古くは Fortran かな I, J で始まる変数は無条件で整数型だった Iがアルファベットの10番目だからという よくわからない説もある
519 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:05:55 ID:k3k6AIFZ.net] 実際の慣例ではどうなのか知らないが、i〜tまでを使うって教えられた intのtまでってことで まあ大抵使ってもi,j,kぐらいだと思うが
520 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:09:42 ID:L9xk6UQ0.net] 視認性が悪いから、j とか l とか使いたくない。 なので、 i, k, n, とか適当に飛ばして使ってる。
521 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:09:53 ID:OnK1RXVm.net] 自分は最大nまで使うよ。 i、j、k、
522 名前:l、m、n [] [ここ壊れてます]
523 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:14:11 ID:L9xk6UQ0.net] >>494 r は Range Loop用と決めてるから、r, c, はあまり使わない。 そんときは iR, iC ってやるな。 c は1文字入れるとき使うかも。 人それぞれやね。
524 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 01:00:45 ID:BD433+5i.net] すみません、教えてください。<br> caseの条件を変数で設定していると条件に一致しなくてelseに流れてしまいます。<br> ベタ打ちで条件を記載した場合は、正しく処理へ流れるのですが・・・<br> sub テスト() <br> Dim a As String <br> Dim temp As String a = "みかん" temp = "りんご"", ""みかん" 'ここはチェックボックスの選択によって可変にする予定 Select Case a Case temp Msgbox("冬") Case Else Msgbox("冬以外") End Select End sub
525 名前:500 mailto:sage [2020/06/04(Thu) 01:02:03 ID:BD433+5i.net] <BR>は誤って記載したので無視してください。 すみません。
526 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 01:05:29 ID:bxYszK7T.net] ダブルクォーテーション大好きなんだな
527 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 01:09:25.97 ID:22WZQRcv.net] >>490 同じ行やってみたけど一秒かかんない テーブルに数式列あると遅延したけどcalculation=falseで気にならなくなったし
528 名前:デフォルトの名無しさん [2020/06/04(木) 01:47:41.43 ID:OTCVkkK8.net] 馬鹿の特徴 教えて、助けて等で始まる書き込みをする
529 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 02:18:53.76 ID:oqMXr6z+.net] >>500 Caseの条件が変数かどうかは関係ないから、どこか別のところが間違ってる よく見直せ
530 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 03:10:03 ID:e1eCmfnY.net] >>496 俺だけかな i1,i2,i3 とか、 iX,,iY, iCnt, iLoop, iStep みたいに使う
531 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 03:52:02 ID:e1eCmfnY.net] 命名規則とかハンガリアン表記とかあるよね https://ja.wikipedia.org/wiki/命名規則_(プログラミング)
532 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 07:06:03.13 ID:iR1nViON.net] >>489 Fortranが始まりが正解
533 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 08:16:07 ID:i/KeU7gc.net] ループのiはindexのiかと思ってたわ for(i=0;i<10;i++) value[i] = 〜〜的な
534 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 10:24:37 ID:lE9Ts1od.net] C列が変数aと同じ値で、かつD列が変数bと同じ値で、かつE列が変数cと同じ値の各行で Z列(整数)が最大値の行の行番号を変数iに代入する方法を教えてください Dim r As Long,i As Long Dim a As String, b As String, c As String For r = 5 to lsr If Cells(r,3) = a And Cells(r,4) = b And Cells(r,5) = c Then Rows(r).??? End If Next cnt i = Application.WorksheetFunction.Max(???)
535 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 12:04:02 ID:0kTawYgE.net] >>510 Z列の"暫定"最大値を保持する変数を使います。 Dim r As Long, i As Long Dim a As String, b As String, c As String Dim Z_v As Long '追加部分 Dim lsr As Long '定義漏れですよ lsr = 処理範囲の最終行をセット Z_v = 0 ' Z列の最大値が負になりそうなら-9999999999などとしておく For r = 5 to lsr If Cells(r, 3).Value = a And _ Cells(r, 4).Value = b And _ Cells(r, 5).Value Then If Cells(r, "Z").Value > Z_v Then ' 暫定最大値を超えたら Z_v = Cells(r, "Z").Value ' 暫定最大値を更新 i = r ' 行位置も更新 End If End If Next 最大値となる行が複数あった場合は、最初の行位置が i の値となります。
536 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 12:13:10.50 ID:0kTawYgE.net] >>511 の修正 Cells(r, 5).Value Then の行は Cells(r, 5).Value = c Then です
537 名前:510 mailto:sage [2020/06/04(Thu) 13:00:40 ID:lE9Ts1od.net] >>511 ありがとうございます!いつも勉強になりますm(__)m
538 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 14:32:12.42 ID:L9xk6UQ0.net] >>503 レスありがとう。 どうも同時に開いているブックに大量の関数が配置されているとListObject内でLoop入力時に遅延するみたい。再計算Offでも。 まっさらのブックにテーブル1個作ってLoop書き込みしたら瞬時だった。 そこに関数を多く含むブックを同時に開くことで、上記のテーブルで遅延が発生。特に自作関数が影響大きいみたい。 追加で開いたブックからシートを一つずつ削除→計測を繰り返したら、少しずつ早くなって、最終的に瞬時になった。 数行ならパラパラッって感じで気にしなくていいんだろうけど行数が多いとかなり待たされる。 ちなみに対象のテーブルを「範囲に変換」するとどんだけ関数を含んでいようが瞬時に書き込まれる。 こんなもんだと思うしかないのかもだけど、再計算Offでも影響を受けるのが納得いかない。 Win7 on vmwareな環境で試したので自宅のWin10でも試してみる。
539 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:52:15.99 ID:MXeQjX7b.net] おれ、昔は i , j ばかり使ってたけど、最近は回す配列の名前を反映した変数を使ってる Forブロックが単独で存在するならいいんだけど、if や 他のForブロックと組み合わさって 階層構造になってると、だいぶあとになってメンテするときに理解が遅れる
540 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 16:42:33 ID:9nIeytil.net] いいね 他にもループ内の処理をそのまま関数にしてしまう方法もある コメントを書かなくても処理の意味を関数名として記述できるし、再利用性も高まる。 おまけとしてVBAの構文にはないcontinue(処理を中断して次のループへ入る)が行える。 もしくは再帰関数を定義してfor文自体を無くすという凝った方法もある。
541 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 18:37:05 ID:08KHEEC1.net] データモデルに入れたデータからSQLを使ってシートに出力する方法を教えてください。 ネットになかなか情報がなくて ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("クエリ - パワークエリ名"), Destination:=Range("$A$1")).TableObject から .WorkbookConnection.OLEDBConnection.CommandText = "テーブル名" にするとテーブルを出力 .CommandText = Array("EVALUATE CALCULATETABLE('テーブル名' , 'テーブル名'[項目名] =""検索語"" ) ") .CommandType = xlCmdDAX のようにするとDAX式で加工したテーブルを出力できるようになりましたが、SQLを使用する方法がわかりません。
542 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:02:46.64 ID:fQr1zLSRu] ガチのにわかでスレチかもしれませんが エクセル上で123d+789という数字を10進数に直すことはできますか?
543 名前:デフォルトの名無しさん [2020/06/04(木) 19:00:14.86 ID:OTCVkkK8.net] 馬鹿ではなさそうだが、しつこい教えてクレクレに呆れる ググれよ
544 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:01:01.58 ID:gQJ1UXfv.net] >ネットになかなか情報がなくて 逆にそれを探し当てる方が難しいと思うんだが・・・。 とりあえず、マクロを記録しながらMSクエリを操作すれば答えが出ると思う。
545 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:03:34.01 ID:gQJ1UXfv.net] >パワークエリ名 あ、2016以上か。 パワークエリがあるせいで、MSクエリにたどり着かなかったということか。
546 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 19:43:02 ID:ZOeL7/nf.net] >>516 同じ処理を関数にするのはよくあることだけど、同じ処理を括るよりは意味合いで括る方が上策だと思う。 適切に関数に分けていれば、そもそもそんなに入れ子にならんだろう。 再起なんて、それこそ意味合いで自然に出来上がるもんで、無理して作るもんじゃねえと思うんだが。
547 名前:デフォルトの名無しさん [2020/06/04(木) 22:08:56.53 ID:uauxSmqO.net] Sub セル構成を2行3列に() Application.DisplayAlerts = False Application.ScreenUpdating = False j = 2 '←ここで何列おき Set rng = ActiveSheet.UsedRange For i = rng.Columns.Count To 8 Step -1 rng.Cells(10,i).Resize(10,j).EntireColumn.Insert Next Set rng = Nothing Range("G10", "I510").Merge Across:=True Range("J10", "L510").Merge Across:=True Range("M10", "O510").MergeAcross:=True Range("P10", "R510").Merge Across:=True Range("S10", "U510").Merge Across:=True Range("V10", "X510").Merge Across:=True Range("Y10", "AA510").MergeAcross:=True Range("AB10", "AD510").Merge Across:=True Range("AE10", "AG510").Merge Across:=True Range("AH10", "AJ510").Merge Across:=True
548 名前:デフォルトの名無しさん [2020/06/04(木) 22:10:21.75 ID:uauxSmqO.net] Range("AK10", "AM510").MergeAcross:=True Range("AN10", "AP510").MergeAcross:=True Range("AQ10", "AS510").Merge Across:=True Range("AT10", "AV510").Merge Across:=True Range("AW10", "AY510").MergeAcross:=True Range("AZ10", "BB510").Merge Across:=True Range("BC10", "BE510").Merge Across:=True Range("BF10", "BH510").Merge Across:=True Range("BI10", "BK510").Merge Across:=True Range("BL10", "BN510").Merge Across:=True Range("BO10", "BQ510").MergeAcross:=True Range("BR10", "BT510").Merge Across:=True Range("BU10", "BW510").MergeAcross:=True Range("BX10", "BZ510").Merge Across:=True Range("CA10", "CC510").MergeAcross:=True Dim po As Long, ro As Long For gg = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1 Rows(po + 1).Insert For ro = 5 To 79 Cells(po, ro).Resize(2).Merge Next ro Next po HorizontalAlignment = xlCenter VerticalAlignment = xlCenter Application.DisplayAlerts = True End Sub VBAの勉強すらしてない俺が10個くらいのサイトからパクってつなげて一応希望通り動いた setとかレンジ型とか意味わからんわ…
549 名前:デフォルトの名無しさん [2020/06/04(木) 22:13:08.78 ID:uauxSmqO.net] For po = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1 ここはこうだったな俺の変数癖だわ なんかもう難しすぎて勉強するよりネットで検索してパクって繋げたほうが楽な気がする 39歳からVBA覚えるって脳みそがついていかんわ
550 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:15:04.15 ID:k3k6AIFZ.net] そんな報告いらん 自分の日記スレでも立てればいい
551 名前:デフォルトの名無しさん [2020/06/04(木) 22:15:05.91 ID:OTCVkkK8.net] 隙あらば馬鹿が日記を書き込む
552 名前:デフォルトの名無しさん [2020/06/04(木) 22:19:18.86 ID:uauxSmqO.net] 隙あらば馬鹿って言いにきてんの? 定期的に馬鹿としか書いてないけど
553 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:22:05.20 ID:i/KeU7gc.net] そうして精神を保ってるとでも思っておこう
554 名前:デフォルトの名無しさん [2020/06/04(Thu) 22:43:14 ID:OTCVkkK8.net] >>528 馬鹿は黙っていろよ
555 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:57:09.20 ID:nxAuSZLn.net] セルにコメント挿入して中の文字色を一部だけ変えれる事って出来ますか? strTxt=111111(vbtab)223(vbtab)8975 例えばこんな文字列の223だけ赤色、それ以外は黒色。
556 名前:デフォルトの名無しさん [2020/06/04(木) 22:59:22.67 ID:c/xPJE8L.net] >>528 お前の書き込みは馬鹿の自己満足以外の何物でもないぞ
557 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:25:19 ID:fHeju+Td.net] >>531 Cells(1, 1).AddComment "あいうえおかきくけこさしすせそ" Dim c As Excel.Characters Set c = Cells(1, 1).Comment.Shape.TextFrame.Characters(2, 10) c.Font.ColorIndex = 3 例えばこれだと、コメントを追加して2文字目から10文字のフォント色を色番号3=赤に変える という処理になるよ。 他にもフォント,太字斜体,サイズとか、fontクラスのものなら何でも変えれるね。 処理的には変更開始と文字数をどう特定するかだけど頑張ってね
558 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:27:45 ID:2CjtUfu9.net] >>531 comment.shape.textFrame.characters
559 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:50:59.98 ID:8UrD2y10.net] 39歳で限界とか。元々能力が低いとしか。
560 名前:デフォルトの名無しさん [2020/06/05(金) 05:51:53 ID:td6kQI8l.net] >>535 なんだと、このハゲ!
561 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 06:27:32.36 ID:YMz2fC5g.net] >>523 一応解説すると、、、 値にはいろんな型があるけど、 文字リテラル(例:"Hello") 数値リテラル(例:123) 日付リテラル(例:#2020/6/5#) 真偽値 (例:True) 上記で構成される配列(例:Array("月","火","水") ) これらは(またはこれらの値を返す式)はイコールだけで変数にぶっ込めるけど、 これら以外はすべてオブジェクトと見なされるので、 Set 左辺=右辺 の記述で変数に代入する必要がある。 例えば、ブック、シート、といったものはすべてオブジェクト扱い。 もちろんセル範囲(Range)もオブジェクトなので、Setが必要。 範囲オブジェクトを返すには Range("アドレス記述")で表せるけどこれだと 示してくれた例のように全部書き出す必要がありコードが冗長になる。 そんなときはCells(行,列)の記述で範囲オブジェクトを返すとLoop処理で 簡潔に記述できる。 Cells(行,列)だと1セルしか表せないからRangeと組み合わせて Range(Cells(行,列),Cells(行,列)) みたいに記述すれば指定範囲を表現できる。 または、 Cells(行,列).Resize(500,3) みたいに記述すれば範囲サイズを拡張できる。 あとはForで行、列の変数をうまうコントロールすればOK. 理解の助けになるといいけど、、
562 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 06:58:05 ID:Lq81HhXC.net] >>536 年齢を言い訳に使ってる時点で人として残念な人でしょ
563 名前:デフォルトの名無しさん [2020/06/05(金) 07:40:51.89 ID:oZqvF/U1.net] まったく最近の若者は……
564 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 08:25:59 ID:KlfmBaSN.net] 勉強の話が出てるけど上級者だって全てを覚えているわけじゃない。 >>533のCharactersの話だって、取りあえずこの後に"("を打って見れば説明が出てくるんで、そこから推理してる。 そして推理したら実際に別でテストする。 上手く動いたら、うっすら何となく覚える。 うっすら覚えてる場合は次回も"("打ってからの推理から始まる。 それで問題は起こらないし、何回か繰り返せば完全に覚える。 丸暗記は大変だし結果的に覚えない。
565 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 10:36:23 ID:fHeju+Td.net] いや何となく覚えてたけど
566 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 12:39:12 ID:tnz6CDPA.net] そのなんとなくでいんじゃねって話でなくて?
567 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 18:45:39 ID:IG+dLk9+.net] >>525 そろそろ引退したらどうですか?
568 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 19:01:37 ID:7QZKDprx.net] >>522 入れ子時の対策として言っただけで、普通は入れ子になりづらいとか急に言われても困る あと意識せずに自然に再帰になるとかマ? 関数型以外じゃ意識しないと普通できないだろw やるとしても配列の畳み込みメソッドぐらいなんでは?
569 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 20:18:14.26 ID:KlfmBaSN.net] >>544 例えば初めて再起を使った時に再起なるものなんか知らなかった。 単純に自分を呼び出せば良くね?と思って書いたら再起だった。 再起なるものを知った後でも、基本的に自分を呼び出せば良いじゃんと思う場面が殆ど。 例えば、パスを与えたらそのフォルダの下のファイルやフォルダ名を全部列挙するという関数を考える。 列挙してる中でフォルダ名取得したら、そのフォルダ名で自分を呼び出せば良いわけだ。 そうすればその呼び出しで更に配下の列挙が得られるんだから。 もっとも、このファイル列挙では最初はDir関数グローバルな動きをすると知らなかったので上手く行かなかったけど。
570 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 20:57:20.30 ID:H0L/fXZL.net] 再起って何だろう?
571 名前:デフォルトの名無しさん [2020/06/05(金) 21:05:54 ID:rCWyQTVZ.net] >>543 職場の業務というか海外含めて複数の支部で使われてるから出てくるデータを瞬時に処理できるコードをここで3つ教わってしまったからね もうVBA続けるしかないわ textデータにプローシージャコピーしてクラウドに保存してあるレベルの
572 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:08:38 ID:cCPYycaK.net] >>546 たぶん再帰の変換ミスだろ
573 名前:デフォルトの名無しさん [2020/06/05(金) 21:32:27 ID:ZSs62RcL.net] 色々調べたのですが・・・。 コピーし貼り付けのマクロで 条件付き書式だけを除いて張り付ける、というマクロを探しています。 今の状態ですと条件付き書式の情報まで上書きされて困っています。 ご教授宜しくお願い致します。
574 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:43:17.50 ID:H0L/fXZL.net] >>548 変換ミスにしては何度も使ってるぞ
575 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:47:17.22 ID:2CjtUfu9.net] >>549 まず他スレの質問締め切るなり断り入れるなりして来いよ
576 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:47:20.00 ID:nvWU7/6f.net] 貼り付けた後に .FormatConditions.Delete で条件付き書式だけ削除じゃダメなの?
577 名前:548 [2020/06/05(金) 22:17:11 ID:ZSs62RcL.net] >>552 有難うございます! しかしそれでは出来ないのです。すいません。
578 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 22:21:45.02 ID:WwtDf+8P.net] >>549 そもそも"コピー"する必要はあるの?
579 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 02:50:09 ID:2JXrsjtz.net] pasteSpecial繰り返して必要なものだけ貼り付けるしかないんじゃない?
580 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 07:05:32 ID:boE/wbIl.net] 何度でも蘇るのが再起だろうな
581 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 08:07:18.40 ID:dTKuJKfw.net] >>436 ロマサガ3とはなかなか分かってる先輩だなw
582 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 12:47:06 ID:EOD/vRIp.net] VBAの配列にもCount使わせて欲しい・・・・ 面倒でたまらないわぁ ちなみにSplitで空配列になったときってUBoundは必ず-1返すのかな まぁSplitする前の文字列が空かどうかで判別すればいいんだけど
583 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 14:19:39.59 ID:nsmtjJW2.net] SetTimerのコールバック関数内でSetTimerしなおすやつは、再起といっていいかも あれ、再帰じゃないし
584 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 14:24:54.65 ID:FUHWS7EH.net] >>558 そういうのはラッパークラス定義しちゃえばいい 要素を持たない配列はuboundで-1になるけど、 配列を返す関数をそのままuboundの引数にするとメモリが解放されないらしい 一度変数に代入してから、その変数を引数にするしかない
585 名前:548 [2020/06/06(土) 19:20:06 ID:evXurMFK.net] >>555 有難うございます!そういうやり方もありますね。勉強になりました。 あれからIF関数と条件付き書式を組み合わせて問題克服できました。 相談に乗っていただけた方みなさん有難うございます。 お騒がせしますた。
586 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:10:37.79 ID:czcu/Wo5.net] ボタンを押してランダムに1ー100の数字をコンピュータに選ばせて、その結果をセルに表示させたいと思いマクロを組みました。 それはできたのですが、ボタンを押すごとに出る数字の履歴を残したいときはどうしたらいいでしょうか?例えば初めはA1、次はA2、次はA3…のようにしたいです。
587 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:27:02 ID:MDOjbT3v.net] また馬鹿が来た
588 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:42:25 ID:Dw2BAEV/.net] 消さなきゃいんじゃないの…
589 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:51:41 ID:czcu/Wo5.net] 1回目、2回目とボタンを押すごとにA列を下方向に順に記録させたいのです。 説明が悪いかも、すみません
590 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:00:00 ID:81VYwWTh.net] 色々やり方があるが回数を持たせるのが簡単だろうな
591 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:00:43 ID:Dw2BAEV/.net] その通り表示させるセル変えればいんじゃないの…
592 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:16:26 ID:MDOjbT3v.net] >>565 馬鹿過ぎて話しにならない こんなのがわからないような馬鹿には色々無理
593 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:44:14 ID:81VYwWTh.net] >>568 初心者ってこんなもんだろ
594 名前:デフォルトの名無しさん [2020/06/07(日) 03:03:21.76 ID:zKcEsa3T.net] 初心者は全部同じというゆとり理論
595 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 03:47:02 ID:kmJ+/rqz.net] >>565 A列の最終行を探して次の行に数を入れる
596 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 03:48:37 ID:kmJ+/rqz.net] 最終行は値の入ってる最後って意味ね
597 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 05:24:32.66 ID:cf9XL00M.net] まずは「1ー100」をマトモに書けるようになるのが先決だな
598 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 05:49:46 ID:dyM/5p3V.net] >>545 再帰はスマートに書けることも多いけど再帰の数だけメモリを消費する ファイル列挙みたいな大量になりかねないデータを扱う場合はおすすめできない 時間的にもメリットがないどころか下手すると遅くなり得る 列挙程度のどうでもいいような処理に使うべきじゃないよ
599 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 07:38:47 ID:czcu/Wo5.net] >>571 は!なるほど!! ありがとうございます!! 皆様もありがとうございます!精進します!
600 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 07:53:48 ID:MHP0r7Cu.net] >>574 〉ファイル列挙みたいな大量になりかねないデータを扱う場合はおすすめできない じゃあこの場合どう処理するの?
601 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 07:56:27 ID:ntu7XVDq.net] コマンドプロンプトで十分だと思うけど。 VBAでやると、ファイル名に特殊文字が使われていた時に止まって地味にウザい。
602 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 08:33:05.30 ID:xH2ID0fk.net] >>574 何でこんな頓珍漢な指摘が出てくるんだろうね。 そんな話じゃないだろうに。 自然に再帰になるという例であって、問題あるなら辞めれば良いだけのこと。 それに、そのメモリ消費だが下手くそな組み方だったらその通りだが、そんな組み方しないでしょ。 >>577 何の為にファイル列挙してると思ってんの? それで終わりの筈が無いだろうw
603 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 08:38:56.41 ID:ntu7XVDq.net] >>578 だからなに? コマンドプロンプトで出力したものは再利用できないとでも?
604 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 09:55:56 ID:kdiJvE9H.net] >>560 さんきゅ
605 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 13:01:44.81 ID:H9nBLvae.net] >>577 > VBAでやると、ファイル名に特殊文字が使われていた時に止まって地味にウザい。 それお前のコードがバグってるだけだろw
606 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 13:10:29.47 ID:xH2ID0fk.net] >>579 出来るに決まってんだろw でも、それを良しとするか? マトモに書ける奴は良しとはしないだろ。 仕方なしにはするけど。
607 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 13:12:52.96 ID:xH2ID0fk.net] >>581 いや、これはあり得る。 多分回避も出来るけど、そこ迄考えるのは面倒いので。 問題が起こったら何とかするか、その名前は無理と言うかも。 何しろVBA以外でもトラブルの元なので。
608 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 15:02:44.03 ID:bx1NUQ41m] >>518 解析かな?→python
609 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 15:23:54.63 ID:H9nBLvae.net] >>583 具体的なこと書かないであり得るとか言われてもなぁw
610 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 16:37:31 ID:ntu7XVDq.net] >>582 知らねえよ。 お勧めできないならこれで良いだろって代替案出しただけで。 >>585 「特殊文字」は具体的じゃないのかよ。 何の文字かまでいちいち書いてあげないと納得しないか?
611 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 17:05:54 ID:odk7pmo/.net] ファイル名に使えるのにVBAで扱えない文字なんて心当たりがないので、ぜひ具体的な文字を教えてくれ
612 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 17:48:58 ID:EhPxLCve.net] おすすめの教本ありますか?
613 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 17:49:37 ID:H9nBLvae.net] >>586 > 「特殊文字」は具体的じゃないのかよ。 どこが具体的なんだよw > 何の文字かまでいちいち書いてあげないと納得しないか? 文字と何をして止まるのかを書かないとね まあ書けないと思うけど
614 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:20:31.92 ID:s05OkEKn.net] >>588 記録したソースを弄った方が早い どうしても本が欲しいというなら、出来るだけ完成したソースがたくさん載ってる本がいい
615 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:34:00.18 ID:Rq/eP/Hm.net] VBAでは無いけれど 今回のオンライン申請では氏名の間に空白スペースがあったり 住所のハイフンなんかでエラーだったよ 山 田 花 子 山田 花子 山田 は な 子 11-20-13 十一一二十ー十三 一丁目 II ノ丘 ハイツ III 一- 弐- 三
616 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:53:28.87 ID:H9nBLvae.net] だから何? それそういう仕様なんだろ(まあバグかもしれんが)
617 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:56:58.14 ID:ntu7XVDq.net] >>589 ああ、確かに特殊文字じゃ書けないわな。 |あいうえお 一番左にカーソルがある状態。 あ|いうえお 1回右を押す あい|うえお 2回右を押す あい|うえお 3回右を押す ←2回目と3回目が変わらない。こういう状態になる文字だよ。 あいう|えお 4回右を押す あいうえ|お 5回右を押す これで満足か?
618 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 19:05:10.46 ID:ntu7XVDq.net] >>587 特殊以外だと、日本語環境で中国語とか。
619 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 19:26:44 ID:eHR7BWdB.net] >>591 それ例ではスペースとかハイフン無いのに入力してエラーのパターンでは
620 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 19:30:43 ID:H9nBLvae.net] >>593 もしかしてカーソルが「止まる」とか言ってたのか? 想像以上に低レベルだったなw
621 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 20:18:15 ID:ZURHSwDA.net] そういえばADOを使ったcsv取り込み機能でうちの業務システムから出力したcsvファイルを取り込んだらエラーが出たことあったな。 ファイル名変えたら取り込めたけど。
622 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 20:32:18 ID:1v0hAbPt.net] >>596 >>594 オイオイ、♬みたいな奴だろ。 文字列変数で受けると?になっちまうんだ。
623 名前:582 mailto:sage [2020/06/07(日) 20:50:04 ID:1v0hAbPt.net] ファイル名に?が入ったまま何かの処理をすればエラ―吐いて止まるというのは考えられる。 というか、何で俺が解説しなきゃならねえんだよ。 頼むぜw
624 名前:582 mailto:sage [2020/06/07(日) 20:56:23 ID:1v0hAbPt.net] >>591 そいつはレベルが低いな。 スペースなんて正式な住所や氏名にはあり得ねえとして、入力したもんから片っ端から抜いちまう処理を入れるもんだ。 ハイフンはちょっとあり得る。 普通はマイナス使うと思うんだが罫線記号使ったり似たのがいっぱいあるからな。
625 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 21:55:32.54 ID:XVHV5xvT.net] これだな >Excel VBA 質問スレ Part43 >274 名前:デフォルトの名無しさん[] 投稿日:2016/12/02(金) 22:33:29.62 ID:rRSQCExt [1/2] >ちょっと質問 > >・おもむろにファイルエクスプローラを開く >・なんでもいいからファイルのプロパティを開く >・そこの作成日時をドラッグする >・セルのA1にペーストする > >例えば 2013?年?12?月?1?日、??17:02:28 >これを(すでに文字化けしてると思うが) >2013/12/1 17:02:28 >に整形したいんだけど >どうすればいいんだ? >半角に見えるけどサクラでみるとU+200Fとなっている >中には数値の間にも混入しているのもある >最初からFSOで取得するのは無しで >すでに手動で取り込んだ数百件ものデータなんだ >よろしくお願いします
626 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 22:23:02.67 ID:QPxy+dct.net] 再現しないぞ
627 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 22:44:34.20 ID:Zvt1FY8k.net] >>600 そりゃ、住基ネットのデータベースが インターネットからは参照不能で 全国の一般の素人が入力する事を想定した設計に無理があったんでしょ。
628 名前:デフォルトの名無しさん [2020/06/07(日) 23:18:32 ID:kciisc/v.net] 前スレでここで教えて貰ったのが完成した 課のみんなのPCに入れて使いたいらしい パス指定するタイプだから ・読取専用にする ・プロジェクトプロパティをロック ・C直下に置いてショートカットをデスクトップに置いてやる ・シート名は変えるなと徹底 こんだけ教えとけばまぁ大丈夫だよね?
629 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 23:22:24 ID:wDFSrhzA.net] セルの行と列の変数名って業務でよく使うんだけど Dim r As Long '行 Dim c As Long '列 これで癖付けてっていいですか?いいですよね?
630 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 23:26:23 ID:Zvt1FY8k.net] >>604 何が完成したのやら レス番を貼るか概要を書いて貰わないとわからん
631 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 23:35:39.43 ID:Zvt1FY8k.net] >>605 そのコード読むのが自分だけか複数人かでメンテしだいじゃ無いの
632 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 01:11:56 ID:VAdCiuLB.net] >>598 確認した 変数で受ける以前の問題だな DirとかいまだにUnicode対応されてないのか だったら8.3形式で返せばいいのにな
633 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 07:02:43 ID:upiiQwtH.net] >>608 ググるとFileSystemObject使えって書いてあるな
634 名前:582 mailto:sage [2020/06/08(月) 07:46:04 ID:ACGXca97.net] >>609 でも、変数で受けちまうと何使っても?になっちまうよ。 それにFileSystemObjectのファイル列挙は糞遅かった筈。 特別な理由が無いならエラーで抜けちまって、特殊なファイル名には非対応とメッセージ出した方が良い気がする。
635 名前:582 mailto:sage [2020/06/08(月) 08:00:05.61 ID:ACGXca97.net] >>603 少し住所を扱う処理を動かせば直ぐに気付くレベルの話だよ。 特にスペースなんて人名や住所以外でもよくある話。 全角だろうが半角だろうが""に変換しちまうのはよくやるだろう。 まあ、全角半角は数字とかアルファベットでも問題になるからその前に
636 名前:StrConv使って統一するとかが普通の処理だろう。 ハイフンだって思いつくものはマイナスに変換する程度のことはする。 [] [ここ壊れてます]
637 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:12:22 ID:/JIEFRnW.net] むしろテキストボックスのEN_UPDATEでスペースやハイフンを消せば楽 郵便番号欄は数字以外受け付けないようにスタイル指定するだけでもいい
638 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:46:24.73 ID:k1oezjz2.net] フォルダを指定し、そのフォルダ内の全てのブックの、各ブックのシート"sire"の2行目から最終行をコピーして シートcompの最下行の一つ下に張り付けていき、I列に各ブック名を記入していくマクロを教えてください。 Sub comp() 'フォルダを選択 Dim path As String Dim r As Long Dim buf As String Dim i As Long Dim filename As String Dim mysheet As Worksheet Dim srcbook As Workbook Dim srcsheet As Worksheet With Application.FileDialog(msoFileDialogFolderPicker) If .Show = 0 Then MsgBox "キャンセルされました。" Exit Sub End If path = .SelectedItems(1) End With Application.ScreenUpdating = False
639 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:47:00.39 ID:k1oezjz2.net] 続き Range("A1").Value = "担当者" Range("B1").Value = "行程1" Range("C1").Value = "件名1" Range("D1").Value = "行程2" Range("E1").Value = "件名2" Range("F1").Value = "行程3" Range("G1").Value = "件名3" Range("H1").Value = "期間" Range("I1").Value = "グループ名" Set mysheet = ThisWorkbook.Worksheets("comp") Debug.Print myseet buf = Dir(path & "\*.xls") 'フォルダ内の全ファイル名 Debug.Print buf Do While buf <> "" Set srcbook = Workbooks.Open(path & "\" & buf) Set srcsheet = srcbook.Worksheets("sire")
640 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:47:32 ID:k1oezjz2.net] 続き filename = 'srcsheetの拡張子なしのファイル名を取得 'シートの内容を2行目以降コピー srcsheet.Range(Cells(2, 8), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy 'myseetの最下行の一つ下に値として貼り付け mysheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues 'I列にそれぞれのファイル名を入力 For r = Cells(Rows.Count, 9).End(xlUp).Row + 1 To Cells(Rows.Count, 1).End(xlUp).Row Range("I" & r).Value = filename Next r srcbook.Close False buf = Dir() Loop Cells.EntireColumn.AutoFit Application.ScreenUpdating = True End Sub
641 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 10:43:42 ID:pUpXY1nL.net] ワークシートの指定について Activesheetだと動いて、worksheets(index)やworksheets("シート名")にするとプログラムが動かないことが多いのですが、何故でしょうか 下のようなプログラムを作りました。(Sheet2のA列の数字でSheet1にフィルターをかけて、pdf出力を繰り返す) Sub Macro3() For Each c In Worksheets("Sheet2").Range("A1:A68") i = c.Value a=1 Worksheets(1).Range("$B$4:$N$6492").AutoFilter Field:=1, Criteria1:=i Worksheets(1).PageSetup.RightHeader = " " & i r = Range("$B$5:$B$6492").Find(i).Row Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Documents" & i & "." & Cells(r, 11).Value Next c End Sub これを実行しても、フィルターがかからず、pdf出力メソッドの部分でエラーが起きます。 しかし、Worksheets(1) を Activesheetに直して、Sheet1をアクティブにした状態で動かすと正常に動きます。 イミディエイトウィンドウでWorksheets(1)が正しく指定されているかも確認しましたが、されていました。 一体何が原因なのでしょうか。
642 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 11:07:13 ID:FM/y1B8a.net] >>616 入力ミスがないとして、この2箇所でシートの指定が抜けてるのが原因では Range("$B$5:$B$6492").Find(i).Row Cells(r, 11).Value 何度もWorksheets(1)を書くんじゃなくて、Forの外でActivateするかWithでSheet1を指定した方が間違いがなくていいと思う
643 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 11:07:50 ID:F0/ca02L.net] workbookは指定してるの?
644 名前:デフォルトの名無しさん [2020/06/08(月) 14:34:55.82 ID:k7tLKOMH.net] アドインに記述されてるプロシージャを、シート上の図形をボタンにしてそこから走らせたいのですが、 引数を渡そうとすると、このブックでマクロが使用できないかすべてのマクロが無効なっている可能性があります、と出て実行できません すべてのマクロを有効にしてもダメでした 引数なしの場合は、マクロが無効であっても、なんの問題もなく実行されます 登録は、'プロシージャ名 "引数"'とやっているのですが、マクロからそのままやると実行されますが、ボタンに登録すると実行されません なにが問題なんでしょうか?
645 名前:デフォルトの名無しさん [2020/06/08(月) 15:14:19 ID:vAWoQ1cV.net] sub 引数なし() 引数あり "引数" end sub
646 名前:デフォルトの名無しさん [2020/06/08(月) 15:39:02.50 ID:P+hhNSq/.net] なるほど・・・ 結構な数のボタンになるので面倒ですが、ひとまずそれでやってみます
647 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 15:41:22.39 ID:F0/ca02L.net] プルダウンなりなんなりで選ぶなりなんなりさせればいいじゃないなり
648 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 16:55:09.51 ID:Fo3kuWti.net] イベント付きボタンのクラス作ればいいんじゃないのかな
649 名前:611 mailto:sage [2020/06/08(月) 17:50:20 ID:k1oezjz2.net] srcsheet.Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy のところが違うみたいです。どう書けばいいですか?
650 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 18:10:47 ID:sSFxNrIu.net] シート名が抜けるの俺もむかーしよくやったわぁ アクティブにすると直るんだよなぁw 何度やったか記憶にないぐらいやって痛い思いした
651 名前:デフォルトの名無しさん [2020/06/08(月) 18:31:02.99 ID:J+Lc8xxu.net] withで囲んでもドットを忘れてそれに気づかずいつまでもソースとにらめっこしたりな
652 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 18:52:12.93 ID:d2CDqPLn.net] >>624 srcsheet.Range(srcsheet.Cells(2, 1), srcsheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy 確証ないけど…
653 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 19:01:25.33 ID:zqZQO86x.net] Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Sh.Range("A:Z").Interior.Color = xlNone If Intersect(Sh.Range("A:Z"), Target) Is Nothing Then Exit Sub Else '赤く色が変わる
654 名前:列 Intersect(Selection.EntireRow, Sh.Range("G:Z")).Interior.Color = RGB(0, 255, 0) End If End Sub とにかく複数選択したセル行の特定の列を全部色付け 選択をやめると色が戻る(デフォルト)をやりたくて ThisWorkBookにこれを追記 で、なんとか希望の動きになったんですが これに1行目から7行目は除外(選択しても色が付かない) という条件の追加は可能ですか? 自分の知識じゃ無理ゲーですみません [] [ここ壊れてます]
655 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 19:48:40.38 ID:58QwRa4M.net] >>628 一番最初に、ifステートメント入れれば良い。 if target.row >=8 thenとか。
656 名前:611 mailto:sage [2020/06/08(月) 20:15:16.49 ID:k1oezjz2.net] >>624 ありがとうございますm(__)m
657 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 20:24:46.83 ID:zqZQO86x.net] >>629 おおお、ありがとう理想の挙動に近づきました! これだと12行目を選択した後にやめて 1行目を選択しても12行目の色が残っちゃうんだけどそれは回避不能ですか? If Intersect(Sh.Range("A:Z"), Target) Isのところを If Intersect(Sh.Range("A8:Z5000"), Target) Is とかに変えても少し挙動が近づいた気もしますが、
658 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 20:28:42.90 ID:pW+OOibM.net] 構造体のメンバ変数を頭からindexで指定するようなことってできませんか? for文で構造体のメンバ変数と配列とを順次比較したいんですが。
659 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 20:28:54.07 ID:WKHI6Xr1.net] 変数名やプロシージャ名を日本語で書くか否か迷ってます 日本語命名で困ったことが起こった人はいますか
660 名前:デフォルトの名無しさん [2020/06/08(月) 20:30:33.47 ID:ckk4P3me.net] >>631 少しは頭を使えよ、馬鹿
661 名前:デフォルトの名無しさん [2020/06/09(火) 00:06:52.26 ID:GDblTDVr.net] >>634 頭使ったらハゲるだろ、このハゲ
662 名前:デフォルトの名無しさん [2020/06/09(火) 00:40:35.48 ID:4DWGZxBT.net] ちょっとトンチンカンかもしれないですが WindowsのエクセルのVBAって LinuxのOpen OfficeのCalcでも使えたりするんでしょうか?
663 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 01:33:20.60 ID:dgDUMn0q.net] >>633 あるぞ 英語環境しかないPCだと使えなくなる 人に送ったら面倒になった
664 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 03:31:53.35 ID:eSuxcQl/.net] >>633 うちが英語とスペイン語環境しかなくて送られてきたVBAが動かなくて困った事が何度もある 日本人だからって日本語環境でやってるわけではない
665 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 03:41:28 ID:eSuxcQl/.net] >>636 ExcelVBAはWinとMacでも違いがある Win/Mac/Linuxで使えるOOoやLOのCalcで使えるVBAは制限やできない事があるけど一応使える
666 名前:582 mailto:sage [2020/06/09(火) 08:27:55.73 ID:w8zDheKG.net] >>633 日本人にとってもコードが読みにくくてかなわん。
667 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:00:21.92 ID:khiSZY25.net] >>633 会社で使うなら社内の自分より詳しい人に相談してみ
668 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:06:51.24 ID:r/wULa9J.net] 個人的には日本語プロシジャー名好き 処理名だと分かりやすい
669 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:38:40.07 ID:rQkYVq9m.net] 困った時のローマ字 Sub CSV_no_deTa_wo_rodo_suru()
670 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:49:38.68 ID:r/wULa9J.net] そもそもシート名で日本語使ってるからね 気にするならそこからやらないとね
671 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:56:55.81 ID:LXNCuYlO.net] >>633 単純に一つの言語で統一した方が読みやすい これは一般的な文章でも感じられると思う 逆にコメント等を日本語にすることで注釈として意識させることが出来る 自分は実装には使わないテスト用のメソッドをを日本語名にする事はあるよ アメリカに送ったら云々は条件が特殊だし、 日本語コメントも文字化けするんだから関係ないだろと思う
672 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 10:05:30 ID:FZrbGc0Z.net] システムとして表示やコンパイルが可能かってのと、それを読む人間が外国語を理解できるかはまた別の話 とりまファイル名やワークシートに入ってるデータが日本語なら何も気にしなくていいってことよ そもそも半角文字だって国によって割り当てが違うんだし
673 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 10:25:08.00 ID:LXNCuYlO.net] いずれにしても海外環境で動くかって話になると、 関数名ひとつの話じゃないってことだな
674 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 11:06:11 ID:GhLF46O3.net] >>642 自分はプロシージャ名だけでなく変数名にもときどき使ってます。 変数名を横文字で考え付くのが面倒ってこともありますが。 行や列の位置を示す変数に tate yoko の後は 行 列 縦 横 など。
675 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 12:07:12.66 ID:GJCBYo9K.net] 賛否両論(少し否優勢)な感じね 賛の中でもプロシージャ名、関数名、定数変数名のどこまで日本語が許されるかも派閥次第か
676 名前:582 mailto:sage [2020/06/09(火) 12:11:23 ID:w8zDheKG.net] iとかなら良いけど変数の型とかプロシージャなのか区別出来る名前になってないと最悪。 で、日本語の名前つけてるのにそんなのが多い。
677 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 12:33:34.60 ID:RJ9Fxau+.net] >>639 ありがとうございます
678 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 12:34:58.09 ID:LXNCuYlO.net] 変な事せずに命名規則に従った方がいいと思うけどね メシマズ嫁と同じ思考回路だぞ
679 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:16:42.79 ID:VHdLMKHt.net] すみません。どなたか詳しい方、ご指導願います。 データ計算をVBA作成しようとして悩んでいます。 リストボックスにある地名を選択して、テキストボックス1に数字を 入力したらテキストボックス2に対応した数値を出したいのですが 上手く書けません。 データシートのA列(A2からA300)には地名、横軸(B1からBG1)には整数値(50ずつの数値)があり 地名と整数値の交点には、それぞれ対応した金額が入っています。 またリストボックスの地名は「地名」として別シートを作成しています。 説明方法が悪くて申し訳ないのですが記述の方法の 解説を宜しくお願いします。
680 名前:デフォルトの名無しさん [2020/06/09(火) 14:31:54.35 ID:ksQUvwBH.net] h,vlookupじゃダメなんですか?
681 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:36:44.80 ID:LXNCuYlO.net] どこまで書けてて、どこから分からないの?
682 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:38:50.34 ID:XR5JAco5.net] XY座標のセル表示して終わりじゃないなら ピボット勉強した方が良いと思う
683 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:49:37.66 ID:VHdLMKHt.net] 651です。 Private Sub ListBox1_Change() ListBox3.Clear Select Case ListBox1.Text Case "東京都" ListBox3.List = Worksheets("データ").Range("A2:A8").Value (略) End Select With ListBox3 .ColumnHeads = False .ColumnCount = 1 .ColumnWidths = "40;50;50" .Font.Name = "Meiryo UI" .Font.Size = 11 End With End Sub Private Sub TextBox2_AfterUpdate() Dim TextBox2 As Range Dim TextBox3 As Range Set TextBox2 = Worksheets("データ").Range("A2:A13") Set TextBox3 = TextBox2.Find(What:=TextBox2.Value, LookAt:=xlPart) If Not TextBox3 Is Nothing Then 'ヒットした値をテキストボックスにセット TextRegion.Value = Worksheets("データ").Cells(TextBox3.Row, TextBox3.Column + 8).Value End If End Sub なんか変です。。。
684 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:54:09.61 ID:VHdLMKHt.net] 651です。 たぶんツッコミどころ満載です。 交点のセレクトできていません。
685 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 15:51:31.81 ID:Hq8JX0Tk.net] なぜ段階を踏んで自分でテストモデルを組んでみないのかが疑問だわ 初心者の頃も含めてその程度の内容で誰かに聞いたことすらないわ
686 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 15:53:54.04 ID:Hq8JX0Tk.net] 1.リストボックスで選択してボタン押して他のフォームで項目表示できるか 2.テキストボックスに書き込んでボタン押して他のフォームのテキストボックスに表示できるか 3.リストボックスとテキストボックスで選択と書込をして同じフォーム上のテキストボックスに対応した数字を出せるのか とかとか
687 名前:デフォルトの名無しさん [2020/06/09(火) 16:19:22.27 ID:ksQUvwBH.net] マクロの記録使うのはいいけど その結果の意味ぐらい調べようよ ググらなくてもF1キー押せば表示されるからさ
688 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 16:24:07 ID:LXNCuYlO.net] >>657 下の関数内で使ってる変数名を具体的に書いてみたらどうかな TextRangeForSearchTargetみたいな文章風でもいいから
689 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:05:07.59 ID:/5vAUGTr.net] ユーザーフォームに https://www.s-projects.net/degree-position.html のサイトにあるような 位置度の算出を丸々搭載したいけど 素人にゃ厳しいですかね?
690 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:28:45 ID:FZrbGc0Z.net] >>663 簡単
691 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:40:53.94 ID:Hq8JX0Tk.net] ユーザーフォーム使ってTextBox1とTextBox2に数字いれてTextBox3に足し算の結果だすような基本をまず調べればあとは適当にぐぐりゃ分かるわな 計算途中も変数いちいち宣言して代入していくといいわ 自分で何やってんのか見失わないようにするため Sub testttt() Dim drawingX As Double: drawingX = 2 Dim drawingY As Double: drawingY = 2 Dim realX As Double: realX = 2.1 Dim realY As Double: realY = 2.1 Dim diffX As Double: diffX = realX - drawingX Dim diffY As Double: diffY = realY - drawingY Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2 MsgBox ResultPosition End Sub
692 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:54:43.46 ID:AbQV9kr1.net] Private Sub TextBox1_Change() 'Xの図面寸法 TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value) End Sub Private Sub TextBox2_Change() 'Xの測定値 TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value) End Sub Private Sub TextBox3_AfterUpdate()'Xのズレ TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value) End Sub Private Sub TextBox4_Change()'Yの図面寸法 TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value) End Sub Private Sub TextBox5_Change() 'Yの測定値 TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value) End Sub Private Sub TextBox6_Change() 'Yのズレ TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value) End Sub Private Sub TextBox7_Change() '位置度最難関 TextBox7 = Val(Sqr(TextBox3.Value) ^ 2) + Val(Sqr(TextBox6.Value) ^ 2) * 2 End Sub tBox6.Value) ^ 2) * 2 End Sub 1〜6まではぐぐったらなんとかできた あとは7… >>665 ぐぐるより難しそうで無理す
693 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:58:28.74 ID:AbQV9kr1.net] ああ、最後に変なコピペが混じってる 3と6にも多分式を入れないとだめですよね恐らく
694 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 18:02:48.17 ID:AbQV9kr1.net] いや違う、むしろ7に入れずに3と6っぽい? そもそもド素人にはやはり厳しいね 頑張りますわ
695 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 18:44:30.51 ID:AbQV9kr1.net] うおぉ、浮動小数点かこりゃ? どっかでroundで四捨五入せんといかんのね 1人であたふたすまん ほんとムズい
696 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 19:24:04.57 ID:Hq8JX0Tk.net] Changeイベントなんか使うから難しくなるわけで・・・・ そのサイトにあるように、ボタン押して計算するようなもの作りたいんだろ? ならズレ角度抜きで、テキストボックス7個作って ボタン押すと上の4個から数値拾ってきて下の3個に計算結果を入れるっていうな イベント系はCommandButton1_Click()だけでいいはずだぞ
697 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 19:44:15.62 ID:Hq8JX0Tk.net] Private Sub CommandButton1_Click() Dim drawingX As Double: drawingX = TextBox1.Value Dim drawingY As Double: drawingY = TextBox2.Value Dim realX As Double: realX = TextBox3.Value Dim realY As Double: realY = TextBox4.Value Dim diffX As Double: diffX = realX - drawingX Dim diffY As Double: diffY = realY - drawingY Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2 TextBox5 = ResultPosition End Sub https://i.imgur.com/yhMCwtL.jpg 位置度だけだけど。 テキストボックスはIMEModeOffにしておく
698 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 19:49:22 ID:0Bu4FXEm.net] なんでユーザーフォームってクソダサなんだろな 色変えられるんだしMicrosoftももうちょい気遣ってくれてもいいのにな
699 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 20:04:52.19 ID:PO2SY+XL.net] >>671 天才ですか、、 何も知らん癖に自動にしたいかなぁと 思って検索してパクりまくって作ってましたわ ズレ量も欲しいからとせっせと 小数点も3桁以上は四捨五入したく 1〜4までは意味も分からずとりあえず ちゃんと挙動してるかなぁレベル アドバイス貰う以前の素人レベルだからスクショですんません 原理すらわかってない https://i.imgur.com/0iPDqgX.jpg https://i.imgur.com/ksEqFVN.jpg
700 名前:582 mailto:sage [2020/06/09(火) 20:10:52.53 ID:w8zDheKG.net] >>666 そういう書き方せずに>>665 を具体的な値の部分は削除してまず関数化する。 Function GetResultPosition(drawingX As Double, drawingY As Double, realX As Double, realY As Double) As Double Dim diffX As Double: diffX = realX - drawingX Dim diffY As Double: diffY = realY - drawingY Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2 GetResultPosition = ResultPosition End Function 初心者を脱っしていれば、点はユーザー定義にしてると思うけど、まあこんな感じ。
701 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 20:19:17 ID:OFRsK1Sh.net] いつまで素人素人言い訳してくれくれする気だ
702 名前:582 mailto:sage [2020/06/09(火) 20:19:48 ID:w8zDheKG.net] 次にTextBoxの値を関数い代入する。 なお、TextBoxの名前もそれっぽく変えておく。 Sub test() Dim drawingX As Double Dim drawingY As Double Dim realX As Double Dim realY As Double drawingX=txtDrawingX.Value drawingY=txtDrawingY.Value realX=txtRealX.Value realY=txtRealY.Value txtResult.Value=GetResultPosition(drawingX, drawingY, realX, realY) End Sub
703 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 20:28:43.03 ID:PO2SY+XL.net] ごめんスクショの所も直しきれてなかったし初心者を脱してないレベルだから 調子乗って挑戦しようと思ったのが間違い 測定値はどこまで小数点書こうが3桁で四捨五入 ズレ量も四捨五入された3桁で表示 四捨五入された3桁のズレ量同士で計算されて 位置度も3桁で四捨五入されてフィニッシュ やろうとした事が多すぎました 普段のエクセルのSQRT関数入れたツールか 関数電卓で断念します クレクレとかじゃなく、助言みんなありがとうです
704 名前:582 mailto:sage [2020/06/09(火) 20:51:16.65 ID:w8zDheKG.net] >>677 四捨五入なんて最後で良いじゃん。 ResultPositionを四捨五入して返すだけだと思うが。 入力の見た目も四捨五入したいならそれぞれでやりゃ良いし。 どっちにしろ、四捨五入なんて考えずに作って、出来てから考えた方が良いぞ。
705 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:14:50.07 ID:PO2SY+XL.net] >>678 どうも…事情がありまして ズレ量と位置度を両方記入する必要があるから計算を合わせたいのです そうしないと記入したズレ量と数値の計算が違ってくるので なので普段はExcel関数ツール作ってで計算させてます (名称はセル番地) まず小数点7桁ぐらいで出力されてきやがるズレ量をRound関数で全て小数点3桁にする ↓ 小数点3桁同士で位置度の計算をさせる =if(位置度="","",SQRT(SUMSQ(X実測値-X図面寸法,Y実測値-Y図面寸法))*2) ↓ 最後に出た位置度も小数点3桁にする =if(位置度="","",Round(位置度,3) ↓ 位置度とズレ量を小数点3桁まで記入 現状これが自分の最善だったので…
706 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:21:13.62 ID:PO2SY+XL.net] 間違えた 小数点3桁同士で位置度の計算をさせる =if(Xの実測値="","",SQRT(SUMSQ(X実測値-X図面寸法,Y実測値-Y図面寸法))*2) 2つ目はこうやった
707 名前:582 mailto:sage [2020/06/09(火) 21:24:41.76 ID:kJxmgxZ3.net] >>679 いやいや、そういう話じゃなくてね、そんなもんは最後に入れれば良いでしょ。 先ずは四捨五入無しで動くところから。 あとTextBoxとかイベントとかも後でいいんだよ。
708 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:29:48.33 ID:PO2SY+XL.net] >>681 ごめん、ほんと初心者以前知識すらない関数だけで凌いできたレベルでちょいネットで調べりゃ出きるかなと思ったらもう手つけられんのですわ クレクレ以前の問題で それでも >>671 のは頂こうと思うとります
709 名前:デフォルトの名無しさん [2020/06/09(火) 21:37:07.98 ID:/5vAUGTr.net] そういう業務と無縁だからエクセル関数で計算とかほとんど知らん俺からすると そんな数式ほんとかよと思ったら ほんとだった それはそれでよく考えたもんだなおい 測定をする?部署は凄いね
710 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:38:09.42 ID:khiSZY25.net] >>682 悪いことは言わんから早いうちに転職しなされ こういう仕事向いてないよ
711 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:41:34.61 ID:hYyeR2h+.net] プログラミングの基本も知らないレベルの人がコピペでツール作って業務に使用するって大丈夫なのか?
712 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:45:05.79 ID:FZrbGc0Z.net] 少数以下の計算結果を同じにするのは、Excelでは一番難しい分野の一つ たとえば銀行の利息とか、素人が作った数式だとまず合わない
713 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:56:09.99 ID:khiSZY25.net] この先も苦労するだろうし、もし重大な問題が起きた場合周りが迷惑するんだよな
714 名前:デフォルトの名無しさん [2020/06/09(火) 21:59:00.39 ID:I+ooWyO2.net] 馬鹿に教えても何かあるとまた頼るだけ 馬鹿に教えてもろくなことにならんぞ その場で形だけ低姿勢にしてるだけで本音は違うからな
715 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:01:59.19 ID:0Bu4FXEm.net] より正確な計算するのってcurrency型だっけ? double使うより
716 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:10:25 ID:OFRsK1Sh.net] 向き不向き以前に学習する気が無い
717 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:26:28.10 ID:1rtAHViu.net] 少数の計算はどの言語でやってもやっかい なので普通は名の知れたライブラリを呼ぶ 自分で書くのは最後の手段
718 名前:デフォルトの名無しさん [2020/06/09(火) 22:27:34.95 ID:I+ooWyO2.net] >>689 違いがわからない馬鹿はコメントしなければ良いのに
719 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 23:36:40.87 ID:KturEXme.net] スレチかもしれないけど他の方法も・・ >>653 VBA使わずにフォームコントロールのリスト選ぶだけで表示 https://i.imgur.com/SHqygJ1.png >>663 HTAのVBSciptで https://i.imgur.com/rvwycaA.png
720 名前:デフォルトの名無しさん [2020/06/10(水) 01:20:22 ID:aAKpfJRW.net] 学べない俺には刺さるわ、言い訳だが… これだけは!っていう心臓部になるコードだけはネットで見つけて何とか繋げて作る どこ弄ればどう変わるかだけ後で見ても絶対わかるようにコードより丁寧なコメントを残す それさえ完成するともう安心して終わり あとは簡単な挙動はテンプレがネットにあるからひろってくる ユーザーフォームのボタンはで黄緑、黄色、水色を多用する プロシージャ当てはめるだけで職場じゃパソコンの先生扱い android端末やiPhoneの扱いならなぁ 近所でおばちゃまたちのスマホ教室を副業でやってるくらい詳しいのにっくそっ!
721 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 05:20:40.78 ID:9S1ZPIsx.net] 趣味や勉強中ならわかるが仕事頼んだら理解してないネットのコピペもって来るような人にはもう頼めんだろ
722 名前:582 mailto:sage [2020/06/10(水) 06:37:22 ID:h6488s/K.net] >>682 そういう言い訳は良いから。 いつも思うことだが初心者はわざわざ問題を難しくする。 先ずは>>671の最後の TextBox5 = ResultPosition を TextBox5 = Round(ResultPosition,3) にするだけだ。 それに、TextBox1~4の3桁をど一にかしたいなら>>676を利用した方が簡単。 それぞれのchangeイベントで自分を3桁にした後で>>676のtest呼び出すだけ。
723 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 08:27:35.36 ID:ZDdhDfGU.net] あいつは禿げたおっさんで体臭臭そうだけど、俺からみるとなかなか頑張ってると思うぜ 簡単な書籍買って一冊読んである程度まとまった知識得るといいわ 一年後にはここでふんぞりかえってレスしてると思うね
724 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 16:06:12.58 ID:alb8qwRt.net] 買った本開いたの最初だけで、今は枕になってるぞ
725 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 16:45:17.85 ID:zxOaMDTC.net] >>698 メルカリへ
726 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 17:48:53.56 ID:GhRRuhdi.net] >>698 くれ
727 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 20:30:18 ID:O8L9L3qt.net] >>696 本当にありがとう。。言い訳やめて素直に全部頂いたら完成しました… 正直コードは何も理解しとらんですが… https://i.imgur.com/guqSVVU.jpg
728 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 20:43:31 ID:O8L9L3qt.net] なるほど、普段XとYの図面値が両方0な事も結構多い そういうときはTextboxの1と3(XとYの図面値)のValueを0に設定しとけばいいのか こういう事を本で基礎から学ばずスマホで調べて小ずるく終わらせるのが自分の学習性の無さ 、本当に駄目ですわ… 教えてくれた人への感謝と自分への落胆が酷い もう生産部署に飛ばしてくれよ
729 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 21:27:00 ID:r05FbU6w.net] フォームボタンを置いてそのシートで矢印押し続けるとセル移動が飛び飛びになるんだけど対処法ありますか? とりあえずマクロ登録した図形にしたら発生しなくなったけど押した感ないから気持ち悪い
730 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 21:32:19 ID:2cEQGA3C.net] >>701 理解する気が無いからな
731 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 21:34:24 ID:2cEQGA3C.net] >>703 本当に飛び飛びになってるかカーソル位置をdebug.printとかで確認してみろ
732 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 22:01:15.35 ID:zJ0W6AlK.net] >>704 そう、それがあかんわ ちょいちょいと細かなとこばっか弄るくらいしかできない とりあえず位置度の数値をアクティブセルに反映されるボタンを追加して完成です 失礼しました本当に
733 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 23:43:02.56 ID:r05FbU6w.net] >>705 もちろん実際に移動が飛ぶわけではありません 表示上の問題です
734 名前:デフォルトの名無しさん [2020/06/11(木) 02:06:11.07 ID:l/gRHUK3.net] 馬鹿はこうやって厚かましく聞きだそうとする
735 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 04:35:21 ID:upd9DdGd.net] 俺はあのおっさんはハゲで臭いけどできるやつだって思ってるわ しゃちょーの器だ 頑張ったな、おっさん
736 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 05:50:14 ID:p+d7/Y3X.net] >>708 質問スレで何を言ってんだ?
737 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 07:33:56.10 ID:Ppd1dcd+.net] 馬鹿って言いたいだけの人の相手しちゃダメ
738 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 12:31:19.92 ID:9UX6mR7k.net] いや、学ばない俺でも流石にセルに反映されるボタンくらいは聞かずに作れたのでそこまでは聞いてないですよ ボタンに アクティブセルとテキストボックスのvalueを=の動きつけるだけだし
739 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 14:46:24.05 ID:xmZccwT9.net] その「だけ」の組み合わせなんだよなぁ
740 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 15:47:31 ID:fXLeDjMq.net] 算数の問題で答えだけ合っていても計算式がないと正解にはならない カンニングとみなされるって知らんのか そうやって問題から逃げている初心者に教えることはない
741 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 15:50:35 ID:fXLeDjMq.net] ちょっと言いすぎたかな
742 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 15:56:00.83 ID:G1l0Tewu.net] いや、それでいいんだよ
743 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 16:13:44 ID:HN+bic0j.net] エクセル初心者はVBAなんて触らんし VBAやマクロ禁止の部署もあるからなぁ パートさんには入力欄とクリックのみだったりとか まー初心者がこのスレ見ることもないか・・
744 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 17:23:40.82 ID:9UX6mR7k.net] いやもう完成しました 感謝もしたし謝罪もします 計算式はPCないところで関数電卓使ったりするから嫌でもわかっとります √( xズレ^2+yズレ^2) *2 VBAでもまず覚えようと思ったので Xズレ→B列 Yズレ→C列 位置度→D列のデータの時 Dim s As Long Do While Cells(s, 3) <> "" Cells(s, 4) = Sqr(Cells(s, 2) ^ 2 + Cells(s, 3) ^ 2) * 2 Cells(s, 4) = Format(Cells(s, 4), "0.000") s = s + 1 Loop エンドサブちゃん 高卒には荷が重すぎ 高学歴でしょここの人達
745 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 17:29:15.93 ID:/dMXe1DS.net] その言い訳がましいフレーズをレスに入れるから良くないって、今後は書き込む前に考えたほうがいいよ ここはもう来なくてもいいから
746 名前:デフォルトの名無しさん [2020/06/11(木) 17:34:53.28 ID:Gg4t4WTy.net] 俺は計算系は答えられんがここは質問スレだからどんどんこい。 煽ってるだけの奴は何の目的でこのスレにするんだ。芸能人の話題待ちでもあるまいし。 自分の決め事があるならいいけど初心者は変数は後でわかるようにとにかく宣言すべし。 日本語だけはあまりお勧めしない。
747 名前:582 mailto:sage [2020/06/11(木) 19:31:53.23 ID:lwV9wV8Y.net] >>718 何で、そのループが必要なのかな? あと、いきなりCellsで始まるのはあまり良くない。 ブックなりシートなりから書いた方が良い。 でも、それだと長くなるからWithやSetを使う。
748 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 20:34:47.38 ID:upd9DdGd.net] 特定の行・列を表示・非表示にするボタン使ってるんだけどさ この行・列にActiveXの他のボタンがあったりなんかするこ、たまにこいつらが消滅するんだよなぁ debug.printとかで位置確認すると確かにそこにいるんだけどHeight=0とかになってる んで適当にSubプロシージャ作ってHeight=200とかに設定するんだけどだめ ならない エラーはかないけど、debug.printで確認してもぜぃろぉのまま Deleteも効かない てかエラー出る オブジェクトの選択と表示からみると存在してる 再起動してもだめ てかたまに開けなくなるw しゃーないから、新しいシート作って、そこにシート全選択でこぴぺすると 表示されてるボタンはコピーされるが 消滅したボタン群だけはコピーされない コピーされないってのは、オブジェクトの選択と表示にそいつらが出なくなることから判断してる 消えたやつは新しく作り直してる まぁそうすると元に戻るんだけどさ なんだか半分死んでて半分生きてるような感じなんだろうなぁ お前らこういうことある?
749 名前:蟻人間 mailto:sage [2020/06/11(木) 20:43:48.25 ID:9OB4DptL.net] ActiveXはサポート終了でしょ
750 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 20:47:39.72 ID:upd9DdGd.net] だってぇ・・・右クリで移動されちゃうボタンとかいやだもん
751 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 21:20:07 ID:v1OJq4JH.net] Active S○X
752 名前:デフォルトの名無しさん [2020/06/11(木) 21:49:44.43 ID:Pc/1Hill.net] txt123 = objIE.document.all.tags("table")(2).outerText でテキストを取得しました。 txt123 の中に授業表が入っています。 体育という単語が含まれていれば、A列のセルに〇、国語という単語が含まれていればB列に〇、 算数はC列・・・ という具合に特定の文字列が含まれていれば指定の列のセルに〇を入れたいのですが、 どうしたらいいでしょうか? 特定の文字列は国語、算数、体育、社会、理科の5つです。
753 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 21:52:07 ID:DFKeKDYT.net] >>726 馬鹿は死ねば治るかもよ
754 名前:蟻人間 mailto:sage [2020/06/11(木) 21:55:51.11 ID:fTevQdJs.net] >>726 文字列を検索する関数とIf文を使えば?
755 名前:デフォルトの名無しさん [2020/06/11(木) 22:00:18.32 ID:vUhEmjDF.net] >>726 こんなこともわからない頭の悪い奴に教えられる子供がどうなるか
756 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 22:05:40.83 ID:S8xfnPZH.net] >>726 色々無理だと思うぞ。やめとけ。
757 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 22:28:34 ID:Pc/1Hill.net] >>728 ありがとうございます! If InStr(txt123, "国語") > 0 Then こんな感じに値が返ってきたら〇と入力する仕組みになりました
758 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:19:34.07 ID:fXLeDjMq.net] まさかと思うがテキストボックス123個とか作ってるんじゃないよな
759 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:44:22.39 ID:52kheZTp.net] 何でそれでいきなりIE制御・・・。
760 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 00:13:44.58 ID:Y0E/tOto.net] 授業表をIEで見るって社内システムがそれなのか?
761 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 00:33:39.25 ID:cWAZHeBV.net] IE制御とかレガシーにも程があるだろ。。
762 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 00:43:49.91 ID:V6O8I1+o.net] WebページのテーブルってエクセルのVBAで IE以外にどうやって取得するの?
763 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 01:56:00.71 ID:MW3IhN88.net] test
764 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 02:10:15.74 ID:MW3IhN88.net] 選択した範囲のセル色を変えたいです。 If Intersect(Target, Range("B1:B5")) Is Nothing Then Exit Sub 色変更処理 変更可能なセルはB1:B5のみとしたいですが、 これだとB6が一緒に選択されている場合に一緒に色が変更されてしまいます。 B1:B6を囲ってしまった場合でも、B1:B5までの色のみ変更させたい場合どうしたらいいでしょうか。
765 名前:デフォルトの名無しさん [2020/06/12(金) 02:51:45.45 ID:KALz8/u9.net] また馬鹿か
766 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 03:29:37 ID:IFmaagGk.net] >>738 選択した範囲は選択されているのか?
767 名前:デフォルトの名無しさん mailto:s
[] [ここ壊れてます]
768 名前:age mailto:2020/06/12(金) 06:26:26.47 ID:u23pgbjD.net [ >>738 intersectした結果とTargetを比較したらいけないかな ] [ここ壊れてます]
769 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 07:59:23 ID:d1Ad7gfn.net] >>722 シートに配置したボタンでよく遭遇するよ。そんなもんだと思ってるから、ボタン押下時のコードに自分自身の位置とサイズを初期化するコードを書くようにしてる。
770 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 08:22:21 ID:F5wzc1/2.net] >>739 分からないからそれしか言えないのか?
771 名前:582 mailto:sage [2020/06/12(金) 08:32:29.25 ID:KgwnUKnv.net] >>736 俺が知ってる方法で4〜5種類の方法がある。 MSXMLとかWinHttpとかhtmlfileとか。
772 名前:582 mailto:sage [2020/06/12(金) 08:34:43 ID:KgwnUKnv.net] >>722 どっかのリボンにオブジェクトのリスト出せるボタンが有ったと思うが、表示されなかったっけ?
773 名前:582 mailto:sage [2020/06/12(金) 08:36:08 ID:KgwnUKnv.net] >>742 サイズ変わって見えなくなってるだけだよなあ。
774 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 12:46:47.02 ID:HqN3pHW3.net] >>722 セルにあわせて移動やサイズ変更するかどうかの設定があったはずだが
775 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 13:13:42.59 ID:1+2Rgw6z.net] >>747 バージョン2010以降「セルに合わせてサイズ変更や移動しない」の設定になっていても サイズが変わってしまう事例を多数経験しています。(2007は経験なし) ボタンだけでなく、コメントの位置も極端に移動すること多数。
776 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 13:14:30.95 ID:hxFv/xna.net] >>744 ヘェ〜そんな関数あるんだ、IEオブジェクトだけかと思ってた、ありがとう
777 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 17:49:02 ID:aQA9YYrW.net] >>742 エクセルに任せるんじゃなくてコード上で配置の指示だしておくってのは解決策になるのかもしれんね。ちっこくして非表示切り替えと関係ない安全な場所に退避させておくみたいな >>745 それが「オブジェクトの選択と表示」 リストには出てるんだわ >>747 まぁその辺もやってるんだけどね むしろその辺でバグってるんだと思う >>746 おれの書いた内容読んでないのかもしれんけど VBAからサイズを再指定して表示させようとしてもバグってて指定を受け付けてくれないってことな そもそもサイズの問題だけならシートコピーで他の正常なボタンと一緒にコピーされるはずじゃん
778 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 23:01:56.39 ID:FlbnSBZd.net] Windows10に変えたら、クロマキー合成みたいなのが出来なくなっちゃったんだけど、 何か方法ない?
779 名前:デフォルトの名無しさん [2020/06/12(金) 23:29:11.20 ID:KALz8/u9.net] また馬鹿が来た
780 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 23:57:17 ID:FlbnSBZd.net] >>739 >>752 一体どんな無様な人生を送ったら、そんなコメントが出来るようになるのかな? 生きててつまんないだろう? ここの住人にかまってもらえるのが唯一の楽しみかい?
781 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 00:29:59.36 ID:0QXppYe5.net] クロマキーはWin7まで。 ていうかクロマキーて・・。 確かにクロマキーだが。
782 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 01:18:01.22 ID:l5EmusQW.net] 一旦あきらめて、真の目的を違う方法で達成することを考えましょう
783 名前:デフォルトの名無しさん [2020/06/13(土) 03:31:14.05 ID:d/IEOBZf.net] >>753 自分が言われたという自覚があるんだ?
784 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 06:33:26.28 ID:iOfV/qX/.net] >>752 実は自分もわかってないからここで勉強してるんだろ でマウント取りたいからそのコメント
785 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 07:35:38 ID:gm1IvgiV.net] 質問スレなんてどこでも、マウントとって承認欲求を満たそうとする奴らばかりだよ。 特にVBAスレは、プログラミング板の他のスレでは相手にされないレベルの奴がここなら俺でもマウントとれるだろと集まってくる。
786 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 10:49:08.95 ID:hwBvm+CU.net] VBA始めて1週間 結構できるようになったけど、俺ってすごい!?
787 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 11:02:28 ID:iOfV/qX/.net] >>759 どうやって勉強した?どこまでできるようなった?
788 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 12:54:09.65 ID:l5EmusQW.net] VBA完全に理解した ↓ VBAなにもわからない ↓ VBAチョットデキル
789 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 13:53:12.35 ID:sXc2xmOg.net] 何を以て「できる」と判断したのか?
790 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 13:57:01.18 ID:k9PzEFx9.net] 初心者の頃に書いたコードみるとマジナンだらけでチョベリバだわ
791 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 14:05:41.14 ID:GFk/ON+H.net] 編集ができるってことじゃね
792 名前:デフォルトの名無しさん [2020/06/13(土) 14:17:20 ID:Ft3NByW3.net] ダニングクルーガー効果とかいうやつじゃね
793 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 15:41:58.59 ID:9rN9x/HV.net] VBAに限らないコーディング全般の話になるかと思うんですが、 For文のカウンタ変数に対してそのブロック内で加減算するのはいわゆる「お行儀が悪い」ものですか? For i = min To min Step -1 For j = i + 1 To max 〜処理〜 If 条件 Then 〜処理〜 Let i = i + 1 '←ココ 〜処理〜 Else 〜処理〜 End If 〜処理〜 Next j 〜処理〜 Next i 前任者が使っていた20行にも満たないコードですが、1行目に違和感がありました。 Do While/Until文で書き直せるものの、単に自分の理解度が低いだけかもしれず・・・
794 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 15:59:50.04 ID:sXc2xmOg.net] >>766 俺ならforにしないな
795 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:03:06 ID:hwBvm+CU.net] データ用のシートからデータをコピーできるようになったぜ ところでクラスモジュールにはどんなメリットがありますか? functionの意味は分かりましたが、クラスとの違いなどがよく分からず 今本屋で色々探してきましたが、解説が見当たりませんでした。
796 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:04:33 ID:HDBeOIwd.net] >>766 forにせずif文で条件抜けさせる方が読み手に伝わるし良いと思う… stepで減算してるのに条件次第でi加算するのは処理の流れが分かりづらくなる
797 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:05:08 ID:ll49+YlL.net] 一般的に、for nextの方が理解しやすいから、for 文ありきで書いてるだけなんじゃないかな。 感覚的にも可読性やメンテナンス性からも、do loopなどで書く方が良いと思います。
798 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:14:12.41 ID:lPN2rvMv.net] >>768 VBAのクラスはCOMとの相互運用のために存在する 普通に使う分には全く必要ない というか並のVBAerのスキルではメンテ不能になるからむしろ有害 クラスを使いたくなるレベルの高度な抽象化が必要になるようなら、 そもそもそんなことをVBAでやらなければならないシステム設計が間違っていると考えるべき
799 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:49:04 ID:9rN9x/HV.net] >>767, >>769-770 やはりそうですよね。Do〜に書き直そうと思います。ありがとうございました。
800 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:50:17 ID:hwBvm+CU.net] >771 ありがとうございます。 そこまでの説明が探しきれなかったので助かります。
801 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:52:28 ID:69sGe9cG.net] >>766 Forの使い方を間違ってる 途中で1足して、最後にまた1引くんなら、Do LoopとIfなどを使って条件をはっきり書くべき プログラミング全般の話となると、コンパイラによっては最初にStep値で割り算して回数を求めてしまうコードを吐くやつもあるので、正常に動かなくなる
802 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:20:23.36 ID:gmb5Wcnr.net] ブックのなかに、シートがたくさんあって、 マクロ利用者毎にマクロで動かしたいシートが違う。 だから、マクロの実行中に、利用者にシートを選択させて、それをactivesheetにさせたい。 そういうの、できる?
803 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:31:43.88 ID:sXc2xmOg.net] できる
804 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:35:00.95 ID:Q06gyfKt.net] >>775 ロジック的に変 Webページやスマホアプリでも最初にログインするのとかあるでしょ? 後から選択するくらいなら最初に分けた方が良いのでは?
805 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:38:57.44 ID:gmb5Wcnr.net] >>777 できれば、そうしたんだけど。 何人もの利用者が共通で使っているブックなので、シートを分けられないんだ。 シートがゴチャゴチャの状態から特定シートを利用者に選ばせたい。
806 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:42:11.92 ID:ejIEXNUq.net] >>775 https://qiita.com/rrryutaro/items/b8bdc6d16bdf8c66a190 この辺コピペしたら動くんじゃない?
807 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:54:40.10 ID:Q06gyfKt.net] >>778 ごめん参りました_| ̄|○>>779
808 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:56:13.87 ID:gmb5Wcnr.net] >>779 回答サンクス。 でも、もっとコードをシンプルにしたい。
809 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:56:56.64 ID:gmb5Wcnr.net] >>781 マクロを途中で止めて、利用者にシートを選択させることによって(そのシートのどこかのセルを選択させる)、activesheetにさせたいんよ。
810 名前:デフォルトの名無しさん [2020/06/13(土) 19:11:25.34 ID:Ft3NByW3.net] 自分でシートを開いてその後マクロを実行する形じゃダメなの
811 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 19:20:55 ID:gmb5Wcnr.net] >>783 今は、苦肉の策でそうしてるんだけどね。 諸事情により途中でactivesheet を選ばせたいんだ。
812 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 19:50:08.25 ID:mObNCAEc.net] これでいい気がする https://qiita.com/yosatonet/items/b7083d7c95d2d81b1ffa
813 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:02:21.69 ID:gmb5Wcnr.net] >>785 サンクス ありがとー。 でも、もっと簡単にできんかな。 どうやら、無理っぽいな。
814 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:08:18.16 ID:Q06gyfKt.net] マクロの途中で>>779 で作ったUserForm1.Showすりゃ良いでしょう
815 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:23:03.52 ID:mObNCAEc.net] じゃあこれ https://www.relief.jp/docs/excel-vba-select-cells-application-inputbox-methot.html
816 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:28:03.66 ID:sXc2xmOg.net] >>782 途中でセル選択ダイアログでも表示すりゃいいじゃん
817 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:36:43.64 ID:gmb5Wcnr.net] >>788 ありがと。 それやってみたけど、ちょっと面倒だった。 もう一回やってみる。
818 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:42:30 ID:gmb5Wcnr.net] >>788 やっぱ、いけるかも。
819 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:42:48 ID:gmb5Wcnr.net] >>789 ありがと。いけるかも。
820 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 08:41:44.1
] [ここ壊れてます]
821 名前:2 ID:ffGowWaR.net mailto: >>790 よく分からんがモードレスにすりゃ良いんじゃねえの? [] [ここ壊れてます]
822 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:14:04 ID:uWyGdyFQ.net] >>768 複数の自作関数をセットにして使いまわしたい時とか、 取得した値をプロパティとして保持しておきたい時とか、 自作関数でインテリセンスを使いたい時とか。
823 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:20:05.40 ID:ZfTKHz7W.net] >>794 モジュールと構造体でいいよねそれ
824 名前:デフォルトの名無しさん [2020/06/14(日) 11:21:47.96 ID:435IzS7y.net] VBA歴まだ1ヶ月 でtxtデータから全て数値をシートに引っ張り出す事は成功したけどそれをVBAで計算させるスキルはないからエクセル関数使ってる もっとスキルが欲しい
825 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:36:35.03 ID:PywPq9gj.net] 関数でできることは関数でやりましょう(例外あり)
826 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:52:53.71 ID:UBYu/Pyg.net] 関数ばかりでもいかんですう
827 名前:デフォルトの名無しさん [2020/06/14(日) 13:01:56 ID:435IzS7y.net] 引っ張り出した数値を ABS関数 ROUND関数 MAX、MIN関数 IF関数 でだんだんフィルターを通す感覚で で本来の数値に対応させてる VBAでそれをやる力を得るには5年はかかるな 俺じゃ
828 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:26:59.00 ID:0qngbhsm.net] 限定的な使い方になるが、連想配列でユーザ定義型使いたい時に代わりにクラスモジュール使うって手がある
829 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:44:32.79 ID:attwzNFV.net] 質問ですが、列が3つありそのうち2つが検索用ワードで これを元に検索し3つ目のセルにあるワードを配列に収めていく処理を行いたいです。 例えば、こういったテーブルがあります。 すずき、いちろう、170 すずき、じろう、171 たなか、さぶろう、172 検索条件を1列目「すずき」2列目「条件なし」とした時、170,171を配列に収める 検索条件を1列目「すずき」2列目「いちろう」とした時、170を配列に収める と、やろうとした時どういった処理が考えられるでしょうか。
830 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:51:33.71 ID:nNGIeJAo.net] データベースのアンド検索クエリ覚えなはれ
831 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:52:24.03 ID:0qngbhsm.net] >>801 オートフィルタで抽出して3列目を配列に格納
832 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 14:09:01.53 ID:NfMb0cpJ.net] >>801 まず表の範囲をテーブル化 そしたらテーブル操作の処理使えて簡単 officetanaka.net/excel/vba/table/
833 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 14:16:14 ID:UBYu/Pyg.net] >>801 逆にどういった処理も考えられないの?
834 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 14:28:07 ID:attwzNFV.net] ありがとうございます。 テーブル化の方向で調べてみます。
835 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 17:08:34 ID:zv9EPLCI.net] ユーザー定義関数をさ、AutoFill使って連続した複数セルに「=MyFunction()」みたいな感じで 代入していくじゃん 数式は正確に代入されてるのになぜか#VALUE!のエラーがでるんだよなぁ 計算対象になってるセルの1つをダブルクリックして値を入力するモードにしてから そのまま何もしないでエンター押すと、さっきまで#VALUE!だったところが 再計算されて正常にセルに表示される オートフィルに備えて連続セルの一番先頭にVBAから個別に代入しておいたセルがあるんだけど ここはちゃんと計算結果がでてる んで、このセルを始点にして手動でオートフィルかけて数式いれるとちゃんと計算される 手動オートフィルの結果代入された数式とVBAのAutoFill使って代入した数式を比較しても全く同じ でもVBAのほうだけは#VALUE!ですわ これ一体なんなのさ 一通り調べてわからんかったからAutoFillやめてForで回していれたった やっぱ俺にはこういう原始人的なコードがあってるわ
836 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 17:36:38 ID:0qngbhsm.net] >>807 計算対象のセルが更新された時自動で関数が処理される設定になってないから
837 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 17:49:03.80 ID:AaZP5Hye.net] >>806 ワシのやり方を参考にするなら Youtubeのチャンネル登録してな。
838 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 18:50:39.41 ID:zv9EPLCI.net] >>808 手動・自動のやつでしょ もちろん自動になってるわ Forで回して数式代入したときは普通に計算されるから理由としてはいまいちじゃね あと手動でオートフィルしてもいけるしね 表の右端に何列か並んでる数式は全部計算されるんだけど 下端にあるやつがだめなんだよね どちらも全く同じパターンで代入してんだよね まぁForでできるからいいんだけどな
839 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 19:19:38 ID:0qngbhsm.net] >>810 シートじゃなくて関数の設定 volatire
840 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:00:28.24 ID:Nip9LUw0.net] >>811 volatile (揮発性) じゃね?
841 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:18:20.66 ID:95POjxnT.net] >>807 > =MyFunction() みたいに引数がないと>>811 が言うようにvolatile指定しないと再計算されない 引数にセルとか範囲を指定してあると指定されたセルや範囲の値が変更されたら再計算される
842 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 21:59:15.66 ID:NTnc+gBz.net] >809 本人?。GW終わって更新控えめな気がする
843 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 00:54:28.92 ID:otdT67Yk.net] フォームを開いている際にセルをクリックしようとしても阻止されるんですが、 この行動を行った際にフォームを閉じるという処理をすることはできますか?
844 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 00:59:25.05 ID:AC0AKbql.net] ユーザーフォームのイベントで制御できなきゃ無理じゃね 一覧くらい見たんだろ
845 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 02:14:12 ID:VIqxNPAl.net] >>814 この人はダメだね。 コメントでちょっと突っつかれただけで コメント欄オフにするしプライドが高すぎ。 知識や経験が豊富で教え方も上手いとは思うけど ユーチューバ―には向いてないと思うわ。
846 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 05:44:07.25 ID:YCbdWLsV.net] >>811 >>813 Application.Volatile 入れてみた 結果だけど、やっぱボタン押して数式代入した直後はダメだった 変らず#VALUE! 変化があったのは計算対象になっているセルを1つ変更すると、 MyFunctionが入っているセルの全てが再計算されて正常値が表示されるっていう点ね Volatile入れる前は、変更セルを計算対象としてるセル1つだけが再計算された ちなみにMyFunction(rng As Range)です。すんません あと、これ重くなりそうでちと考えてしまう
847 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 10:48:29 ID:zn0xvlk+.net] >>818 ボタンのコードの後ろに、Application.Calculate とかを入れる
848 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 11:02:05 ID:zn0xvlk+.net] >>815 フォームを閉じるにはUnload ステートメント、非表示にするだけなら hide メソッドを使う セルクリックが目的なら、ShowModal=False か、フォームのShowメソッドで vbModeless を指定すれば、閉じなくてもいいよ
849 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 22:32:32.01 ID:qQkMiS3I.net] >>818 よくわかってなくてすまぬが数式入ってるセル全部選択して Selection.Value = Selection.Value とか「=」を「=」に置換するとかして内容同じだけど編集したことにすると 全部計算される、ってのは根本的な解決方法じゃないけどそれは別の問題?
850 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 22:40:50.61 ID:eWIek9um.net] >>821 代入で再計算させるなら formula = formula だぞ
851 名前:デフォルトの名無しさん [2020/06/15(月) 22:42:03.32 ID:GtKitEiM.net] このスレの住民ってVBAエキスパートとか余裕な感じ?
852 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 22:58:28.87 ID:MWB6z4Ac.net] 余裕でダメだと思う。 運転歴20年のやつが、教習所の学科試験に通るかどうか。
853 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 01:37:43.85 ID:vbVHH0Hs.net] 練習問題を見た感じ、満点は無理だけど合格はできると思う
854 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 02:23:10 ID:4czdKWOA.net] 人によるだろう
855 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 08:13:35.35 ID:4RAL3CE7.net] >>819 それ以前試してだめでしたわ >>821 >>822 解決方法なのかどうかは置いておいて、面白い視点だなって思いました Selection.Formula = Selection.Formula で、問題のあった2行のうち1行は行けました この2行の違いを分析すると何か見えてくるかもしれないなぁ 似たような方法なんだけど、これはいけた Dim ary ary = Sheet1.Range("G11:AH11") Sheet1.Range("G11:AH11") = ary 数式は表の最下部の行 G50:AH50 の各セルに入っていて、 例えばG50の数式はG11を引数の一部として使っている 計算の対象となっている値の一部を代入し直してみたってこと Forで回して数式入れていくのは見た目ごちゃごちゃするから わかりやすさっていう点ではこっちの方がいいのかな
856 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 12:20:48.09 ID:6wBq1IET.net] >>824 運転歴20年の奴は余裕で通る。 というか、はっきり言ってVBAエキスパートは初心者と変わらんよ。 某掲示板で質問者にもっと勉強してね的なこと言ったら持ってたようだった。
857 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 19:13:50.26 ID:Kui7C9E3.net] リストビューなるものを触ってみましたが2点分からないです。 @データを転記する際にwith文を使うとうまく出来て、使わないと一行ずつズレるのは? Me.ListItems.Add .Text = 111 .SubItems(1) = 222 .SubItems(2) = 333 End With Addして追加だからズレるのだろうけど、withって単なる省略だから同じ意味じゃないの? A転記したリストビュー全項目ループするにはどうしたいいですか?
858 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 20:14:01.04 ID:v7FumBBx.net] Doしたらいい
859 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 21:46:13.61 ID:aBdT/SFF.net] いや呼び方の問題とか、FormatだのStrComp関数だのあんまり使わんの出るから模試はやったほうがいいよ
860 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 21:52:16.10 ID:aBdT/SFF.net] >>829 withはコード省略じゃなくて参照。 (増やす)ってメソッド処理は一回だけで、(増えた項目)って出力インスタンスを参照できる形になる with 使わないと毎回(増やす+編集)の処理になる
861 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 21:57:13.61 ID:aBdT/SFF.net] 項目じゃなくてリストの間違いだった
862 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:40:42.45 ID:woSalLPH.net] >>827 Selection.Calculate でもダメなんですよね?
863 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:47:36.73 ID:cErksS8E.net] >>822 そうそう間違えました 表示形式が反映されないときに.Value使ったんでついそれ書いちゃいました
864 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 00:48:13.69 ID:VnGmvv1H.net] >>835 表示形式反映させるなら.Formula = .Formula では
865 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 13:19:05.23 ID:vz74rE0X.net] .Shimura = .Ushiro
866 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 15:24:21 ID:3v2Pocgc.net] そのコマンド打ったら参照先が見つかりませんってエラーが出たんだが
867 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 15:55:47.59 ID:F6Gn58oB.net] だめだこりゃ!
868 名前:デフォルトの名無しさん [2020/06/17(水) 17:19:39.75 ID:AebhaO3Q.net] 前スレの人達のくれた今の職場にいる限り永久に使える心臓部になるプロシージャ3つ これのおかげで救われた 後はひたすら勉強しないといけない ただそのせいで毎日
869 名前:夜中の2時とかまで強迫観念に捕らわれたように本やサイト見て体壊しかけてる 前スレの人達ありがとう [] [ここ壊れてます]
870 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 17:52:05.46 ID:VnGmvv1H.net] 独り言板へどうぞ
871 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 18:14:13.33 ID:LyT08W7k.net] そこまで初心者の人がやらなきゃいけないのか… 専門の派遣でも雇えば…
872 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 18:25:49 ID:1+VGIPZ0.net] >840 前スレのどれ?
873 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 19:41:41.88 ID:3u8uTgOs.net] まあ嘘だろうけどな、そんなん
874 名前:デフォルトの名無しさん [2020/06/17(水) 20:29:26.87 ID:Pc4G9CL1.net] 前スレ見えないけど フォルダ内のテキストすべての特定の部位から文字を全部抽出するコード これです
875 名前:デフォルトの名無しさん [2020/06/17(水) 20:47:48.75 ID:6I8rhd2p.net] 車輪の再発明どころか劣化真似事をありがたがるような馬鹿は消えろよ
876 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 21:02:20.52 ID:UkLP/htk.net] >>836 数式を値で張り付けたときに表示形式が反映されなかったんでValueだったんですよ
877 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 21:30:10.13 ID:VnGmvv1H.net] >>847 値貼り付けでは反映されんよ
878 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 00:14:55.64 ID:+xg8PxB0.net] 下記のような2次元配列があります。 1,りんご 2,ばなな 3.みかん これの果物名の列だけをセルに代入したいですが、簡単な方法はありますか? 現状、果物の列を一端列数0の配列に入れなおしてそのままセルに代入する案しか思いつきませんが、 もっとスマートな方法あれば教えてください。
879 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 00:29:49 ID:b73sLWwm.net] 行列入れ替えは考慮外なの? 参考は沢山出てくる EXCELのVBAで2次元配列の特定の列または行を1次元配列に変換する方法 qiita.com/takahasinaoki/items/1295c3df5ddfb13bdf8e
880 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 01:18:10.70 ID:AEhoYLDr.net] >>849 3だけピリオド
881 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 08:45:41 ID:CbKzbr3Z.net] >>849 貼り付け先の果物の前の列が消されても良いなら配列から1、2、3消してそのまま貼り付ける。 駄目なら貼り付け先の値を配列に入れてから貼り付ける。 貼り付け先の値を入れるのは本末転倒だからそういうデータが少ない場合以外は勧めない。
882 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 09:42:50.65 ID:1Z+MjfLn.net] >>849 地道に入れ直すしかない
883 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 15:10:31.12 ID:JIQPCGLI.net] てか配列から直接セルに代入しないといけないってのは データ数が多いとか速度重視したいとか? そうでないなら基本通りにFor使って入れりゃいいだけなんだけど
884 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 15:51:42.38 ID:AEhoYLDr.net] セルに入れるのがそもそも簡単なのに何ができないんだかわからん
885 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 16:29:20.31 ID:DGNmlHkR.net] おまいら質問をちゃんと読んでるか? 「簡単な方法はありますか?」なんだから、Forで回すのは嫌ってことだろ つまり回答は「そんな方法はない」
886 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 16:32:36 ID:DGNmlHkR.net] ステップ数を減らしたいだけなら、一旦そのまま全部ワークシートに入れて2列目だけコピペか1行目を削除すれば数行で完結する たぶんForより速い
887 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 16:33:11 ID:DGNmlHkR.net] 書き間違い→1列目を削除
888 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:30:14.12 ID:AEhoYLDr.net] 質問がどっかの問題の引用っぽく感じたので答えはかかないけどね
889 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:38:49.86 ID:Kimfxpnn.net] 同じ社員同士なのにエクセルの便利機能とかを 情報共有しないのってなんなんだろう
890 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:57:51.44 ID:1Z+MjfLn.net] ループからの抜け方、@とAどっちが推奨? @ do while for if 脱出フラグ = true exit for end if next if 脱出フラグ then exit
891 名前:do loop A do while for if 脱出条件 then exit do next loop [] [ここ壊れてます]
892 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:57:55.15 ID:AEhoYLDr.net] 嫌われているんだろ
893 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:58:44.91 ID:1Z+MjfLn.net] >>860 今まで関わった職場わりとしてるが
894 名前:859 mailto:sage [2020/06/18(木) 18:01:15.31 ID:1Z+MjfLn.net] @の3行目のifは脱出条件な
895 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 18:12:03 ID:AEhoYLDr.net] >>861 処理の抜けや他の処理に影響がないならという条件付きで?、 場合によっては exit sub 、exit function でも書く
896 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 19:24:08 ID:LKxMxESP.net] do whileの条件とifの条件ををandで繋いでdo while loop行の前でi=i+1(forのカウンタ代わり) これでよいのでは
897 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:39:21.23 ID:ck4WAMd+.net] GoToの使用を躊躇しない。
898 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:42:12.81 ID:1Z+MjfLn.net] >>866 二重ループの抜け方の作法を聞いてるんだが
899 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:48:21.18 ID:KBH9L3ob.net] do whileとforで2重ループするのが確定で、外側まで一気に抜けるのが確定なら2を選ばない理由がない
900 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:53:02.72 ID:DGNmlHkR.net] >>868 二重ループの内側から一気に抜けたい時は、俺なら内側のループを別プロシージャにするか、Do Loopを二重にする コード量によってはフラグ変数やExitは見通しが悪くなる、別の言い方をすれば終了条件がわかりづらくなるからあんまり使いたくない
901 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:17:54.42 ID:1Z+MjfLn.net] >>866 ,869,870 とりあえず処理に問題なければ一気に外に抜けること自体は問題ないってことか 確かにDoに変えるのも手だな 適当に使い分けることにするわサンキュー
902 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:18:23.62 ID:1Z+MjfLn.net] 間違えたわ>>865 だ
903 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:21:15.52 ID:ao9b7VBW.net] >>861 囲碁なら上、オセロなら下
904 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:25:42.22 ID:eqFwPDXL.net] すごく個人的には、Do Untilで書いた方が「抜ける!」って読みやすい
905 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:26:39.51 ID:eqFwPDXL.net] Do whileよりって話ね そう書けば抜ける複数条件をDoの後ろに書いて違和感が無い
906 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:28:18.94 ID:XkUbux+a.net] これ… >>873 に『その心は?』って聞いてあげた方がいいの?
907 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 20:33:29 ID:ao9b7VBW.net] >>876 おじいちゃん出しっぱなしで片付けないんだもん
908 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 20:34:24 ID:vZk8Xm54.net] Gotoはもちろんのこと、余程のことがない限りはExit For(Do)使うよりはExit Function使った方がいい
909 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 21:01:16 ID:ob2ctoKl.net] >>878 そんなこたあね―な。
910 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:48:55.15 ID:Swy0cO/s.net] Do While 何で Loop While 2つあるの? Wend
911 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 23:00:26.73 ID:6Vkb8BK5.net] vbaだから
912 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 23:21:26 ID:1Z+MjfLn.net] >>880 while〜wendは過去の名残 今はdo whileを使うのが正しい
913 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 23:40:35.48 ID:Cax/ofky.net] 一応、while wendは最後までループ抜けさせないぞって読ませ方ができる 知ってる人が少なくなってるからむしろ逆効果のお節介となってきているが
914 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:17:23.49 ID:NwluTwH5.net] 行番号とか代入のLetとかも使ってるやつはいない 過去の名残があちこちにあるのがVBA
915 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 08:29:01.10 ID:VZXzW3Q1.net] do while〜loopって構文が気に食わんわ do [処理] while [脱出判定] loop もしくは while [脱出判定] do [処理] loop のほうが思考に沿う ってかdo必要?
916 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 09:57:59.84 ID:UXZn7YtP.net] VBA必要?
917 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 09:58:43.65 ID:wZIpnWDZ.net] Excelが必要としてるんだ
918 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 16:55:48.19 ID:8jNiNgQB.net] だってVBAだから
919 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 18:51:31.92 ID:c4aN/6Uq.net] エクセルマクロとして代替えがないから必要だな
920 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 21:17:20.11 ID:RlTsj/W2.net] 職場の人が書くマクロ、わかりやすいんだけど無駄改行多くてスクロールしないと全体像掴めないでつらい
921 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 21:26:36.78 ID:8GB492Jb.net] >>885 While [脱出判定] [処理] Wend
922 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 23:55:48.34 ID:+/P4LWyU.net] >>890 実は強制終了対策で改行してるとか?
923 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:04:01 ID:6cdt+s4Y.net] >>885 構文解析でトークンの先読みが少なくて済むための配慮じゃないかな、知らんけど
924 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:41:32.09 ID:YZMPfrl8.net] >>885 英語として Do while a is b. If a is bigger than b, then break.. というのと While if a is bigger than a, do something. どちらが自然かという問題だったようだ。どっちも変だけど
925 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 02:09:29 ID:qvmNBmpu.net] >>890 職場での問題なら職場内で解決しなされ
926 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 04:41:54.35 ID:heakYJWv.net] ちょ、VBAのCollectionのAddメソッドってvalue/keyの順番だったのかよぉ C#もJavaもPythonもkey/valueの順だから勘違いしてたわ! なんかおかしいとおもった
927 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 08:01:08.69 ID:ygihVcRE.net] >>896 Add時にKeyを省略できるからね 省略するとKeyがどうなるのかは知らんけど
928 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 09:40:22.78 ID:heakYJWv.net] >>897 重複排除できてねぇぢゃねぇかクソ言語がぁぁぁ!って思ってましたごめんなさい
929 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 10:42:49.25 ID:m9vPjHEn.net] >>898 重複排除したいならdictionaryの方がいいんじゃないか
930 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:12:13.86 ID:RmKRgXjX.net] >>890 それは1プロシージャの行数が多いということかな? それはダメダメだ。 そういうことになることはあるけど、本人が書ける奴なら自分でも分かってるかもね。 時間があれば直すんだけどってのは時々ある。
931 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:16:26.19 ID:RmKRgXjX.net] >>896 Dictionaryと逆だから注意。
932 名前:デフォルトの名無しさん mailto:age [2020/06/20(土) 12:24:38.59 ID:CytyTodc.net] excelからwordのoleなのですが、印刷プレビュー画面が表示されている あいだは処理を停止させておきたのですが、どうすればできますか? また、excelのほうのPrintPreviewメソッドではそれが実現できるのですが、 その違いはなんなのでしょうか。 Dim WORD As Object Set WORD = CreateObject("Word.application") WORD.Documents.Open(filePath) WORD.PrintPreview = True Do Until WORD.PrintPreview = False Loop
933 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:44:36 ID:ygihVcRE.net] >>898 重複排除したきゃKey指定すればいいだけだろ てか、そういう使い方しかしたことないわ
934 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:57:07 ID:m9vPjHEn.net] keyの位置間違えててできなかったって話だろ…
935 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 15:27:33.55 ID:ygihVcRE.net] ああすまん、よく読んだらそうだな
936 名前:デフォルトの名無しさん [2020/06/20(土) 15:53:54.10 ID:wuXUOHn9.net] PCに疎い人達の集まる職場 週に1回の頻度で1200個の数値を4時間かけて手打ちしてたのを3秒で終わらせるマクロ組んで改善提案→何かわからんけど組んだんだろ で300円 他のシートやブックに行き来しやすいように 図形に文字入れてハイパーリンクをセットしたのを2つ作った →これはいいぞ 1000円 もう嫌だ
937 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 15:58:25.34 ID:MH9+mSJC.net] 300円とか1000円って何?
938 名前:デフォルトの名無しさん [2020/06/20(土) 16:02:10 ID:wuXUOHn9.net] >>907 改善提案出すとお金貰える仕組みの会社だから トヨタグルーやトヨタ系とかは結構そうじゃないかな
939 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 16:08:51.15 ID:MH9+mSJC.net] >>908 単にプレゼンというか説明下手なだけじゃないの?
940 名前:デフォルトの名無しさん [2020/06/20(土) 16:23:05.64 ID:wuXUOHn9.net] >>909 もうマクロに関してそこは諦めたわ if関数使ったりそういう改善のが1000円や1500円で貰えるからそっちでいってる 同僚から組んで欲しいってのも全部断ってる 58歳のパソコンに疎すぎる人に説明する必要性もないかな
941 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:02:57.89 ID:wVoXfuuE.net] まぁ、「実際の能率の向上」より「誰にでも分かりやすく使い易い」にウエイトが傾いてるってのはよくあることじゃね。 どんな評価方法か知らんけど。 ・直接的に恩恵を受ける人の数 ⇒あくまで例えばだが、>>906 の「3秒マクロ」で仕事が楽になるのが数人しかいない、とか、 「図形2つ」が割と広い範囲で使える上に、他の職場でも応用が利く、とか。 ・柔軟性 ⇒例えば3秒マクロに何かしら元となるデータがあると仮定して、 そのデータを出力するシステムの仕様に変更があった場合対応できなくなる、とか。 他方、図形2つの方は文字どおり図形2つ作って文字入れてハイパーリンクを加えただけなので、 例えば参照先URLなりが変わったとしても、比較的対応が容易だし、 よほどのことがなければ「使えなくなる」ということが考えられない、とか。 ・上司のその時の気分、あるいは好かれ具合 ⇒それな
942 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:21:32.15 ID:qvmNBmpu.net] >>910 同じような所が10カ所(ファイル)あったら10000円〜15000円もらえるのかな
943 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:21:48.48 ID:XQZF02H8.net] 相談もなしに勝手なマクロを組んだことで減点対象になったのだろう もしかしたら、その作業は近々システムの変更でなくなる予定だったかもしれない 作業以外の目的があったのかもしれない 残業が多いなと思っていたら、 余計なものを作って遊んでいた、減給されないだけましだろう
944 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:41:36.37 ID:qvmNBmpu.net] マクロの変更も有識者間でコードレビューして評価報告書提出して上司に確認のサインもらって 修正連絡票回覧するまでやらないとクレームはいったりするよね 知らない間に勝手にマクロが書き換えられていたとか言われたらやばいだろ
945 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 18:45:21.31 ID:m9vPjHEn.net] >>906 わかりやすく説明するなり評価方法に基づいたアピールするなりすりゃいいじゃん
946 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 05:53:32.39 ID:I80zoHyc.net] お前らの職場って大変そうだな おれんところなんか俺しかVBA触れるやついないから好き放題やってるわ
947 名前:デフォルトの名無しさん [2020/06/21(日) 09:05:05 ID:zpzjHnJy.net] 俺も俺も 初心者に毛が生えた程度の知識だけど周りはPC素人ばかりだからやりたい放題だ
948 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 10:08:30.56 ID:7ZJTD4pQ.net] 同じく PCマイスターみたいに見られてるけど、薄々勘付かれているかもしれない
949 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 13:43:26.96 ID:/utMrS/w.net] エクセルはそこそこ使いこなせるがマクロは全く知らないってな人に 簡易マクロ作っただけで「ハァ?お前天才かよ?」みたいな反応されるよな。 褒められる優越感と小学生でも書けるコードで褒められる自分へ嫌悪感で 葛藤しまくるよな
950 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 14:00:37.96 ID:ANltB6r3.net] いや、別に。
951 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 15:15:50.34 ID:0WnnnX3x.net] 両方とも別に
952 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 17:39:52.32 ID:1ON8fipo.net] >>919 他の奴らってそもそも業務が違うだろ
953 名前:デフォルトの名無しさん [2020/06/21(日) 17:47:04.76 ID:k1xdFuXh.net] >>922 出来ない正社員と出来るバイトの俺
954 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 17:50:26.78 ID:HGSDkuyA.net] >>919 読んでるこっちが恥ずかしい
955 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 18:05:28.37 ID:xIpMoW7x.net] スレチだけどPHPは ハイパーテキスト・プリプロセッサだってのに 初歩でも神呼ばわりだぜ 【PHP】下らねぇ質問はここに書き込みやがれ 11 itest.5ch.net/mevius/test/read.cgi/tech/1591334726/96-107 96 > hoge.com/**** >に指定した数字入れて、html出力ってできますか? 103 foreach( 107 >>103 神!おっぱ・(自粛)
956 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:11:40.34 ID:f7O4FwhH.net] よくメニューに[+]があり、 これを押すと隠してあったメニューが表示されるといった仕組みがあるのですが、 これをエクセルで実現することはできるでしょうか。
957 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:46:46.68 ID:HGSDkuyA.net] 簡単なのはVisibleプロパティをFalseからTrueにする方法
958 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:54:02.33 ID:apqHGiEy.net] >>926 ユーザーフォームの使用になる e-tech.life.hyogo-u.ac.jp/contents/kyouzai/vb-ref/contents/part1/button_visible/button_visible.html ユーザーフォームのイベントで条件を記述してやるのが良い
959 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:54:53.04 ID:jOeQJVeR.net] >>926 グループ化使うとか
960 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 20:09:41.65 ID:Ca9zW0qx.net] >>923 100人規模で周りの人達ができない正社員なわけない バイト数人が使う程度のマクロだろ
961 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 20:17:13.26 ID:dwey+O0N.net] 俺も大したことできないけど零細で偉そうにしてるわ 人生なんて鶏口牛後で十分なんだよ
962 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 21:52:25.43 ID:LN5eNKcO.net] >>930 100人前後の会社で 60人ほど派遣 20人くらいがバイト 10人くらいのパート 正社員は10人ほどのうち確実に7人はエクセルもまともに使えないレベルなのでWord使ってる エクセルを使うのは正社員1人派遣1人バイトの俺 3ヶ月に一度現れる謎の5人組はよく分からない そいつらの給料が月70〜80万円って言ってた 俺のバイト代は月12万円くらいだった この国はおかしいって狂ってるよ
963 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 22:06:48.15 ID:jOeQJVeR.net] 大して優秀なわけでもないやつがちょっと優位な部分があるだけで周りを見下すあるある
964 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 00:04:33.28 ID:CPlWdThO.net] >>932 Excel vba ができる人が少ないのは会社の重要な業務ではないからだろ エクセルはあくまで補助的な使い方しかしてないんじゃねーの
965 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 00:17:00.59 ID:W8AXf1Mi.net] 採用条件に入ってないし学校やパソコン教室でも普通は教えないからできないのが普通 そもそもプログラミングとは何か、どういう場面で使うと便利なのかもわかってない人が大半 うっかり省力化すると事務員の首が飛ぶから、人の心があれば黙ってるものだし
966 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 01:24:44 ID:CPlWdThO.net] 一般的なプログラミングの話をするならExcelは不向き そもそも表計算ソフトの延長でしかない
967 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 02:04:25.88 ID:6UseFZdn.net] >>934 はいその通りです。 【60代パート】リングファイルを棚にしまう 【社長】ハンコついてパートに渡す <
968 名前:br> 【60代パート】Wordから印刷して社長の机に置く 【50代課長】エクセルからWordにコピペしたファイル名とフォルダをパートに指示 【20代大卒美人派遣】エクセルで原価計算して課長に渡す 【30代バイト】梱包出荷伝票をエクセルに打込み [] [ここ壊れてます]
969 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 02:11:43.53 ID:NG7/h+3B.net] >>937 多分そういうこと言ってるわけじゃないと思うぞ
970 名前:デフォルトの名無しさん [2020/06/22(月) 02:30:48 ID:6UseFZdn.net] >>938 え? Excel vba を仕事にするのが会社の重要な業務である業界ってどこですか?
971 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 03:23:12.33 ID:CPlWdThO.net] >>939 お前の会社は何の業界の会社だよw 例えば30代のバイトが梱包している作業のほうが会社にとって利益をもたらすんじゃないのか
972 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 08:49:37 ID:no76adsC.net] ヨコレスだけど30代に梱包やらせる会社とか潰れちまえ 頭も体も回る年代なんだから大いに無駄な事やらせた方がいいと思うね 年食って手数よりも口数のほうが多くなってきたら梱包に回せ
973 名前:デフォルトの名無しさん [2020/06/22(月) 10:07:31.70 ID:lKh0OPb2.net] では無能な30代には何をやらせれば良いのだ?
974 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 10:18:08.71 ID:f1XJDlES.net] バイトに雑用させるのは普通だし年齢関係ないわ
975 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 10:44:00.06 ID:i2ShoQV/.net] VBAスレなのにバイトの仕事がどうのって話になってて、さすがだなっておもいましたwww
976 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 10:45:26.13 ID:DpiCYHaq.net] vbaってプログラミングなの?
977 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 11:16:34 ID:DTKm8QVZ.net] プログラミングじゃなかったらなんなんだ 物書きか?
978 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 11:19:23 ID:DpiCYHaq.net] Excel関数の延長?
979 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 12:06:22.79 ID:f1XJDlES.net] 正式な定義を知りたきゃMS公式でも見ればいいだろ…
980 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 12:10:34.37 ID:DpiCYHaq.net] 申し訳ありませんでした
981 名前:デフォルトの名無しさん [2020/06/22(月) 12:26:25 ID:qDFuj4q3.net] 馬鹿ばっか
982 名前:デフォルトの名無しさん [2020/06/22(月) 18:17:44 ID:es1/qSoW.net] 一年限定で異動してきた職場 噂に聞いてたけど想像を絶するところだった エクセル使う業務がほとんどなのに 関数使える人が数人、まともな人は確かにいる ふとみたおっさんはエクセルの表の合計を電卓で足してキーボードでそれを打ち込 ふとおばちゃん達は 「ここ選択してイコールの後にアルファベットと数値と同じ数値が反映される」 「えー!そうなの?」 と会話してる マクロ以前の問題だった
983 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 18:44:26 ID:CPlWdThO.net] 管理者が無能だと会社がなくなる 管理者が有能なら無能な人材に高い給料は出さない
984 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 19:03:11 ID:f1XJDlES.net] 周りは出来ない語りしてもお前が優秀になれるわけじゃないんだよなぁ
985 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 23:08:43.37 ID:eYhHFxw6.net] VBAでイキるの面白すぎるからやめて
986 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 23:16:11.85 ID:R2BScS4S.net] やめたら面白くないだろ
987 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 00:55:19 ID:TulROOqi.net] 30代の梱包バイトのおばちゃんがVBAできないとか比較する方がおかしい
988 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:00:04 ID:bSgedWTD.net] VBA素人です というか、ちょっとだけPHPを書いたことがある程度のプログラム初心者です セルA1:A5のどこか一箇所に値を入力すれば全てのセルが埋まるようにしたいのです 全てのセルには入力された値に対して決まったパーセンテージをかける たとえばA1に100と入力されたらA2~5にはそれぞれA1*○%(○はA2~5とも異なる) A2に100と入力されたらA1及びA3~5にそれぞれA2*○% 多分条件分岐でいうと if A1が空白でないならA1には入力した値、A2*○%、A3*○%・・・ elseif A2が空白でないなら・・・ みたいな
989 名前:感じになるのかなと思うのですが冗長ですよね… do Whileで書けるのか、他にスマートな書き方があるのか見当がつきません フォームでどのセルに入力するか選んで値を入れてボタンを押すと 全てのセルが埋まる、というのが理想です アドバイスを頂けたらありがたいです よろしくおねがいします [] [ここ壊れてます]
990 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:09:31.87 ID:kv8byCI9.net] for r=1 to 5 if 入力されたセルじゃない場合 cells = 入力された数値かける定数 end if next みたいな感じでは?
991 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:33:11.82 ID:kv8byCI9.net] あー、これじゃダメみたい、すみません。
992 名前:デフォルトの名無しさん [2020/06/23(火) 01:53:19.74 ID:bE26MwSl.net] >>957 ちょっとだけとか書くなよ 全くわかっていない馬鹿だろうが
993 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 02:25:19.01 ID:akfNW9d5.net] 入力セルによらず割合が一定なら100%の値を出してからそれをループで入れろバカか
994 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 03:24:31 ID:TulROOqi.net] >>957 俺なら入力は1か所(A1)だけにして A2〜A5 は 入力させない or "=A1" にでもするかもな
995 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 05:39:38.41 ID:BwhdgQkj.net] >>957 ユーザーフォームにリストボックスとテキストボックスとコマンドボタンを作成し以下 Dim val As Double Private Sub UserForm_Initialize() With ListBox1 .AddItem "A1" .AddItem "A2" End With End Sub Private Sub CommandButton1_Click() If UserForm1.ListBox1.Value="A1" then val = UserForm1.TextBox1.Value A1 Else If UserForm1.ListBox1.Value="A2" then val = UserForm1.TextBox1.Value A2 End If End Sub Sub A1() Range("A1").value=val Range("A2").value=val*0.2 Range("A3").value=val*0.3 Range("A4").value=val*0.4 Range("A5").value=val*0.5 End Sub Sub A2() Range("A1").value=val*0.1 Range("A2").value=val Range("A3").value=val*0.3 Range("A4").value=val*0.4 Range("A5").value=val*0.5 End Sub
996 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 07:50:59.28 ID:xSXJEKQO.net] 意図が伝わるようにユーザーフォームで入力させた方がいいように見えるな visibleのtrue ,false切り替えでうまくやりたい
997 名前:955 mailto:sage [2020/06/23(火) 09:36:33.10 ID:bSgedWTD.net] ご教示下さったみなさまありがとうございます >>963 丁寧にありがとうございます 書いて頂いたのでなんとかなりそうです
998 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 10:14:19.39 ID:eVy5K5L9.net] コピペ
999 名前:961 [2020/06/23(火) 12:34:05.64 ID:5v5sJ6te.net] >>965 スマホで寝ながら打ったから Win7のExcel2010にコピペして確認してみたらミスってた 訂正。大文字だったスマソ then>Then https://i.imgur.com/LQvQjn9.png
1000 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 13:08:23.25 ID:AqGxlhQk.net] VBEが勝手に大文字に直してくれるから、ステートメントは全部小文字で入力してるわ
1001 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 16:26:51.99 ID:lLVW3adv.net] UsedRangeの使えなさに絶望しました あれってなに目的で使えんの? >>968 おれもそれチェック代わりに使ってるんで 変数はほぼ全て大文字スタートだわ 他言語だとやらないけどVBAはエディタがあれなんで
1002 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 17:18:02.36 ID:JWFUfSAs.net] >>969 間違った使い方してるだけじゃないのか
1003 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:21:08.83 ID:coVE1fyX.net] >>969 グラフ自動生成するときとかに使ってる
1004 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:22:23.82 ID:z7FZNG3t.net] usedrangeはファイルの中身を検査する時に使うな 個人情報が入ってないかとか
1005 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:28:15.83 ID:X4/0OZ1g.net] UsedRangeは普通に使うぞ。 寧ろ、一番使うかも。 Excelの固定じゃない範囲を取得する場合、これでOKというようなものが無い。 都度考えることになる。
1006 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 21:35:23 ID:LvHFRgi0.net] 値化とか
1007 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 21:40:15 ID:LvHFRgi0.net] 2次元の動的配列にバックデータを突っ込むときに使う
1008 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 22:16:19.70 ID:zDUcrbEK.net] やっと念願の夢かなって生産現場に異動できそう PCをあまり使わなくなる職場にいけるから マクロ組んだりもほとんどしなくて済むから嬉しすぎる そしてここで教えてくれた人たちへの恩も忘れられんよ
1009 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 22:27:25.32 ID:UicElvK7.net] ひでぇなぁ忘れられちゃうのかぁ残念 汗だくの梱包現場からエアコン効いた部屋に行きたいよ
1010 名前:デフォルトの名無しさん [2020/06/24(水) 10:22:12 ID:XfIA0IcT.net] Sub Sample1() Dim Target As Range Set Target = Range("P:P").FiVBA エラー 91 これで オブジェクト変数または With ブロック変数が設定されていません。t.Offset(0, 1) End Sub 何がだめ?
1011 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 10:26:15 ID:7kmsZdqz.net] FiVBAって命令あるの?
1012 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 13:23:42.08 ID:hNjrAS7L.net] tってなんだよ 宣言してないオブジェクト変数が動くわけないだろ
1013 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 13:58:43 ID:LpqCs0qI.net] なにがだめって聞かれても全てがとしか
1014 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 14:29:06 ID:jVCudKEf.net] ちゃんと内容を確認しないのが駄目
1015 名前:デフォルトの名無しさん [2020/06/24(水) 14:58:07.29 ID:ec8khzg7.net] ごめん間違えた これです Sub Sample1() Dim Target As Range Set Target = Range("P:P").Find(What:="田中") MsgBox Target.Offset(0, 1) End Sub
1016 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 15:31:45.69 ID:7kmsZdqz.net] >>983 https://www.moug.net/tech/exvba/0050116.html ここでも参考にしな まず確実に言えるのは、Nothingのエラー対処ができてない
1017 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 16:03:07.42 ID:A95Qwidx.net] >>983 田中がないんだろどうせ
1018 名前:デフォルトの名無しさん [2020/06/24(水) 16:11:20.98 ID:ec8khzg7.net] Set Target = Range("P:P").Find(What:="田中") この田中を変数というか特定のセルの値にしたい場合どうしたらいい? A1のセル内容を参照したいとする
1019 名前:デフォルトの名無しさん [2020/06/24(水) 16:18:53 ID:ec8khzg7.net] あ、できた ごめん自分は京都大学霊長類研究所のジェームズという7歳のチンパンジーだからVBAよくわからないんだ 皆さんありがとございまうす
1020 名前:デフォルトの名無しさん [2020/06/24(水) 16:21:57 ID:4/s69xMY.net] >>987 解決内容を書けチンパンジー
1021 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 17:53:24 ID:A95Qwidx.net] 自己紹介や自分語りはいらん
1022 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 19:08:49.57 ID:Ra7WLueW.net] >>986 Nothingのエラ―対処が出来て無いってのはみんなが通る道だ。
1023 名前:デフォルトの名無しさん [2020/06/24(水) 19:26:45 ID:aYj5R9EO.net] 自分で使う分にはエラー終了でも正常終了でも変わらんし
1024 名前:デフォルトの名無しさん [2020/06/25(木) 14:24:07.38 ID:UL1INOQI.net] In Range("R:R") というのがあるとして R列全体を選択するのはマストなんだけど ホントはR7からソレ以下全部にしたい In Range("R7:R")ではうまく行かないみたいだしこういう場合ってどうしたらいいんだろう
1025 名前:デフォルトの名無しさん [2020/06/25(木) 14:52:26.82 ID:fOnLoXil.net] usedrangeじゃ駄目なんですか?
1026 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 15:35:07.92 ID:eDJAI9Nl.net] テーブルにすれば?
1027 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 15:38:48.25 ID:emOdy//g.net] cellsでそこから最終行まで指定すればいいじゃない
1028 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 16:00:07 ID:eepaDL1r.net] colmns.countが最終桁番号だしApplication.Intersectで指定2範囲の重複部分だせるし
1029 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 16:24:03.44 ID:oGWS7APt.net] 直感的にやるならRange(Range("R7"),Range("R7").End(xlDown))でいいんじゃない
1030 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 17:54:02 ID:xz2BRr
] [ここ壊れてます]
1031 名前:37.net mailto: >>992 何故最終行までという指定を省こうとするのか? 先に真っ当な手順で実現できてないのに想像で勝手に省いてうまくいかないってどういうつもりなのか? [] [ここ壊れてます]
1032 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 17:54:59 ID:orhJfehX.net] きたこれ VBA歴2ヶ月なのに俺は職場のPCの先生から神様扱い
1033 名前:デフォルトの名無しさん [2020/06/25(Thu) 18:26:51 ID:BKkovaqh.net] 何そのダメ先生
1034 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 18:32:44 ID:0L1EfJ/H.net] おだてられて浮かれてるだけだなw
1035 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 18:45:05 ID:goJhPQKd.net] うー
1036 名前:1001 [Over 1000 Thread .net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 46日 5時間 1分 20秒
1037 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています