- 1 名前:デフォルトの名無しさん [2017/05/16(火) 08:24:45.78 ID:iIGA/64l0.net]
- !extend:checked:vvvvv:1000:512
スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1489557874/ ※関連スレ VBAなんでも質問スレ Part2 echo.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 echo.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 125 echo.2ch.net/test/read.cgi/bsoft/1481369538/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 2 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 10:48:12.64 ID:Gxqu5M/Va.net]
- 前スレでScreenUpdating=Falseしない派いる?ってのがあったけど、コード書いてる時は基本しない。
あれで速くなったっていうのは基本コードが悪いだろ。
- 3 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 11:05:20.21 ID:J7MMoyEGd.net]
- >>2
ScreebUpdating =False : 警告Off ScreebUpdating =True : 警告On
- 4 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 11:06:03.77 ID:J7MMoyEGd.net]
- 連続typo失礼
- 5 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 11:08:01.35 ID:l+zZTb7Y0.net]
- ScreenUpdatingの有無で速度が左右されるのは、セルに値を入れる等して描画に影響する操作をする場合だけだから、
結果を吐き出す際に一度だけしかセルにアクセスしないとかなら要らないね。
- 6 名前:デフォルトの名無しさん [2017/05/16(火) 12:41:08.19 ID:6Q26Nvh7r.net]
- >>5
- 7 名前:\示の更新してんなら要るわ
あとエクセルでセルに値を書き込むことを「吐き出す」と言うのは 素人が玄人の真似して訳もわからずそれっぽい言葉使ってみました感が強すぎる 分かる人が見ればコイツ馬鹿だなってバレバレだからやめた方がいいぞ [] - [ここ壊れてます]
- 8 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 12:57:55.01 ID:fevd2QwgM.net]
- 自称玄人 w
- 9 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 13:01:13.42 ID:J7MMoyEGd.net]
- つまり量によるわけだな。
- 10 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 13:03:31.49 ID:J7MMoyEGd.net]
- つまり量によるわけだな。
ScreenUpdating = False しないと辛くなってきたら、それは ワークシートで管理するデータや式が多くなりすぎたという警告とみなすスタイルが成り立つ。
- 11 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 14:23:33.68 ID:Gxqu5M/Va.net]
- >>6
えっ? 素人玄人関係なく使うでしょ。 そんなの意識したこと無いぞ。 >>9 量なのかなあ。 そりゃいい加減にコード書くことも有るけど、そういう場合で遅く感じたらちゃんとしたコードに変更するだけだろ。 どうしても描画が何回か走ってチラつきを防止するために最後に追加するぐらいだな。
- 12 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 14:27:59.56 ID:J7MMoyEGd.net]
- >>10
ちゃんとしたコードとは? コードの問題ではなくてデータの問題だ、というのが俺の主張
- 13 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 14:53:18.62 ID:Ilchk1CoH.net]
- 不毛
- 14 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 14:57:07.86 ID:l+zZTb7Y0.net]
- >>9
ワークシートから値を取り込んだり、値をワークシートに書き出したりっていう処理は、 Rangeを使えば一括して行うことが出来るので、データ量はそこまで問題にならない。 どちらかというと罫線、色、数式みたいな一括処理しづらいものが問題で、 ScreenUpdating次第で処理に大きく差が出る。 こういったものは保守も面倒なので手作業で代替出来ないかとか考えるといいかもね。
- 15 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 15:11:19.05 ID:tw+4NZDm0.net]
- オートフィルタかけた後のデータの、特定の1列だけを配列に格納したいのですが、何かいい方法はないでしょうか
- 16 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 16:37:32.48 ID:l+zZTb7Y0.net]
- >>14
SpecialCells(xlCellTypeVisible)で可視状態にあるセルだけを取り出せる。
- 17 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 19:14:29.63 ID:iIGA/64l0.net]
- クラスモジュールって使いますか?
大抵のことはfornext、foreachで済んでしまうのですが、vbaでクラスを使ったほうが便利なのでしょうか
- 18 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 19:31:35.09 ID:qhacRso4p.net]
- >>16
必要かどうかってことなら必要ない でも大がかりなの作るなら使って整理したほうがやりやすいんじゃないのかな for文と比較する感覚がいまいち伝わってないから的はずれならごめんなさい 関数とか配列とかと比較するならわからなくもないんだけれど
- 19 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 19:45:30.76 ID:iIGA/64l0.net]
- >>17
私が使うのは事務処理で、表を作ったり、リネームする時にマクロを使う程度なのです クラスはあんまり必要無さそうですね、ありがとうございました
- 20 名前:デフォルトの名無しさん [2017/05/16(火) 19:48:36.06 ID:YL1OfOAE0.net]
- >>10
悪いけど素人しか使わんわそんな恥ずかしい言い方w
- 21 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 19:53:23.03 ID:Y/+V2TLHM.net]
- 言い方はどーだっていいんだよ
伝われば
- 22 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 20:28:49.31 ID:rEbfD8DUa.net]
- >>13
うん、罫線とかはしようが無いね。 でも罫線もマクロ記録のままの酷いコード書く人もいる。 データについては1つ1つのセルに値を入れるなんてことはすべきじゃない。 普通は1つの表で一括入力でしょ。 どうしても速度を出したい時は汚くなるけどシート内データ全部を一括入力にする。 あとは、使える場面が限定されるけどマルチプロセスにするとか。 >>18 クラスを使う場面ってのは慣れてれば感覚的にぴったりくる。 オブジェクト指向的にぴったりくる場合。 でも、他のメンバーが慣れて無いと却って良くない場合もあるね。
- 23 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:04:28.77 ID:ORpNRMoi0.net]
- Dim スコーン As New Class
↑このスコーン自体を引数に使うことは出来ますか? スコーン.Name =
- 24 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:05:07.95 ID:ORpNRMoi0.net]
- スコーン.Name = "スコーン" とか書きたんくないですんけど。
- 25 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:12:00.81 ID:qp8pXuJpx.net]
- >>22
出来るよ。 そうしたい目的はなに?
- 26 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:38:51.33 ID:ORpNRMoi0.net]
- >>24
>>23だと、スコーンの名前はスコーンとか言ってるようなものじゃないですか。 何か変なので、どうにかしたほうがいいなと。
- 27 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:44:47.11 ID:FLRqiZ6lx.net]
- >>25
引数にしたいことと nameに代入することの関係性が分からない。 まぁ宣言をお菓子にしとけばいいんでない。
- 28 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:48:13.03 ID:iIGA/64l0.net]
- PHPならget_class()なんてそのまんまなものがあるんだけどね
vbaには無いっぽいな
- 29 名前:デフォルトの名無しさん [2017/05/16(火) 21:54:30.99 ID:YL1OfOAE0.net]
- >>25
あーあ、やっちゃったね 質問するにもマナーってものがあるんだよ スレを荒ららない為にもこの際覚えておけ 「目的を聞くやつにレスを返してはいけない」
- 30 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:59:56.08 ID:wnIq1TKW0.net]
- そんな法則は聞かないな
- 31 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 22:19:15.46 ID:FLRqiZ6lx.net]
- >>28
いつかそのマナー広まるといいね! 影でこっそり応援してぬわ。
- 32 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 22:30:24.74 ID:H5+sVhHM0.net]
- なんで目的を聞くやつにレスを返してはいけないの?
質問の意図を汲もうとしているかもよ?
- 33 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 22:33:38.25 ID:FLRqiZ6lx.net]
- >>31
その聞き方だと件の>>28は返事出来ないよ。 理由は察してあげて
- 34 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 22:35:06.66 ID:iIGA/64l0.net]
- >>26
クラス名で分岐させたいパターンがある ゲームプログラムだとclass名で敵か味方か判別する、というのは見たことがあるな せめて継承でもできればその辺共通化できるんだけど、そこはvba。めんどくさい しかしエクセルだとどういう状況か思い浮かばない >>30 してなくて草
- 35 名前:デフォルトの名無しさん [2017/05/16(火) 22:44:02.80 ID:YL1OfOAE0.net]
- >>31
質問の意図が分からん奴は質問に答えられない 目的を聞いても質問者の意図を引きだす事はできない 簡単な事だ
- 36 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 22:49:11.64 ID:FLRqiZ6lx.net]
- >>34
なるほど。 素晴らしいね。 がんばれー
- 37 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:01:38.90 ID:qRwApybV0.net]
- >>33
制御の向きが逆だよなあ
- 38 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:23:20.25 ID:sfPoWe8nx.net]
- TypeName関数で自作クラス名って取り出せないんだっけ?
- 39 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:32:2
]
- [ここ壊れてます]
- 40 名前:2.34 ID:9uxtifvV0.net mailto: >>37
それはできるけど、Meがない Meがあればなんとでもできる 標準モジュール Sub foo() Set c = New Class1 'これはできる Debug.Print TypeName(c) End Sub 'クラスモジュール Private Sub Class_Initialize() 'これができない Debug.Print Me.TypeName End Sub [] - [ここ壊れてます]
- 41 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:39:06.93 ID:dws00LGS0.net]
- クラス内部で つかうんなら
これじゃいかんのか? Debug.Print TypeName(Me)
- 42 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:45:43.01 ID:9uxtifvV0.net]
- >>39
すまん、いけた 解決! 標準モジュール Sub foo() Set bar = New Class1 Debug.Print bar.get_name() End Sub 'クラスモジュール Public name Private Sub Class_Initialize() name = TypeName(Me) End Sub Function get_name() Debug.Print Me.name End Function
- 43 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:51:22.92 ID:sfPoWe8nx.net]
- 解決やな
- 44 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 17:27:48.02 ID:mwqvXh9q0.net]
- >>39
>>40 ありがとうございます。 それで名前があるものに名前を付けなくて済みます。
- 45 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 17:53:56.84 ID:GJ9WSlKVH.net]
- >>40
そのコード、 Sub foo() Set bar = New Class1 Debug.Print TypeName(bar) End Sub と同じじゃないの? >>33 > せめて継承でもできればその辺共通化できるんだけど、そこはvba。めんどくさい VBEのオブジェクトコンボボックスとプロシージャコンボボックスを選択すれば、 コードを自動生成してくれるから、全然めんどくさくないよ。
- 46 名前:デフォルトの名無しさん [2017/05/17(水) 20:29:29.04 ID:G7cUCqPy0.net]
- 俺は今重要な判断を下した
お前らは事務のねーちゃんよりスキルが低い 少なくともうちの事務のねーちゃんより低い事は確実だ
- 47 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 21:05:07.82 ID:9uxtifvV0.net]
- >>44
お前、レスもらうのめっちゃうまいなw 思わず反論しそうになった 2chでレスをもらう能力、俺は敬意を表するよ もしよければ、年齢と性別、職業を教えてほしい。どんな人か本気で気になる
- 48 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 06:43:55.44 ID:PgOUGGac0.net]
- 24歳
女 マイクロソフトジャパン勤務
- 49 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 08:36:51.83 ID:7Fv0UmYNx.net]
- >>46
悪くないよ。 なんつーかコウウン
- 50 名前:デフォルトの名無しさん [2017/05/18(木) 14:52:51.70 ID:5nCvEgDF0.net]
- Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address Case "$A$1" If Not IsNumeric(Target.Value) Or Target.Value = "" Then Exit Sub Range("B1:B9").Copy Range("B2") Range("B1").Value = Range("A1").Value Target.Select End Select End Sub このコードの意味教えてくださいー
- 51 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 15:34:33.70 ID:ZtOQ2Qac0.net]
- まずは実行してみたらどうだ
- 52 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 17:11:10.34 ID:d+oDyp660.net]
- Private Sub Worksheet_Change(ByVal Target As Range)
ここに、Subの処理を定義する End Sub Select Case Target.Address ここに、Caseの処理を定義する End Select Select Case Target.Address // Target.Address が、"$A$1"なら Case "$A$1" // Target.Value が数値ではない、または、空文字列なら、Subを抜ける If Not IsNumeric(Target.Value) Or Target.Value = "" Then Exit Sub // copy Range("B1:B9").Copy Range("B2") // 代入 Range("B1").Value = Range("A1").Value // 選択? Target.Select End Select
- 53 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 19:06:48.56 ID:hKe3x/Mw0.net]
- >>48
ugokanai kedo A1セルの中身が数字に変わった場合、 B1:B9をB2:B10にコピーペースト B1をA1の内容にする
- 54 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 19:21:07.71 ID:f5T5khCgr.net]
- >>51
A1を選択 が抜けてる
- 55 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 22:27:14.87 ID:EwzTzSyyM.net]
- マウスポインターの移動量かマウスのスクロール量を検知って出来ますか?
- 56 名前:デフォルトの名無しさん mailto:sage [2017/05/1
]
- [ここ壊れてます]
- 57 名前:8(木) 23:31:41.56 ID:fbyfCIXE0.net mailto: form上の話ならMouseMoveイベント使えばなんとかなるんじゃね?
form以外でならwin32api(GetCursorPosとか)を駆使すれば [] - [ここ壊れてます]
- 58 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 12:10:12.11 ID:Hh88K1uA0.net]
- 最新版のExcelで、ファイルを開いた直後にだけコンパイルエラーが出るようになったから絶対更新しないほうがいいぞ
エラーが出るのは Function ProcName(cel As Range) As Double とか、パラメータにAs Rangeを持つところみたいで 一応As Objectに変えてしまえば通るけど、治すの大変だ・・・
- 59 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 12:26:18.38 ID:Hh88K1uA0.net]
- 関連してそうな情報を発見
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2017/05/17/ とうとう本気で.xls形式を殺しに来たか
- 60 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 12:27:06.53 ID:OupscBB+0.net]
- >>55
なんていうか、まあ頑張れ
- 61 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 12:49:41.54 ID:P+QgsC3b0.net]
- 俺のInsider slow バージョン 1704(ビルド8067.2115)では
>>55の情報だけを たよりにやって みたけど 問題ない (xls,xlsm 両方) とだけ言っておく
- 62 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 13:13:31.21 ID:Hh88K1uA0.net]
- >>58
すまない。新規ブックでは検証していなかった。 問題無いことを確認 14.0.718.5000 16.0.7927.1024 コンパイルエラーを確認 15.0.4927.1002 16.0.8067.2115 なので、>>58の環境でも発生すると思う。 新規ブックで、 Module1に Function ProcName(cel As Range) As Double ProcName = cel.Value End Function Sub btn_Click() MsgBox "click" End Sub を書いて、ブック上のシェイプのマクロにbtn_Click()を割り当てるとファイルを開いた瞬間にだけコンパイルエラーが起こるよ 上記URLによれば、モジュール範囲の定義なら起こるらしいので Private 変数 As Workbook Sub btn_Click() MsgBox "click" End Sub でもダメぽ 解決策はAs Objectとするか、モジュールを切り分けるしかない。
- 63 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 13:33:37.37 ID:P+QgsC3b0.net]
- >>59
なるほどね 少なくとも 俺の環境下では >>59の条件で xls のみだな その現象が発生するのは xlsmは 問題ない つかもう excel2003までのexcel形式(xls)使うのやめたら? と思うのだけど?
- 64 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 13:52:53.66 ID:Hh88K1uA0.net]
- >>60
全くもって仰る通り。 以前から.xlsmへの切り替えを勧めているが、なかなか全てを切り替えられなくてね。 各個人に持たせているファイルを差し替えろって言ってもメール無視されるし。 あと単純に.xlsmに変えてしまうと ・他のシステムが対応していないせいでxlsしか使えない。 ・表の最大値が大きくなったお陰で、既存のマクロだと末端の列列まで処理するループが混ざっていて永久に処理が終わらない。 (そのくらいマクロ直せよ・・) ・ブックのリンクが貼ってあるせいで過去のエクセルファイル全てのリンクを修復しないといけない。 (作ったやつ誰だよ・・) ・データサイズの大きい「共有ブック」をxlsmに変えるととてつもなく重くなる。 (データとマクロ分離しろよ・・) とか様々な理由があって切り替えが終わってない。 ツッコミどころ満載やで。
- 65 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 13:56:26.64 ID:P+QgsC3b0.net]
- いい 切り替えの機会じゃん
xlsは もうまともに 使えません(キリッ ・・・・と言えたらいいねw
- 66 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 22:44:50.72 ID:ELP3hVnQ0.net]
- 変数宣言を一番上に書くと、
確認する時、スクロールで戻るのが面倒なんですが、 Excelなのに、上の方の画面を固定出来るという発想は無かったのでしょうか。 Excelなのに。
- 67 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:07:15.86 ID:HsQ+il8a0.net]
- そんなことより行番号表示かと。
- 68 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:10:43.79 ID:1s7BLiGf0.net]
- グローバルで別のモジュールに書いてウィンドウを並べるとか
- 69 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:27:00.50 ID:vYjNISl1x.net]
- Excel VBAしかやったことない人が何だか勘違いしてるようだがそもそもVBEはExcelの機能ではないぞ
- 70 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:34:30.47 ID:vnM/uOfn0.net]
- >>63
> 変数宣言を一番上に書くと、 必要な所に書けばいいやん って言うかスクロールが面倒なほどでかい関数とか書くなよ
- 71 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:42:30.09 ID:FnbaGtrQ0.net]
- >>63
確認する時って 変数の何を確認するの?
- 72 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:49:13.07 ID:ELP3hVnQ0.net]
- >>68
poって何の変数だっけ? みたいな。
- 73 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:52:43.48 ID:FnbaGtrQ0.net]
- >>69
何の変数ってのがよく分からんのだけど、 Dim Example As Long: Example = 1 みたいに宣言と代入を上の方でしてるって話? ローカルウインドウとかその他機能でなんとかならんの?
- 74 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:54:11.19 ID:1s7BLiGf0.net]
- 中身のわからない変数名を付けるからそんなアホな事をせにゃならんようになるんだ
似たような変数名が多すぎてややこしいならfunctionに分ける等、予め余計な手間が発生しないようにするんだ
- 75 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:59:18.39 ID:dZkjjWfrx.net]
- >>63
書かなきゃよい
- 76 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 00:21:30.52 ID:foz/Iffu0.net]
- ネタだよな
コードウィンドウ分割するだけじゃねえのって思っちゃったけど i.imgur.com/jnQLIFk.png
- 77 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 08:57:37.77 ID:k9L+DwNA0.net]
- >>63は赤の他人が書いたクソ長いコードを解析させられている気の毒な人だ
と好意的に解釈しておこう
- 78 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 09:20:18.91 ID:5sPtJFYn0.net]
- hoge param1:=xxx, param2:=yyy みたいな書き方に慣れないんですが
dummy = hoge(xxx, yyy) とかではダメな理由ってあるんでしょうか?
- 79 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 09:33:47.65 ID:TX7Bd0Me0.net]
- >>75
別にどっちでもいい。好み ファイルの保存なんかもこの方が見やすいと思う 例えば保存時で比べる ファイル形式を定数で打つと分かり辛い Thisworkbook.SaveAs("C:\foo",43) こう書けばフォーマットなんだな、ということが見てすぐにわかると思う Thisworkbook.SaveAs Filename:="C:\foo",FileFormat:="43" 本当はこの方が良いけどね Thisworkbook.SaveAs Filename:="C:\foo",FileFormat:="xlExcel9795" 他にも引数が大量にあるときやパラメータが複雑な時にわかりやすい。以下は見辛い dummy = hoge(xxx, , , yyy, , ,zzz) 逆にsum()を sum arg1:=xxx, arg2:=yyy なんてすると読みづらいだけになる と言ってる俺も保存の時ぐらいにしか使わないけどね
- 80 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 09:53:58.83 ID:5sPtJFYn0.net]
- ありがとうございます
事務仕事でExcelVBAをいじる必要があったんだけど 大昔の非構造化BASICやFORTRAN、Cなどの印象しかないので最近の言語は抽象的すぎて分かりにくい
- 81 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:13:55.47 ID:I6OViHCS0.net]
- >>75
その名前じゃあまりメリットないけど引数の名前をちゃんとつけてたら分かりやすい あと引数がたくさんある場合に後ろの方の引数を指定したい時とか Workbook.Open FileName:="test.xlsx", AddToMru:=True
- 82 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:29:20.36 ID:0mLljkpvd.net]
- >>77
大昔のCって関数と最初の { の間に変数宣言するようなやつ?
- 83 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:44:25.75 ID:5sPtJFYn0.net]
- >>79
そんなやつ、カーニハンとリッチーの第1版、白いカバーの表紙のやつ
- 84 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:50:27.63 ID:5sPtJFYn0.net]
- 変数を宣言しただけでは領域が確保されず
値を代入しただけでプログラムが暴走するんだけど原因に思い当たらず3日間悩んだ挙句に挫折した
- 85 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:54:07.27 ID:TX7Bd0Me0.net]
- >>81
上で見たけど、vbaは内部的にかなり変な挙動をしている newの時点ではメモリ領域は確保されず、初めてプロパティやメソッドにアクセスした段階でメモリ領域が確保される また、 set foo = thisworkbook set bar = thisworkbook は、foo == barに「ならない」 fooとbarは常に違う参照が生成されるので、別扱いとなる そのコードを教えてくれれば問題解決できると思う というか後学のためにも見てみたい
- 86 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:54:21.25 ID:TX7Bd0Me0.net]
- newじゃないや、setか
- 87 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 11:19:48.33 ID:nyexelOB0.net]
- 日本語も変数として使えるからわかりやすい名前つければいい
- 88 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 11:57:41.20 ID:w41RCx9Yp.net]
- 日本語は好き嫌い分かれるからなあ
俺は日本語が見易いけどさ
- 89 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 11:59:34.10 ID:TX7Bd0Me0.net]
- google翻訳しながら英語変数使うぐらいなら、日本語使ったほうが絶対に良い
- 90 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 13:11:22.41 ID:DWQm6waj0.net]
- Visual Basic Edtor って、単体じゃ入手できないよな?
しかもExcelのバージョン違えば使い物にならんヶ所出てくるし ThisWorkbook だって、どの?に成るだろうし Microsoft Script Editer じゃあるまいし、どう考えてもExcelの付属品っつー立ち位置だろ Excelの「おまけ」機能に決定 Word とか Outlook とかバリエーションは在るにしても
- 91 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 13:21:20.46 ID:9VI8goCbM.net]
- 根本的に勘違いしててワロタw
- 92 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 15:37:38.60 ID:VKPh1Lah0.net]
- >>73
>>63じゃないけど、これ知らんかったわ
- 93 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 18:04:39.38 ID:yKxdvQKVr.net]
- 無知って凄いね
感心した
- 94 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 18:24:24.01 ID:KHEwJCpd0.net]
- >>63
C#とかVB.netでアドイン作ればOK。 VBAでもセキュリティに問題出るけど作ることは可能。
- 95 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 18:58:10.02 ID:E4Y
]
- [ここ壊れてます]
- 96 名前:2PkRr0.net mailto: Excel VBA で Access と連携する業務システムって、ここの人達的にざっくりどう思いますか。社内システムの改良にアサインされてしまった。 []
- [ここ壊れてます]
- 97 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 19:08:49.87 ID:KHEwJCpd0.net]
- >>92
どう思うって、どういう意味? 別に何とも思わんが。
- 98 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 19:16:24.30 ID:E4Y2PkRr0.net]
- >>93
前スレ478さんが、VBAでSQLは鬼門って書き込みしてるのを覚えてたもんで、苦労するシステム構成なのかなぁと Excel VBAの質問じゃないからスレチでしたかね、すんません
- 99 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 19:18:51.52 ID:bcgPDffLp.net]
- >>92
良いんじゃね
- 100 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 19:51:15.58 ID:nuBqrdCz0.net]
-
|

|