[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 17:48 / Filesize : 310 KB / Number-of Response : 1035
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part48



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]









[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<310KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef