◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Excel VBA 質問スレ Part63 ->画像>2枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1568630099/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ d3d0-EPXH)
2019/09/16(月) 19:34:59.04ID:emfTAhXr0
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part62
http://2chb.net/r/tech/1561303297/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (ワッチョイ 9f01-hFMq)
2019/09/16(月) 19:37:44.33ID:oeAiWNxe0
ぽこちん
3デフォルトの名無しさん (ワッチョイ 7f01-bRiQ)
2019/09/16(月) 20:59:24.42ID:dQXELjkB0
ちんぽこ
4デフォルトの名無しさん (ワッチョイ fff7-uS//)
2019/09/16(月) 21:35:06.62ID:umLXld9Q0
おつちん
5デフォルトの名無しさん (ワッチョイ 7f79-j7/x)
2019/09/16(月) 21:37:35.26ID:+LXKkUCe0
糞レスで埋めるなら前スレのCSVファイルをQueryTablesで読むサンプル残しとく超参考になった
967 デフォルトの名無しさん (ワッチョイ 1fce-Nl8y) sage ▼ New! 2019/09/13(金) 00:48:49.27 ID:VS8vqVEc0 [1回目]
文字列として読み込めば0は消えない
あとLineInputよりクエリのがずっと速い

サンプル

Sub CSVread()
  With Worksheets("Sheet1") '読み込むシート
  With .QueryTables.Add(Connection:="TEXT;C:\tmp\test.csv", Destination:=.Range("A1")) 'ファイル名とセル位置
    .TextFilePlatform = 932 '文字コード指定
    .TextFileCommaDelimiter = True 'カンマ区切り指定
    .RefreshStyle = xlOverwriteCells 'セルに上書き
    .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat) '各列を文字列に指定
    .Refresh 'シートに読み込んで表示
    .Delete 'クエリを切断
  End With
  End With
End Sub
6デフォルトの名無しさん (ワッチョイ 9f01-hFMq)
2019/09/16(月) 21:50:00.95ID:oeAiWNxe0
ぽこちん
7デフォルトの名無しさん (ワッチョイ 9f8e-J3NS)
2019/09/16(月) 22:04:26.30ID:mBMfeEcT0
全部丸投げの教えてクレクレは死ね
8デフォルトの名無しさん (アークセー Sx73-Pq6P)
2019/09/17(火) 00:12:51.48ID:QL/1GsWjx
LongLong型に定数値として4,294,967,296を与えておきたいのですがLongの範囲を超えているせいか、必ず後ろに#が付いてしまいます
用途としては強引にunsigned Long的に使う為のオフセットなのですが#を付けない方法はありますか?
9デフォルトの名無しさん (ワッチョイ 7f59-yzII)
2019/09/17(火) 00:26:07.74ID:dEY9k2Om0
Verylong型
10デフォルトの名無しさん (ワッチョイ 7f01-bRiQ)
2019/09/17(火) 01:14:04.05ID:chWRxzLY0
ちんぽこ
11デフォルトの名無しさん (ワッチョイ 9f01-NvLc)
2019/09/17(火) 05:14:20.51ID:x3oFyaLA0
>>8
式は書けないんだったっけ…
12デフォルトの名無しさん (ワッチョイ 7fb1-VJtK)
2019/09/17(火) 12:34:56.30ID:WreyM4md0
LongPtr
13デフォルトの名無しさん (ワッチョイ 9f01-KBBU)
2019/09/17(火) 19:25:37.80ID:gAW2iwiH0
前スレの最後でセルに色をつけるコードを作って頂いた者です。職場で試してみましたが思い描いた通りに動いてくれました!これを機に自分で作れるように勉強したいと思います。作って下さった方、本当にありがとうございました…!
14デフォルトの名無しさん (ワッチョイ 9f01-hFMq)
2019/09/17(火) 19:44:50.07ID:1jOFcYgS0
ぽこちん
15デフォルトの名無しさん (アークセー Sx73-CIVR)
2019/09/17(火) 22:00:10.80ID:g2VoYh6px
スレチなのは分かってるけど詳しい人がここにしかいなさそうだから、もし知っていたら教えてほしい

ブックに保存されたクエリをOLAP等で使い回すためにODCファイルとしてエクスポートしたいんだが、「既存の接続」コマンドからクエリのプロパティを開いても「接続のエクスポート」のボタンが無効になっていてうまくエクスポート出来ない
どうしたらうまくエクスポートできるのか知りたい
16デフォルトの名無しさん (ワッチョイ 9f01-hFMq)
2019/09/18(水) 00:53:52.38ID:2k/sPvaQ0
珍ぽこりん
17デフォルトの名無しさん (ワッチョイ 9f64-+dKN)
2019/09/18(水) 02:08:49.51ID:IoDIi0WV0
すみません。
エラーが分からず・・・教えてください。

下記コードで、”型が一致しません”というエラーが出ています。

Dim Ringi1 As Worksheet
ThisWorkbook.Activate
Set Ringi1 = Workbooks(Range("B6")).Worksheet("Sheet1")  ←エラー

ThisworkbookのB6には”テストファイル.xlsx”が入っています。

よろしくお願いします。
18デフォルトの名無しさん (アークセー Sx73-CIVR)
2019/09/18(水) 02:37:53.20ID:6F01cvXOx
>>17
Worksheet(Range("B6"))じゃなくてWorksheets(Range("B6").Value)でしょう

あとRange("B6")はどのシートのB6セルなのかな?
この書き方だとThisWorkbookがActivateされたときにアクティブになってるシートのB6セルが参照されてしまうので、ちゃんとシートを指定して書いたらどうかな
例えばThisWorkbookの一番目のシートのB6セルにファイル名が書かれている前提ならこうなる

Dim Ringi1 As Worksheet
ThisWorkbook.Activate
Set Ringi1 = Application.Workbooks(ThisWorkbook.Worksheets(1).Range("B6").Value).Worksheets("Sheet1")
19デフォルトの名無しさん (ワッチョイ 9f01-hFMq)
2019/09/18(水) 06:35:56.16ID:2k/sPvaQ0
ポコポコてぃんてぃむ
20デフォルトの名無しさん (ドコグロ MM23-hFMq)
2019/09/18(水) 07:18:06.31ID:Sjvl4q9oM
>>8
つけないのは無理だったと思う
今スマホだから試せないけど # が嫌というだけなら ^ ではどうかな?
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/longlong-data-type
21デフォルトの名無しさん (ワッチョイ 9f01-hFMq)
2019/09/18(水) 19:03:21.51ID:2k/sPvaQ0
てぃむてぃむ
22デフォルトの名無しさん (ササクッテロル Sp73-tYbx)
2019/09/18(水) 22:18:32.08ID:TxLlA7PYp
ブックAのシート1〜iまでのA1セルの数字を合計した数字をブックBのA1セルに転記したいのですが、どう書けばいいでしょうか?
23デフォルトの名無しさん (ワッチョイ 1f7c-0qT7)
2019/09/18(水) 22:31:17.98ID:ZRtblFe80
>>22
マルチポストはやめよう
24デフォルトの名無しさん (ワッチョイ 7e0d-eime)
2019/09/19(木) 00:39:56.20ID:oPZRSehu0
VBAのエディタに未だに慣れない・・・visual studioみたいな至れり尽くせりな開発環境があればなぁ
25デフォルトの名無しさん (ワッチョイ 0d7c-ix+T)
2019/09/19(木) 00:47:56.32ID:ARAzw0xg0
>>24
アドオン入れるなり作るなりするとマシになる
2617 (ワッチョイ 2964-9GzD)
2019/09/19(木) 01:19:41.82ID:vxcA2ILs0
>>18
コードをヒントにして、成功しました!
ありがとうございました。

めっちゃお優しいですね!!
27デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/19(木) 05:46:15.64ID:0eG7NBUp0
あいうえお
28デフォルトの名無しさん (ササクッテロル Sp51-YxcC)
2019/09/19(木) 07:26:47.06ID:F8eVIa9Rp
>>23
初めてなので許してください
そして教えてください
29デフォルトの名無しさん (スフッ Sd22-bArz)
2019/09/19(木) 08:12:52.96ID:wmMzcbeOd
>>25
オススメ教えて
30デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/19(木) 08:47:06.93ID:0eG7NBUp0
かきくけこ
31デフォルトの名無しさん (ブーイモ MMf6-zDIv)
2019/09/19(木) 12:51:43.71ID:sRgRNGS8M
なにぬねの
32デフォルトの名無しさん (スフッ Sd22-k+x8)
2019/09/19(木) 14:11:18.92ID:I3ATuKNad
>>22
ブックAのシートでループ
33デフォルトの名無しさん (ワッチョイ 298e-l2za)
2019/09/19(木) 14:27:24.46ID:nfvzk0j90
>>28
死ね、馬鹿
34デフォルトの名無しさん (ササクッテロル Sp51-YxcC)
2019/09/19(木) 14:54:49.69ID:F8eVIa9Rp
>>33
うるせえウンコマンクソして寝ろ
35デフォルトの名無しさん (ワッチョイ 298e-l2za)
2019/09/19(木) 15:37:32.90ID:nfvzk0j90
馬鹿の本性なんてこんなもん
36デフォルトの名無しさん (ワッチョイ 0d7c-2mlo)
2019/09/19(木) 19:53:05.48ID:ARAzw0xg0
>>28
ならマルチポスト放置してないで一つに絞ろう
37デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/19(木) 21:51:25.54ID:0eG7NBUp0
らったったっらたた
38デフォルトの名無しさん (ワッチョイ 2964-9GzD)
2019/09/19(木) 22:19:21.08ID:vxcA2ILs0
すみません。
考えてもわからないので教えてください。

Dim Wb2 As Workbook
Set Wb2 = Workbooks(Range("B7").Value)

エラーメッセージ:インデックスが有効範囲にありません。

B7セルには<テストファイル.xlsx>が入っているとします。

Workbookにワークブック名を入れようとしているのですが、
なぜエラーなのでしょうか・・・?
3938 (ワッチョイ 2964-9GzD)
2019/09/19(木) 22:33:23.12ID:vxcA2ILs0
SetするWorkbooksは、ファイルが開いていないといけなかったんですね。
自己解決しました。
失礼しました。
40デフォルトの名無しさん (オッペケ Sr51-m6mK)
2019/09/19(木) 22:48:56.33ID:NLchELHJr
>>39
dドライブ直下にあるとして
Set Wb2 = Workbooks.open ("d:¥" & Range("B7").Value)
なら自動的にファイルを開いてオブジェクト扱いになる
4138 (ワッチョイ 2964-9GzD)
2019/09/19(木) 23:03:19.82ID:vxcA2ILs0
>>40
そんな書き方もあるんですね!
勉強になります。
(私のコードは無駄が多そう・・・。)
42デフォルトの名無しさん (ワッチョイ 1193-jTfi)
2019/09/20(金) 00:09:35.56ID:SAxa71i50
変に答えると幼稚な馬鹿がつけあがる
43デフォルトの名無しさん (ブーイモ MM4d-Qe2z)
2019/09/20(金) 01:19:15.21ID:L4svxBEcM
と、幼稚な馬鹿が申してます
44デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/20(金) 18:45:01.71ID:nQBbqzQu0
あかさたな
45デフォルトの名無しさん (ワッチョイ 82ca-pIpk)
2019/09/20(金) 20:42:04.97ID:L83O/vz70
VBAからIEを操作してhtmlで書かれたデータを取りに行くコードを書いています

ターゲットのサイトでは、一度に20件のデータしか表示されず
一番下までスクロールするたびに20件ずつ追加されます(データは全200件です)

htmlでは、20件のデータの下に「::after」と書かれており、スクロールが一番下に近づくと
新たな20件がロードされ、その下に「::after」が現れます

質問ですが、一度に200件全てのデータを取るためにはIEでスクロールさせる必要があるように思いますが
その場合、SendKeysを使って、SendKeys "{PGDN}" のようにするしかないのでしょうか?

それとも他に、何か良い方法があるようでしたらアドバイスをいただきたくお願い申し上げます
46デフォルトの名無しさん (JP 0H4a-tMNN)
2019/09/20(金) 21:06:34.17ID:oAI6ZRfWH
querytables.addでCSVファイルをエクセルシートに貼り付けたとき、グループ化で非表示にされている部分に正しく貼り付けられるのはいいのですが、グループ化非表示から表示状態にされてしまいます。
非表示部分に貼り付けつつ、非表示のままにするにはどうしたらいいでしょうか?
貼り付け先シートの元々の表示・非表示状態はそのままにしたいんですがよい方法はありますか?
47デフォルトの名無しさん (アウアウウー Sa85-bsiH)
2019/09/21(土) 05:45:28.43ID:8VV0xXKBa
sendkeysはなるべく使わない
48デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/21(土) 08:35:41.78ID:/Gx75Cw00
abcdefg
49デフォルトの名無しさん (ワッチョイ 4d91-/N/j)
2019/09/21(土) 12:12:30.41ID:8qwe/SJE0
>>45
ページの作りによる。
例えばあなたは20件ずつなどと言っているけど、URLの入力など次第で200件全部表示できるかもしれない。
スクロールが必要かも分からないがSendkeysなんて使うのは子供と考えて良い。
50デフォルトの名無しさん (ワッチョイ 82ca-4A/C)
2019/09/21(土) 13:08:32.19ID:XrHXKxEM0
>>47>>49
レスありがとうございます。
私もSendKeysは使いたくなかったので質問した次第です

> ページの作りによる。
ターゲットサイトは、dアニメのランキングのページです。
https://anime.dmkt-sp.jp/animestore/CR/CR00000013_001

ここからランキングのデータを抜き出して来ようと思ってますが、20件ずつしか表示されず…
何かいい方法はないでしょうかねぇ
51デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/21(土) 13:10:12.33ID:/Gx75Cw00
あーざーやーかーにー
いーろづいたっ
52デフォルトの名無しさん (ワッチョイ a9ad-7RCD)
2019/09/21(土) 15:10:34.25ID:AFF+Wq/L0
うちの会社に、元SEでVBAバリバリ書ける、という人が
入ってきたんですが、色々Excel作業の自動化をお願いするために
現行の作業手順をお見せしたら、「ここの、Excel関数を使っているところは
意味が分からないので、関数の使い方から説明してください。」といわれ、
VLOOKUPとは、からお話ししないといけないそうで、もう自分でVBA
書こうかと思ってしまいます。
はじめはこういうもので、すぐ慣れてくれるんでしょうか?
「SEの資格」を持っている、という触れ込みの、部長の知り合いなので扱いは
要注意なのです。はぁ。
53デフォルトの名無しさん (ワッチョイ 0279-McVF)
2019/09/21(土) 15:31:27.17ID:idUljkgM0
経歴詐称があった場合、解雇はできるのか

結論から言うと、解雇できる場合もあればできない場合もあります。
一口に経歴詐称といっても、軽微なものから重大なものまであり、全てのケースで解雇が可能とすることは合理的ではないからです。
解雇ができるケースは、「重要な経歴」を詐称されたときに限られます(重要な経歴とは何を指すのかは下記で説明します)。

職歴に関する経歴詐称

職歴を詐称していた場合は、採用後の仕事の内容、賃金に直接影響を及ぼすもののため、重要な経歴を詐称していると判断される可能性が高いと言えます。
判例では、グラバス事件(東京地判平成16年12月17日 労判889号52頁)があり、プログラミング能力がなかったにも関わらず、あたかもスキルがあるかのように経歴書に記載。
採用面接でもそのように説明して、ソフトウェア会社に採用されたが、経歴詐称を理由とする懲戒解雇が認められたという事例があります。
54デフォルトの名無しさん (ワッチョイ 29d0-v5oN)
2019/09/21(土) 15:53:55.16ID:xM/61paW0
そもそも触れ込みから嘘だったのかまで疑ったらキリがないから、そこんとこは何とも言えないけど、
元SEが本当なら、少なくともVB(VBAじゃなく)は書けるけど、普通のオフィスワークはあんましてこなかった、とかじゃないの?
そんな感じのSEさんと一緒に仕事したことはある。ちょっと教えてあげたらあっという間に習得したけど。
でもやっぱ利用頻度の低い関数(LOOKUP系)や若干特殊な使い方(SUMPRODUCTを複数条件の判定や抽出に使うとか)には苦慮してた。
55デフォルトの名無しさん (ワッチョイ 0d7c-2mlo)
2019/09/21(土) 16:00:48.34ID:y4wrqwmo0
>>52
バリバリ書けるSEならExcelの基本的な関数ぐらい自分で調べられるものだがそれすらできないのはバリバリ具合すら怪しい予感
56デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 17:02:09.02ID:GoVsp8loa
>>52
バリバリのエンジニアがVBA使う仕事に応募なんてしません
57デフォルトの名無しさん (ワッチョイ 0201-hoFX)
2019/09/21(土) 17:12:54.75ID:3YukOVDp0
>>52
そもそも謎の「SEの資格」とか言ってるお前も似たようなもんだろ…
58デフォルトの名無しさん (ワッチョイ 0201-jgJV)
2019/09/21(土) 17:23:57.08ID:DHk9cejb0
知らないことを知らないと言えるやつはまだ大丈夫だわ
ホントにやばいやつってのはな・・・
59デフォルトの名無しさん (ワッチョイ 8242-iM7L)
2019/09/21(土) 21:02:04.95ID:p4RfJbo+0
もちろんできますよ大丈夫です(やべっ何もわからん どうしよー)
6049 (スフッ Sd22-plfC)
2019/09/21(土) 21:13:01.51ID:656pPxFFd
>>50
スクロールしないで取得したかったんだが解析面倒で断念。
スクロールはSendkeysではなく、HTMLWindow2のscrollToなどを使う。

https://pastebin.com/V7S3XW71
61デフォルトの名無しさん (ワッチョイ 7e0d-eime)
2019/09/21(土) 21:14:21.75ID:+OkoEiEq0
VBAって必要になったら都度気合いで調べながら書いて、しばらく書かない間に忘れてまた必要になったらまた調べて覚え直すってことを繰り返してる気がする
62デフォルトの名無しさん (スフッ Sd22-/N/j)
2019/09/21(土) 21:59:24.26ID:656pPxFFd
>>52
VBA使いでExcel関数を使わない人もいるからな。
俺はどっちも使うけど両方同時に使うのは避けることが多い。
63デフォルトの名無しさん (スフッ Sd22-/N/j)
2019/09/21(土) 22:06:05.25ID:656pPxFFd
>>59
簡単にそんなこと言うと、その時点でバレるぞ。
普通は分かってたら詳細や、かつてその技術でハマッた体験談を語るもんだ。
64デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/21(土) 23:00:31.94ID:/Gx75Cw00
あいうえお
65デフォルトの名無しさん (ワッチョイ 82ca-pIpk)
2019/09/21(土) 23:30:08.68ID:XrHXKxEM0
>>60
> スクロールしないで取得したかったんだが解析面倒で断念。
> https://pastebin.com/V7S3XW71

おお、わざわざここまで!
大変お手数をおかけすることとなってしまい、申し訳ないやら嬉しいやら…ありがとうございます!!

> スクロールはSendkeysではなく、HTMLWindow2のscrollToなどを使う。
最近、ネットのブログなどを参考に
見よう見まねでExcelのVBAとIE操作を両方一緒に始めたのですが…

ループで200項目取り出すまでの条件の書き方、スクロールの書き方、すごく参考になります!
ランキングデータの取り出し方…、ここまでシンプルに書けるものなんですね!!

恥ずかしながら、まだオブジェクトとかコレクションとかアイテムとかがごっちゃになってて頭で整理できておらず
文法エラー(?)の嵐に悩まされつつコードを書いてる段階で…"ChildNodes"とかもまだ使ったことないです…

本当に感謝です。
66デフォルトの名無しさん (ワッチョイ 298e-l2za)
2019/09/21(土) 23:32:05.21ID:JIxctC3M0
また幼稚なゆとり世代馬鹿か
67デフォルトの名無しさん (アウアウウー Sa85-bsiH)
2019/09/22(日) 05:33:04.20ID:8C/KzzE0a
他人の批判しても成果はあがらない
68デフォルトの名無しさん (オッペケ Sr51-EjsL)
2019/09/22(日) 17:46:57.02ID:aib8uIrzr
凄く基本的な質問だと思うのですが、
Range("A1".Offset(0,12)).Activate
はだめで、
Range("A1").Offset(0,12).Activate
が正しいのはなんでなのでしょうか?
69デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/22(日) 17:53:07.62ID:7ea+dVk1a
>>68
VBAでそのへんを正しく理解するのはまず不可能だしその必要もないから、定型句だと思って暗記しなさい
ちゃんと理解したかったらJavaのようなきちんとしたオブジェクト指向言語を学ぶことをお勧めする
70デフォルトの名無しさん (ワッチョイ 0d7c-2mlo)
2019/09/22(日) 18:49:17.99ID:hRt1URHX0
>>68
引数が間違ってるから
71デフォルトの名無しさん (アークセー Sx51-uljG)
2019/09/22(日) 19:59:23.95ID:hXw+7SRax
>>68
一番目の式の方は、"A1".Offset(0, 12)という表現がVBAの構文上無効で何も値を返さない式になっている
なので、参照先のセル範囲の名前をバリアント型の引数として要求しているRangeプロパティ式の評価に失敗してしまい、Rangeオブジェクトの取得にも失敗する

文字列や数値のリテラルに.(任意の値)と続けて何らかのオブジェクトにアクセスしようとしても、そもそもそのようなアクセスルールが定義されていないので当然失敗する

反対にRange("A1").Offset(0,12)の方は構文上無効な表現がなく、RangeオブジェクトのメンバのOffsetプロパティ式を正しく用いているので、Offsetプロパティを介してA1セルから12列分座標移動したセルを取得することができる
72デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/23(月) 08:06:29.00ID:1/X0hGb20
なにぬねの
73デフォルトの名無しさん (ドコグロ MMca-2D2T)
2019/09/23(月) 08:16:13.52ID:DBTsObIXM
VBAのリテラルはメンバを持たないから
他言語だと型変換とかあるんだけど
74デフォルトの名無しさん (アークセー Sx51-uljG)
2019/09/23(月) 14:19:12.95ID:6dsrIE/rx
リテラルがそのままstring型オブジェクトとして使える言語だとメンバアクセスできて楽だよね
75デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/23(月) 21:03:41.25ID:1/X0hGb20
たちつてやと
76デフォルトの名無しさん (ワッチョイ 7e0d-eime)
2019/09/24(火) 00:09:46.67ID:Knbo6pxK0
VBEはインテリセンスがクソ
77デフォルトの名無しさん (アークセー Sx51-uljG)
2019/09/24(火) 00:31:17.33ID:dEEBEAN9x
VBEは静的に型判定できるリテラルくらいハイライト表示対応してくれと思う
78デフォルトの名無しさん (ワッチョイ 0d7c-2mlo)
2019/09/24(火) 01:28:17.40ID:GahaPn620
そもそもExcelのおまけ機能だし
79デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/24(火) 12:36:08.37ID:b0EiNdg20
はひふへほ
80デフォルトの名無しさん (アウアウクー MM11-/3Y1)
2019/09/24(火) 12:41:06.36ID:jDE40bGiM
イミディエイトとローカルのウインドウ、上下にドッキングしてしまったのだけど、左右にドッキングするようにはどうすればいいのだろう…
8149 (スッップ Sd22-/N/j)
2019/09/24(火) 12:46:55.24ID:PfH2ve03d
>>80
ドラックすれば良いんじゃない?
位置調整は難しい場合があるけどウィンドウ枠の表示が変わった時に離すとドッキングするから試行錯誤してみれば良い。
82デフォルトの名無しさん (ワッチョイ 7901-hoFX)
2019/09/24(火) 12:57:05.92ID:b0EiNdg20
やいゆえよ
83デフォルトの名無しさん (アウアウウー Sa85-9q2I)
2019/09/24(火) 16:39:46.34ID:Zg6Hxb/Wa
いきしちにひみいりい
84デフォルトの名無しさん (ワッチョイ 0d7c-2mlo)
2019/09/24(火) 19:07:39.27ID:GahaPn620
>>80
移動させる時に判定のシビアなガイド枠みたいなのが出るから置きたい位置にハマるまで頑張る
85デフォルトの名無しさん (ワッチョイ 7e0d-eime)
2019/09/25(水) 00:27:11.58ID:P1Zkaqvu0
VBAの代わりにPython実行環境を取り込む動きがあるらしいね
もしそうなったらVBA界隈の閉塞感も変わるかな
86デフォルトの名無しさん (アウアウウー Sa85-9q2I)
2019/09/25(水) 06:45:55.03ID:pkvL+Jrla
まじ?
エクセルやってる一般社員様がpython始めたらどうなるんだろ
87デフォルトの名無しさん (スフッ Sd22-k+x8)
2019/09/25(水) 08:47:00.45ID:eyE9qOIMd
おっぱいでexcelを自動化する
88デフォルトの名無しさん (アークセー Sx51-m6mK)
2019/09/25(水) 09:19:56.07ID:XMGhQQhjx
Pythonエンジン搭載は色んな理由で見送られたはず
89デフォルトの名無しさん (ワッチョイ 298e-l2za)
2019/09/25(水) 13:51:45.80ID:uf0+2woN0
>>85
未だにこういう馬鹿がいるのか
90デフォルトの名無しさん (JP 0H4a-tMNN)
2019/09/25(水) 17:46:53.71ID:sp9MNwgvH
Python搭載は見送られて代わりにJavaScriptが搭載されるという記事をどこかで見かけましたが。

どなたか>>46わかるかたお願いします。
91デフォルトの名無しさん (ワッチョイ 1111-iM7L)
2019/09/25(水) 19:10:29.50ID:lvyCMB6U0
>>90

>>89
>>未だにこういう馬鹿がいるのか
92デフォルトの名無しさん (ワッチョイ ff0d-hLG/)
2019/09/26(木) 00:31:10.28ID:ZFJdpCv/0
jsだったらgasと同じような感じになるのかな
gasはそもそもスプレッドシート自体の機能が物足りないからイマイチだったんだけど
93デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/26(木) 00:57:48.08ID:89bcSR2Xx
これからJSエンジンが実装されるならTypeScriptベースで型付け強制になるだろうな
94デフォルトの名無しさん (ブーイモ MMcf-mBHK)
2019/09/26(木) 20:07:07.87ID:+ztuXuzlM
.ClearContents と .Value="" では実行後のセルの状態は異なりますか?
95デフォルトの名無しさん (ワッチョイ e77c-3Qav)
2019/09/26(木) 20:28:04.65ID:aKtMMU310
何も載らないよ
Excel自体クラウド上で使うようになってきてるから
マクロみたい使うならJavaScriptなのかもね
96デフォルトの名無しさん (ワッチョイ 0701-Gn+r)
2019/09/27(金) 06:06:27.72ID:sVncIXEy0
きーよしー
こーのよーるー
97デフォルトの名無しさん (ブーイモ MM7f-a2LJ)
2019/09/27(金) 07:55:16.60ID:ccoeIvApM
ハーゲーはー ひーかーり
98デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/27(金) 08:22:15.68ID:RTCGxTj8x
最近はExcel操作のためにVBAを使うのはもうなんか最後の手段って感じがする
PowerQuery(M言語)、PowerPivot(DAX)、JavaScript、Python、PowerShellのどれかで書く方が楽だしメンテも簡単
99デフォルトの名無しさん (スプッッ Sd7f-W5ZC)
2019/09/27(金) 08:43:34.46ID:Lnp0vM2Id
趣味が大がかりになってきて使う材料の管理が煩雑になってきたのでExcelを使って管理しようかなと考えています

工程が1,2,3…とあって、それぞれの工程で使う部材は今のところ重複はなく(今後どうなるかわからない)部材毎に色違いやグレード違い等の派生品があり、
用途としては工程毎に使う部材を別シートにリストアップしたり、規定量を割ったものをピックアップ
部材の管理番号を振るとき
番号は工程や派生に関わらず一列で一意の連番
3列で工程ー工程内の部材を連番ー派生を枝番
工程に関わらず部材毎に連番ー派生品を枝番
マクロを組むときこれらのうちどうするのがよい構造になるでしょうか?
100デフォルトの名無しさん (スフッ Sd7f-mDN4)
2019/09/27(金) 09:04:03.76ID:ikgA/i06d
まず3行にまとめます。
101デフォルトの名無しさん (ワッチョイ bff7-qYyZ)
2019/09/27(金) 12:08:52.99ID:yAOzGr2R0
RDBSを使って合成テーブルを作ります
102デフォルトの名無しさん (ワッチョイ 7f63-aXvP)
2019/09/27(金) 21:25:04.26ID:yKrr7IDu0
>>98
Excelデータ操作するのにか!?
103デフォルトの名無しさん (ワッチョイ 5f59-EMMW)
2019/09/27(金) 21:29:52.64ID:W7KJhMQF0
確かにvlookup関数もCで作ったほうが処理速度速いですし
104デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/28(土) 01:10:35.83ID:vqFcrTxsx
>>102
情報取得とかテーブル加工とかならVBAよりQueryTable)PowerPivotの方がよっぽど速いし型安全にデータ処理できる
数万行以上のデータのリレーション構築とテーブル加工をVBAやWorkshhet関数で実現するとか正気の沙汰じゃないぞ
105デフォルトの名無しさん (アウアウクー MMbb-5sTQ)
2019/09/28(土) 07:02:49.99ID:kCxp0LgMM
なんか齢50近くになると新しい言語?を知らない…power query?power pivot?
…後で調べてみないと…
106デフォルトの名無しさん (ワッチョイ 5fa2-kLFp)
2019/09/28(土) 07:36:24.34ID:HGKDuO1d0
M言語ってどうやって勉強するのさ
英語の本け?
107デフォルトの名無しさん (ワッチョイ 5f59-EMMW)
2019/09/28(土) 08:34:58.34ID:oUtMZ4Zg0
>>106
マイクロソフトが仕様書公開してる
108デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/28(土) 09:58:25.05ID:OFq3+Dp/x
>>106
MSが仕様公開して言語レファレンスまで作ってる
開発&実行環境はExcelのPowerQueryに付いてるので特に余分なものは要らない
109デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/28(土) 14:02:31.05ID:OFq3+Dp/x
>>99
一番目の方法でまず一意のIDを持つ部材のマスタを作った方が良い
その上で、派生関係や使用工程は列を分けて部材マスタの属性値として管理する
そうすれば各使用工程で使う部材を抽出するビューが漏れなく簡単に作れるし、部材データの追加も容易

何故他のやり方が良くないかというと、使用工程や派生関係を管理番号で構造的に表そうとしても、一対一の親子関係から外れる複合的な派生関係の表現が難しいし、複数の工程にまたがって使用する部材が登場した場合の付番がとても困難だから
110デフォルトの名無しさん (ワッチョイ 878e-95m8)
2019/09/28(土) 16:34:58.82ID:w31BDneZ0
↑仕様もわからないのに勝手に決めつける馬鹿
111デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/28(土) 17:19:26.34ID:OFq3+Dp/x
>>110
データ活用のシナリオの説明もある程度書いてくれてるし、3パターンの中からオススメを選んで教えてくれと言われてるんだから根拠を示しながら回答するのはOKだろ
112デフォルトの名無しさん (ワッチョイ 27da-rP+5)
2019/09/29(日) 08:21:00.73ID:9ZqWtSe+0
馬鹿と言いたいだけの馬鹿は相手にしなくていいよ
113デフォルトの名無しさん (ドコグロ MM1f-Gn+r)
2019/09/29(日) 09:41:07.61ID:xMtED3CuM
> 馬鹿と言いたいだけの馬鹿
>>112の悪口はやめなよ
114デフォルトの名無しさん (ワッチョイ 87b0-S/NQ)
2019/09/29(日) 10:19:36.85ID:whL1Vznb0
今、困っていることがあり教えてください。

Excelをオープンした時に、入力規則のリストが設定されているセルに
VBAでリストにある文字列を張り付けるとリストが解除されてしまい困っています。
ただ、Excelを既にオープンしている状態であれば、VBAで文字列を張り付けてもリストは解除されません。
Excelをオープンした際の文字列貼り付けでもリストを解除しない方法、何かないでしょうか。
115デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/29(日) 11:49:35.55ID:mZHqVu1Bx
>>114
試してないから自信はないけど配列に文字列の値を格納してからコピー先セルに一括代入してみたらどうかね
116デフォルトの名無しさん (ワントンキン MM3f-qVNn)
2019/09/29(日) 12:33:57.48ID:QiINVIOGM
計算方法の自動手動を切り替えるとか
doeventsを挟むとか
入力規則を消去して再度設定してみるとか
117デフォルトの名無しさん (ワッチョイ 87b0-S/NQ)
2019/09/29(日) 13:40:07.40ID:whL1Vznb0
>>115
適当な配列を用意して、1要素に代入したい文字列を格納した後、該当セルにコピーしたが駄目でした。
もしかして、一括代入の意味の捉え方誤っていますでしょうか?

>>116
計算方法を手動にしてもdoevent挟んでも駄目でした。
入力規則の再設定は大丈夫でしたが、再設定しか駄目なんですかね。
118デフォルトの名無しさん (ワントンキン MM3f-qVNn)
2019/09/29(日) 16:27:33.03ID:QiINVIOGM
再設定で目的が果たせるならそれでいいんじゃないの
気に入らないかもしれないけど
119デフォルトの名無しさん (ワッチョイ 87b0-S/NQ)
2019/09/29(日) 19:28:31.60ID:whL1Vznb0
>>118
目的は達成できるのですが、どうしてそんなことが
起きているのか気持ち悪さが残ってしまって・・・

ひとまずリスト再設定で回避してみようと思います。
皆さん、ありがとうございました。
120デフォルトの名無しさん (ワッチョイ e77c-y+KO)
2019/09/29(日) 20:52:21.32ID:/1W8DtBL0
1ステップずつ何が起こってるか確認してみた?
121デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/29(日) 21:37:57.26ID:fy6bWXAvx
ウォッチ式で入力規則が無効になった瞬間を捕まえたらどのステップで問題が起きてるか分かるよ
あとApplication.EnableEvents=False の状態で入力規則が無効化する症状が同じように出るかどうかを確かめると良いかも
副作用あるから気を付けた方がいいけどね
122デフォルトの名無しさん (ワッチョイ 5f59-EMMW)
2019/09/29(日) 22:03:13.06ID:sGqY7mop0
デバッグは大事
123デフォルトの名無しさん (ワッチョイ 7fdd-rP+5)
2019/09/29(日) 23:10:51.27ID:JC6PY5Dx0
Worksheetの表示を縮小したときに名前をつけた範囲名が青文字で表示されますが
あれを縮小表示なしに表示するメソッドとかないですかね?
なければ諦めて作ろうと思って、、
124デフォルトの名無しさん (ワッチョイ 871a-ZFr+)
2019/09/30(月) 09:40:08.63ID:GRnK7Y6k0
以前の勤務表の作成についての質問をしたものです。

指定範囲に対して条件を参照して自動で勤務を組むにはどのようなコードが使えますか。
125デフォルトの名無しさん (ワンミングク MM3f-qVNn)
2019/09/30(月) 09:44:23.17ID:5dp60tLcM
その通りにコードを組めばいいです
よかったですね
126デフォルトの名無しさん (ワッチョイ 5f42-upKm)
2019/09/30(月) 14:06:19.14ID:Xo+EVkfu0
そこまでくると質問というより代わりに作ってって感じな気がする
127デフォルトの名無しさん (スフッ Sd7f-C0+4)
2019/09/30(月) 14:27:24.46ID:KUbJhJ6Ud
15万ぐらい払えば作ってくれるよ
128デフォルトの名無しさん (ワッチョイ 5fda-AQ1v)
2019/09/30(月) 18:03:03.23ID:uds7JUMo0
任意のフォルダを開きたいくて、そのファイルのパスが
A1に書いてあるときにどんなコード書いたらできますか?だれか教えてください。お願いします🥺
129デフォルトの名無しさん (ワッチョイ 5fa2-kLFp)
2019/09/30(月) 18:38:27.74ID:MOVpytTQ0
え?w>>124見たいな糞簡単なの作って15万???
うそやろwwwww
130デフォルトの名無しさん (ワッチョイ e77c-y+KO)
2019/09/30(月) 19:38:06.65ID:Db1Fe+X90
>>128
ファイル形式は?
131デフォルトの名無しさん (ワッチョイ 47ff-Iuid)
2019/09/30(月) 20:42:31.76ID:rUBZxyEm0
>>128
次から次へと現れる馬鹿
132デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/30(月) 21:02:52.82ID:KDJog/g4x
>>128
フォルダのフルパスがA1セルに入っているなら、

Shell Range("A1").Value, vbNormalFocus

と書けばとりあえずフォルダを開くことはできる
開いたフォルダの中のファイルを選んで何らかの操作をしたいならファイルそのものを掴む別の工夫が必要
133デフォルトの名無しさん (ワッチョイ 7f63-S/NQ)
2019/09/30(月) 21:15:26.21ID:VO0MeE9M0
.Findで検索するマクロ作ってるけど死にそう
全シート検索で結合セル気にしないでいい方法ないですか
一致したの全部もれなくとるだけなのに
なんでこんな大変なんですか
134デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/09/30(月) 22:05:40.31ID:KDJog/g4x
>>133
何がそんなに大変なの?
135デフォルトの名無しさん (ワッチョイ 7f63-S/NQ)
2019/09/30(月) 22:43:31.23ID:VO0MeE9M0
初回検索と次項目の検索が別メソッド
検索したあとに問答無用で一周して戻ってくる謎仕様
結合セル最初に見つけたら2週目で見つけられなくて死亡
最初から検索しようとしたら最初の次のセルから開始という超絶理不尽仕様
最終セル開始点にしようとしたら最終セルが結合セルで死亡
136デフォルトの名無しさん (ワッチョイ 7f63-S/NQ)
2019/09/30(月) 22:55:52.56ID:VO0MeE9M0
http://dsp74118.blogspot.com/2014/08/excel-vbarangefind.html

ってこれなに
うそだろ
137デフォルトの名無しさん (ワッチョイ c72d-SlO0)
2019/09/30(月) 23:15:22.35ID:fjb3wiBS0
あるシートから10000行程クリップボードにコピーして別シートに行挿入する事を10回程度繰り返すマクロがメモリ不足で停止してしまいます。
エクセルは32bitですがメモリ使用量は2.5GB程度、使用率は80%程度なので余裕はあります。
コピー&挿入だけでこんなにメモリ食うのは想定外だったのですが何か良い対策ありませんか?
クリップボードを使ってる理由は書式もコピーしたいからです。
138デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/10/01(火) 00:40:37.46ID:1yOvNLR5x
>>137
結合セルがない場合で、書式が行列で統一的に構造化されている(=手動でランダムに設定された書式がない)場合の話だけど、セルの値のコピーはクエリテーブルを使い、セル書式はスタイルとして登録しておいて値をコピーしたあとにテーブル単位で適用するようにする

それができないなら常套手段的な対策として、描画停止、セルの自動計算の無効化、一度のコピー行数の抑制、コピーする情報の量の削減(列を減らす、セルに入れる値の文字列長に上限をつける等)をやるしかない
139デフォルトの名無しさん (アークセー Sxbb-aWhQ)
2019/10/01(火) 00:48:34.75ID:1yOvNLR5x
>>135
検索対象のセル範囲でループを回して、MergeAreaプロパティから取得できる結合範囲の第一セルの値に対してInStr関数でチェックをかけるほうが簡単に実装できる
一度触った第一セルをDictionaryに突っ込んでおけば重複回避の処理も簡単に書けるし
140デフォルトの名無しさん (ワッチョイ df2f-+BGV)
2019/10/01(火) 02:44:48.32ID:xCeEOzji0
1000行を100回にすれば解決する気がする
141デフォルトの名無しさん (ワッチョイ 27da-rP+5)
2019/10/01(火) 20:19:29.97ID:/ilC+Vr+0
>>137
想定して最初から設計しなおした方がいいんじゃね
142デフォルトの名無しさん (ワッチョイ e77c-y+KO)
2019/10/01(火) 20:26:17.87ID:zIavCJ+m0
>>137
一度に全部やらず少しずつやるとか、挿入やめて別シートに貼り付けていくとか
143デフォルトの名無しさん (ワッチョイ e77c-e8W8)
2019/10/01(火) 23:46:40.82ID:SJOrrfFy0
vbaできる人は何歳くらいの方が多いのですか?
144デフォルトの名無しさん (ワッチョイ 87f1-a2LJ)
2019/10/01(火) 23:51:07.99ID:0MgRI3uB0
100才。
きんは100才100才。ぎんも100才100才。
もう死んじゃいましたけど。
145デフォルトの名無しさん (ワッチョイ 87f1-a2LJ)
2019/10/01(火) 23:51:51.43ID:0MgRI3uB0
いまは中曽根元首相が100才だよ。
146デフォルトの名無しさん (スフッ Sd7f-S/NQ)
2019/10/02(水) 10:56:45.47ID:BB7vTg8Dd
>>145
もう101歳になった
147デフォルトの名無しさん (ワッチョイ 87f1-a2LJ)
2019/10/02(水) 16:36:11.08ID:2/U5/wmB0
100才くらいなら健康でも1年後にもまだ生きてる生存率は50%くらいだよな。
そろそろ死神のお迎えがくるかな。
148デフォルトの名無しさん (ワッチョイ 7f68-88hv)
2019/10/02(水) 19:09:20.31ID:TvQrnV1i0
そんな事言ってる人に来るからな
149デフォルトの名無しさん (ワッチョイ 5f63-S/NQ)
2019/10/02(水) 23:17:24.03ID:gSiaZ46v0
直せるものもろくに直さず
超絶くそのまま世界で最も使われる言語の一つになってしまったVBAに
いろいろ思うところがある

俺らがああしろこうしろと習ってることってどこまで本当なのか
150デフォルトの名無しさん (スプッッ Sd12-G1PU)
2019/10/03(木) 04:52:33.28ID:MliRm7Y8d
人の言うことなんか信用するな
学校で教えることなんて、諸説あるうちの一つを紹介してるだけ
自分で直接見聞きしたことが真実に一番近い
151137 (ワッチョイ 3d2d-PFwD)
2019/10/03(木) 05:35:40.04ID:GiO0wfXg0
>>138
>>141-142
細かくコピペするよう変えたのですが、今度はメモリを3.5GBくらい使い始めました。
さすがにおかしいので調べた結果、コピー元のシートの1つがバグってたようです。
現在はメモリ使用量が250MB程度に収まりました。
ありがとうございました。
152デフォルトの名無しさん (オイコラミネオ MMb5-shqV)
2019/10/04(金) 08:52:18.52ID:D6R1G7QwM
質問させてください。
シート上に簡単なHTMLを表示させたいのですが、そのようなコントロールはありますでしょうか?

必要なタグは、br font(color属性のみ) bold div(改行の代わり)くらいです。

目的としては、WEBデータベースに登録されているリッチテキストフィールドをダウンロードして表示することになります。
危ないタグはWEBサービス側で排除されていると思います。
153デフォルトの名無しさん (ワッチョイ f1ce-G1PU)
2019/10/04(金) 10:46:00.35ID:oVJ/Q3fQ0
>>152
Microsoft Web Browserコントロールというのがあります
ただしHTMLの設定や変更にはVBAが必要です
154デフォルトの名無しさん (ワッチョイ 11da-M8t1)
2019/10/04(金) 20:22:42.36ID:vt9px/Y/0
>>152
簡単なHTMLと簡単でないHTMLの違いがわからん
155デフォルトの名無しさん (スプッッ Sdea-y84I)
2019/10/05(土) 10:01:54.14ID:TWDKigvVd
MSはC#とかTSとか素性のよい言語開発してるのにどうしてマクロは頑なにVBAのみなのか…
156デフォルトの名無しさん (ブーイモ MM0a-zRv8)
2019/10/05(土) 10:16:11.22ID:U/TjAS/YM
企業ユーザーは既存資産が動く事が大事
新しい事は求めていない
157デフォルトの名無しさん (アウアウウー Sa21-4jzF)
2019/10/05(土) 10:21:54.58ID:yF+AhEbea
c#でexcelの読み書きすればいい
158デフォルトの名無しさん (ワッチョイ ea01-XtwS)
2019/10/05(土) 11:06:04.60ID:do1ONn360
>>157
それならそれでいいんだけどMarshall.ComReleaseが面倒すぎる
159デフォルトの名無しさん (ワッチョイ 6aa2-jw9j)
2019/10/05(土) 14:26:52.59ID:pEFp3YWl0
""とclearcontentsって別物だったんだな。
一部書籍で扱いが同じだったが新刊書で違いが明らかになった。
160デフォルトの名無しさん (アークセー Sxbd-2RUv)
2019/10/05(土) 15:04:12.76ID:/n5ffSwIx
>>159
どう違うんだ?
161デフォルトの名無しさん (ササクッテロ Spbd-17qD)
2019/10/05(土) 15:20:21.70ID:6m4y9GjGp
長さ0の文字列と値・数式のクリア
162デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/05(土) 15:24:12.24ID:YItdpMcG0
>>161
何を入れてクリアしてるかを聞いてるのでは
163デフォルトの名無しさん (アークセー Sxbd-2RUv)
2019/10/05(土) 15:52:41.48ID:/n5ffSwIx
ClearContentsでクリアするとValueプロパティの中身が型未定義のEmpty値になるってことか?
164デフォルトの名無しさん (ブーイモ MM0a-zRv8)
2019/10/05(土) 15:53:36.09ID:U/TjAS/YM
>>161
この2つで異なる結果を返す関数、演算は何ですか?
165デフォルトの名無しさん (ワッチョイ 6aa2-jw9j)
2019/10/05(土) 18:14:16.86ID:pEFp3YWl0
並べ替え、重複削除、ピボットテーブル、COUNTA関数
166デフォルトの名無しさん (ワッチョイ eaea-bPVp)
2019/10/05(土) 18:21:34.50ID:zs2CzSXz0
違うかなぁ?
typenameは、どちらもEmptyだし。並び替えにも影響しないみたいだけど、、
167デフォルトの名無しさん (ワッチョイ ea01-XtwS)
2019/10/05(土) 19:16:42.87ID:do1ONn360
""のTypeNameはvbStringじゃないの?
168デフォルトの名無しさん (ワッチョイ b501-Qh1z)
2019/10/05(土) 22:49:37.62ID:cygEmLxv0
特定フォルダの中のファイル名を取得したくて、A1にファイルパスが書いてあってあったとき
Dim fname As String fname = "DirSample.xlsx" 
の"DirSample.xlsx"の部分をA1のパスにしたいのですが、どうやった良いですか?
169デフォルトの名無しさん (オッペケ Srbd-2RUv)
2019/10/05(土) 23:05:00.52ID:I+mWDivyr
fname = range("a1").value & "¥DirSample.xlsx" 
170デフォルトの名無しさん (ワッチョイ 66e8-G1PU)
2019/10/06(日) 00:21:58.24ID:DJJ/a1MV0
>>164
=type(a1)
書式を文字列にしてからやってみ
171デフォルトの名無しさん (オッペケ Srbd-ckhU)
2019/10/06(日) 01:50:18.38ID:yv4ZtA4Er
>>5
このQueryTablesなんですけど、セル内改行を含むCSVを読み込むにはどうしたらいいですかね?
改行コードをいじってみたりしたけど駄目でした
172デフォルトの名無しさん (ラクペッ MM65-CrRW)
2019/10/06(日) 08:08:24.51ID:eVUjMqzVM
>>171
CSVで「セル内改行」?
意味が分からん
173デフォルトの名無しさん (ドコグロ MM12-XtwS)
2019/10/06(日) 09:32:50.86ID:Lxoa9KpRM
>>172
Excel セル内改行 csv
でググっておいで
174デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/06(日) 12:19:22.67ID:/4diLxRX0
>>171
Excelのセル内改行コードとテキストファイルの改行コードは違う
175デフォルトの名無しさん (ワッチョイ ea4b-arkt)
2019/10/06(日) 13:05:06.23ID:RDxNCESt0
>>171
CSVのパーサーを自分で書けばいいです
176デフォルトの名無しさん (アークセー Sxbd-2RUv)
2019/10/06(日) 13:10:14.83ID:H1C9JflMx
>>171
QueryTableをコード内でAddするんじゃなくて、予めPowerQueryでセル内改行の処理を埋め込んだ接続を作っておいて、コード実行時にデータの読み込みとテーブル出力だけすればいいんじゃないの
177デフォルトの名無しさん (オッペケ Srbd-ckhU)
2019/10/06(日) 21:50:03.52ID:yv4ZtA4Er
>>174
セル内改行をLFにしたり色々試したんですけど駄目でした
結局一時ファイルを作って開いてからコピペという泥臭い処理に…
178デフォルトの名無しさん (オッペケ Srbd-ckhU)
2019/10/06(日) 21:50:35.79ID:yv4ZtA4Er
>>176
PowerQueryですか
調べてみます
179デフォルトの名無しさん (ワッチョイ 5ead-2rUB)
2019/10/06(日) 22:04:38.99ID:lVV4IJR90
VBAある表のデータで行と列が一致する列の値を返すコードを書きたいのですがどうしたらいいでしょうか?
行だけならVLOOKUPで行けると思うのですが列になるとどうしてラいいのかわかりません。
該当するセルの値を返したいです。
180デフォルトの名無しさん (ワッチョイ f14b-arkt)
2019/10/06(日) 22:26:25.54ID:yDN+2LYi0
rangeをfor eachで巡回すればいいんじゃないの
181デフォルトの名無しさん (アークセー Sxbd-2RUv)
2019/10/06(日) 22:28:18.73ID:H1C9JflMx
>>179
行と列が一致するってどういうこと?

行インデックスと列インデックスが一緒ってこと?

それとも、行と列を特定するための条件が個別にあって、それらの条件を満たすってこと?
182デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/06(日) 22:57:39.08ID:/4diLxRX0
>>177
コピペするならファイル作らなくてもクリップボードに送ってテキスト取り出し貼ればセル内改行も反映される
183デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/06(日) 22:59:41.24ID:/4diLxRX0
>>179
何がしたいのか知らないけどVLOOKUPの横版ならHLOOKUP
184デフォルトの名無しさん (ワッチョイ 5ead-2rUB)
2019/10/06(日) 23:02:28.07ID:lVV4IJR90
>>181
後者です。
シートに参照する表がありユーザーフォームで作った入力表がコンボボックスとなり
一つ目のコンボボックスが行とリンクしていて、二つめのコンボボックスが列と連動して言いて
行と列の一致した値をテキストボックスに表示させたい。
一つだけならVLOOOKUPでできるのですが表となると私の力だと全く思い浮かびません。
力といってもちょっと基本がわかって参考書とインターネットの中から使えそうなコード
を引っ張ってきて使えるように修正するくらいで一から工程を考え出す事は難しいです。
185デフォルトの名無しさん (ワッチョイ b501-Qh1z)
2019/10/06(日) 23:09:13.37ID:ZjSVYIsg0
ワークシートのchangeプロシージャで
A1:F5  A6:E6 A7:I105  に変更が加わったとき Range("F6") = Date をさせたいのだけど

If Intersect(Target, Union(Range("A1:F5"), Range("A6:E6"), Range("A7:I105"))) Is Nothing Then

ではうまくいきません。どなたか教えてください。

あと、セルに文字を入力するとき、対象となるセルを選択し、文字を入力したら、別のセルに入力途中の文字が表示され、Enterをおしたら対象となるセルに反映されました。
これもどうしたら普通通りになりますか?
186デフォルトの名無しさん (ワッチョイ 5ead-2rUB)
2019/10/06(日) 23:14:57.48ID:lVV4IJR90
>>183
しいて言うならVLOOKUPとHLOOKUPの合わせる感じ?
187デフォルトの名無しさん (ワッチョイ 66e8-G1PU)
2019/10/06(日) 23:34:28.13ID:DJJ/a1MV0
>>185
うまくいきませんとは?
一部だけ反応?反応の範囲が逆?
188デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/06(日) 23:45:45.30ID:/4diLxRX0
>>186
関数でできないからVBAでやろうとしてるだけなら関数でできる
表がA1:D5だった場合、
=VLOOKUP(列の条件,A1:D5,MATCH(行の条件,A1:D1))
189デフォルトの名無しさん (ワッチョイ ea2c-2rUB)
2019/10/06(日) 23:45:57.04ID:ddN6wFVd0
Ruby では、2次元配列[ 行 ][ 列 ]で、そのセルを指せる。
ただし、行列のインデックスは、0 から始まる

require 'csv'

str = <<"EOT"
1,a,x
2,b,y
EOT

p table = CSV.parse( str )
#=> [["1", "a", "x"], ["2", "b", "y"]]

p table[ 1 ][ 2 ] #=> "y"
190デフォルトの名無しさん (オッペケ Srbd-2RUv)
2019/10/07(月) 07:20:54.28ID:W+vOSLuyr
>>184
重複無しなら、コンボボックスの値が行、列の並びと
同じになるように設定して
listindexを取得
offsetで値を取るとか
191デフォルトの名無しさん (ワントンキン MM2e-arkt)
2019/10/07(月) 08:45:07.25ID:s6G9KopOM
見出し行の値をkeyにしてrowを取り出すdictionaryを作る
列も同じ様に配列を作る
で、コンボボックスで選択した値で配列から行列番号を取り出す
19249 (ワッチョイ 7991-rYlP)
2019/10/07(月) 13:22:02.42ID:paP7R7pw0
>>177
まず考えるべきはバイナリエディタで該当ファイルを開いて、どういう構造になってるのかを確認することだよ。
193デフォルトの名無しさん (ワッチョイ 5ef7-+KWM)
2019/10/07(月) 19:22:21.76ID:T7P1X7tV0
>>185
Not抜けてる
194デフォルトの名無しさん (ワッチョイ b501-VLQT)
2019/10/07(月) 21:18:32.84ID:YYJJYJ590
>186 change自体が動きません
>193 マジッスカ!どこに入れたらいいですか?
195デフォルトの名無しさん (オッペケ Srbd-2RUv)
2019/10/07(月) 21:59:12.85ID:DI7aKBabr
>>194
ifのあと
196デフォルトの名無しさん (ワッチョイ 5ead-2rUB)
2019/10/08(火) 00:24:14.75ID:HDWpL7A50
〉〉184です。教えてもらった通りVLOOKUPとマッチ関数で作ってみたのですが
うまく言いません。通常のエクセルの状態ではやりたいように動作したのですができればVBAで動作できるようにしたいです、

Sub 行と列()
Dim tateya As String
Dim gouki As String
Dim gouki2 As String
Dim siriaru As String
Dim test As Worksheet
Set test = Worksheets("テスト")
tateya = test.Range("a1")
gouki = test.Range("a2")
haihhun = "-"
gouki2 = tateya & haihhun & gouki '号機
Dim siri As Worksheet
Set siri = Worksheets("シリアル管理")
Dim hanni_seru As Variant '範囲指定はバリアント型を使用する事
hanni_seru = siri.Range("D1:L39")
'VLOOKUP(列の条件,A1:D5,MATCH(行の条件,A1:D1))
siriaru = WorksheetFunction.VLookup(gouki2, hanni_seru, WorksheetFunction.Match("H1", "D1:L1"))
MsgBox siriaru
End Sub
197デフォルトの名無しさん (アークセー Sxbd-2RUv)
2019/10/08(火) 02:02:42.66ID:l+0JwRkcx
>>196
たぶんMatchの行条件がおかしいけど、どんな問題が起きてるのか分からないから何とも言えない

それから、haihhunとかsiriaruとかhanni_seruとか変数の名前がちょっと酷い
HyphenとかSerialとかとかCellとか英語をきちんと使う意識を持つのが上達の近道だと思う
198デフォルトの名無しさん (ワッチョイ ea01-jw9j)
2019/10/08(火) 07:19:14.43ID:EnS6DjXJ0
〉〉196
その前にまず安価というのはだな・・・
199デフォルトの名無しさん (ワッチョイ 3968-G1PU)
2019/10/08(火) 07:24:09.57ID:XnwML2Ug0
別モジュールに書いたprivate subをcallする方法ってありませんか?
publicにするしか無いでしょうか
200デフォルトの名無しさん (アメ MM11-pTrw)
2019/10/08(火) 07:37:46.07ID:wEzHRAYiM
〉〉196です。
変数名もそんなルールが?
なんとなく日本語はよくないなーと思って自分で分かるローマ字で表記しようと思ったんですが、後ダメな理由がマッチ関数にワークシート指定してないからかと推察。後で試します。
201デフォルトの名無しさん (ワントンキン MM7a-arkt)
2019/10/08(火) 07:52:03.60ID:o1U1FjwuM
無理に英語やローマ字にするくらいなら日本語でいいと思うけど
あとrangeだけじゃなくてcellsも覚えれば目的達成するんじゃないか
cellsのrowとcolumnで行と列を取得出来るからね
202デフォルトの名無しさん (アークセー Sxbd-2RUv)
2019/10/08(火) 08:16:32.23ID:l+0JwRkcx
>>199
ただ単にマクロ一覧に表示されないようにしたいだけなら、Private SubをPublic Subに変えた上で、そのモジュールの先頭にOption Private Moduleと書き加えれば良い

Publicにするのが嫌なら、呼び出したいPrivate Subが定義されたモジュールにコールバック用の引数付きでPublic Subを定義して、呼び出したい任意のPrivate Subを引数で指定して呼び出せるようにする
それも嫌ならクラスを作ってPrivate Subをメソッド化する

どちらもコーディングや保守の工数は大して変わらない
203デフォルトの名無しさん (ワッチョイ 3968-G1PU)
2019/10/08(火) 20:03:58.77ID:XnwML2Ug0
>>202
>ただ単にマクロ一覧に表示されないようにしたいだけなら、Private SubをPublic Subに変えた上で、そのモジュールの先頭にOption Private Moduleと書き加えれば良い
まさにこれです!privateにしなくても出来たんですね、勉強になりました。ありがとうございました

他の方法も勉強になりました
204デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/08(火) 20:07:56.35ID:Uz+DmrF+0
>>200
決まった名前ルールは無い
人それぞれに拘りがあるだけ
たぶんみんなに共通する拘りは分かり易さ
他人が見て混乱しないか、半年後に自分が見てすぐに理解できるか
205デフォルトの名無しさん (ワッチョイ 5ead-2rUB)
2019/10/08(火) 21:30:26.55ID:HDWpL7A50
>>200
ありがとうございます。
コメントつけまくって分かるようにしてます。
まぁ詳しい人が見たらめっちゃくちゃで分かりにくいと思うのですが、
自分用で自分が分かればいいので動くようにして少しづつ改良していきます。
多分、めっちゃ不具合あります。
206デフォルトの名無しさん (ワッチョイ 5ead-2rUB)
2019/10/08(火) 22:01:56.51ID:HDWpL7A50
データベースから原本のシートに転記する場合表内でのループは可能ですか?
但し、実際に転記する表の上下に題名や表題があります。
例えば1行から20行での表があり繰り返すデータが21行目なったら2ページめの1行目
にするという事は可能でしょうか?
出来なさそうなのでリストボックスで見やすく作ろうかと思ったのですが、印刷用でも
作成したいのでできるのであればご教授お願いします。

上だけなら、forの頭を指定して10番目ならfor i = 10TO 最終行
で行けると思うのですが表の最後の指定がわかりません。
forをネストすればできそうですが、それでも20番目でおわる形にする感じ?
21行目を2ページ目の1行目を指定するのは難しそう
207デフォルトの名無しさん (ワッチョイ c55f-Je0l)
2019/10/08(火) 22:10:00.62ID:QtXyLjSg0
伝え方って大事だよね
208デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/08(火) 22:11:56.81ID:Uz+DmrF+0
>>206
21行目になったら次の改ページ位置を貼り付け先にする
209デフォルトの名無しさん (ワッチョイ 397c-GY5J)
2019/10/08(火) 22:13:49.93ID:Uz+DmrF+0
または上下の題名をヘッダフッタに指定して改ページを気にせず貼り付ける
210デフォルトの名無しさん (ワッチョイ b501-UYl5)
2019/10/08(火) 22:46:38.31ID:IntPDsvb0
>>194
出来ました。大変ありがとう😊
211デフォルトの名無しさん (ワッチョイ 9fa2-8cCB)
2019/10/10(木) 21:20:24.18ID:gS7zDweR0
たまにpowershellの話題出るから聞きたいんだけどpowershellってUWSC見たいなことできるの?
212デフォルトの名無しさん (ワッチョイ 9f79-P7q6)
2019/10/10(木) 21:36:10.47ID:LC0PLrJI0
特化してるUWSCみたいに簡単ではないけど
がんばればできる
213デフォルトの名無しさん (ワッチョイ 9fda-OHYr)
2019/10/10(木) 21:48:01.84ID:5Xxw1b5M0
頑張れば何でもできるだろうな。

VBSではWindowsAPIが使えない! → 裏でこっそりエクセル起動すれば使えるじゃん。
VBAではjavascriptが使えない! → ExecuteThisJavaScript使えば出来るじゃん。

殆ど屁理屈だけど。
214デフォルトの名無しさん (ワッチョイ 9f59-Sohv)
2019/10/10(木) 22:44:29.41ID:g+4V+XU10
要は徒歩でも世界一周できますよねってこと
215デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/10(木) 23:00:49.96ID:0ZKFmSv+0
ジョジョ、逆に考えるんだ、『vbaの下に便利APIのExcelやAccessが付いているのさ』と考えるんだ
21649 (ワッチョイ f791-mVPP)
2019/10/11(金) 15:44:34.63ID:3jXa2BKX0
>>211
>>212
>>213
出来るぜ。
−応ここVBAのスレだから言うけどVBAでも全部できる。
今流行りのRPAがやってることは全部出来る。
21749 (ワッチョイ f791-mVPP)
2019/10/11(金) 15:50:38.03ID:3jXa2BKX0
ただ、VBSでWindowsAPIは苦肉の策というか、敬遠したい気持ちもある。
まっ、VBSが最適な話なら結局使うけどね。

VBAでJavaScriptも同様だね。
こっちの方が敬遠したい。
まずはVBAだけで何とかならないかを考える。
218デフォルトの名無しさん (ワッチョイ 9fa2-8cCB)
2019/10/11(金) 17:59:50.09ID:l8XLJu9S0
>>216
まじかー
vbaでやれるっていうことはwinapiを使うって事だよね?
スクリーン上の指定座標の色の識別とかもできたりするの?
219デフォルトの名無しさん (ワッチョイ b74b-x3kW)
2019/10/11(金) 18:32:21.51ID:cTW5CNRi0
特定のアプリのウィンドウに対してキー入力するとかVBAでやってるよ
220デフォルトの名無しさん (ブーイモ MMcf-4N8v)
2019/10/11(金) 20:26:26.20ID:WXbKDhhqM
Cells(1,"A")と書かず、判りにくいCells(1,1)と書くのはなぜ?
ネットの記述とか見ててもCells(1,"A")と書いてるの見たこと無い
221デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/11(金) 20:52:13.81ID:zntJ+vZ40
マルチかよw
222デフォルトの名無しさん (ワッチョイ b7ce-NJTS)
2019/10/11(金) 22:18:32.49ID:thcocK/e0
はわわ〜
223デフォルトの名無しさん (アウアウエー Sadf-UHnC)
2019/10/11(金) 23:28:47.56ID:CLF8jhxua
RPAは所詮VBAに勝てないか
っしゃああ
224デフォルトの名無しさん (ワッチョイ 9fa2-8cCB)
2019/10/12(土) 02:44:28.24ID:o9i+oJev0
forでまわせんだろうが
個人的にrangeをなぜ使うかの方がわからん
225デフォルトの名無しさん (ワッチョイ 9fa2-8cCB)
2019/10/12(土) 02:45:37.39ID:o9i+oJev0
ああ、cellsで表現できるのをrangeで表現するのが解らんってことね
226デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/12(土) 06:05:16.65ID:ghJl2hig0
Range("B2:E6").Interior.Color = 65535
こんな場合は使うかな
見た目というかデータに影響を与えない部分はrangeの方が読みやすい、気がする
227デフォルトの名無しさん (ワッチョイ 9f01-8cCB)
2019/10/12(土) 06:55:20.10ID:aSZCz9kN0
朕も同じくだわ
228デフォルトの名無しさん (ワッチョイ f77c-h29T)
2019/10/12(土) 11:15:14.28ID:Wxq9g5aB0
Cells(1, "a")と書くならRangeを使えばいい
229デフォルトの名無しさん (スフッ Sdbf-hY6M)
2019/10/12(土) 11:19:09.64ID:cp8dvw0gd
マルチする迷惑な質問者多いな…
230デフォルトの名無しさん (ブーイモ MMfb-4N8v)
2019/10/12(土) 11:58:45.65ID:6ww4xfxmM
繰り返すときCells(i, 1)よりCells(i, "A")の方が判りやすいと思うけど
231デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/12(土) 12:34:57.54ID:ghJl2hig0
列方向に繰り返す時はどうするの
232デフォルトの名無しさん (ブーイモ MMcf-olh0)
2019/10/12(土) 12:37:13.83ID:O9HuO9geM
むしろexcel側でR1C1形式がデフォルトになれば良いのに
233デフォルトの名無しさん (ワッチョイ 9f4b-x3kW)
2019/10/12(土) 12:44:34.65ID:9l3IvWTz0
列は作りながら足したり順番変えたりする事が多いので最初からenum作って管理する
cells(i, cols.hoge)みたいにしてる
234デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/12(土) 12:46:15.93ID:ghJl2hig0
>>232
三四郎に対抗するためにこうなった
結果、シェアを勝ち取ったけど負の遺産として残ってしまったね
235デフォルトの名無しさん (ワッチョイ 97da-NJTS)
2019/10/12(土) 19:24:53.26ID:E5CVP1ep0
アホか
236デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/12(土) 20:28:16.78ID:grx7Z1qlx
経験則から言うと、エクセルのシートを入力フォームや書類のフォーマットのように捉えてる人はRangeを使いがちで、配列やテーブルとして扱えるオブジェクトの塊だと捉えてる人はCellsを使う傾向がある
237デフォルトの名無しさん (ワッチョイ bfad-la4p)
2019/10/13(日) 00:25:27.70ID:ZLXCWom40
あるリストをユーザーフォームで絞り込んでそのユーザーフォームのリストボックスに
リスト内容を表示させたいのですがオートフィルタの表示はうまくいくってるのですがリストの表示
先がうまく表示されません。どうしたらいいでしょうか?
以下がコードです
private Sub kensaku_bo_Click()
'オートフィルタによる検索
Dim ws_kiki As Worksheet
Set ws_kiki = Worksheets("機器履歴")
Dim tateya As String '建屋番号
Dim gouki As String '号機番号
Dim gouki2 As String '建屋と号機の合計のセル
Dim haihhun As String
Dim myData As Variant
tateya = ken1.Value
gouki = ken2.Value
haihhun = "-"
gouki2 = tateya & haihhun & gouki '号機
ws_kiki.Range("A1").AutoFilter 3, gouki2
Dim lastRow As Long
With ws_kiki
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
myData = .Range(.Cells(1, 1), .Cells(Rows.Count, 12).End(xlUp)).Value
End With
With list_ken
.ColumnCount = 12
.ColumnWidths = "50;80;50;50;50;50;50;50;50;50;50;50"
.List = myData
End With End Sub
238デフォルトの名無しさん (ワッチョイ b7ce-NJTS)
2019/10/13(日) 04:36:36.74ID:PQpo0fQ70
変数で回す時はCells
セル位置が固定の時、範囲指定する時はRange
1行ごとにコード入力が楽な方を選んでる
239デフォルトの名無しさん (ワッチョイ bff7-n5Mu)
2019/10/13(日) 09:40:37.82ID:EzRorSmA0
>>237
myData(Range型)にはフィルター設定情報は入ってない
一行一行をRow.Hidden判定しながら範囲内ループさせて取り込むしかないね
240デフォルトの名無しさん (ワッチョイ bff7-n5Mu)
2019/10/13(日) 09:49:37.23ID:EzRorSmA0
間違えたmyDataは配列か
それでもフィルター情報は乗らないね
リストボックスの.RowSourceに範囲アドレス入れて連動させる方法あるけど
これフィルターも連動したっけ?
241デフォルトの名無しさん (ワッチョイ 1fba-7XqI)
2019/10/13(日) 15:30:11.40ID:8j4dObBs0
セルC5:C17に数値が入ってます(A)
セルF5:F21に数値が入ってます (B)
セルY5:Y25に数値が入ってます (C)

AとBの数値のうちCにない数値をセルO5から順番に下に抜き出したいんです

cを配列で格納するまでは出来たのですがそれ以降がわかりません
よろしくお願いします

初心者です
242デフォルトの名無しさん (ワッチョイ b74b-x3kW)
2019/10/13(日) 15:41:29.73ID:tc/0x//C0
配列を検索すればいいだけでは
243デフォルトの名無しさん (ワッチョイ 1fba-7XqI)
2019/10/13(日) 15:45:58.47ID:8j4dObBs0
>>242
すみません
その配列の検索が上手くいかなくて…
244デフォルトの名無しさん (スフッ Sdbf-Sohv)
2019/10/13(日) 16:03:13.56ID:TBfrTFPMd
配列よりコレクションの方が楽では
245デフォルトの名無しさん (ワッチョイ b74b-x3kW)
2019/10/13(日) 16:05:31.06ID:tc/0x//C0
for i = 0 to ubound(配列)
if 配列(i) <> 検索したい値 then
どこかに出力
end if
next

こういう感じでいいんじゃないの
246デフォルトの名無しさん (ワッチョイ 1fba-7XqI)
2019/10/13(日) 16:45:22.08ID:8j4dObBs0
>>244
コレクションっていうのがあるんですね
調べてみます
ありがとうございます
247デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/13(日) 18:24:09.39ID:0JmSqCe7x
普通のCollectionや配列よりも、Cの値をKeyにしてDictionaryオブジェクトを作る発想の方がいいと思う
Dictionary.ExistsメソッドでKeyの存在確認ができるからコードが簡単になる
248デフォルトの名無しさん (アウアウウー Sa5b-Cvo3)
2019/10/13(日) 20:43:23.01ID:2Iz5cpana
Dictionaryは平均的なVBAerには理解できないから却下
他人に理解できないもん作るんならVBAを選ぶ意味がない
249デフォルトの名無しさん (ワッチョイ 9f4b-x3kW)
2019/10/13(日) 21:17:01.40ID:GzZlIE9V0
dictionary楽なのに
250デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/13(日) 21:32:01.32ID:z6dVpON+0
連想配列の事をdictionaryって呼ぶんだっけか
すごい便利だけど、シートあるんだからシート使った方がいいんでない?と思う
二次配列が目に見えて編集し放題とか楽ちんすぎる
251デフォルトの名無しさん (アウアウエー Sadf-UHnC)
2019/10/13(日) 21:38:36.38ID:a37CwINqa
みんなどうやってVBAそんなに詳しくなったの?
252デフォルトの名無しさん (ワッチョイ f77c-h29T)
2019/10/13(日) 21:44:04.10ID:exOKfr5u0
必要に迫られて作ってるうちに
253デフォルトの名無しさん (ワッチョイ 9f59-Sohv)
2019/10/13(日) 21:48:31.98ID:TUjSthkJ0
休日まで費やして2000行くらいコード書いてるけどそろそろ嫌になってきた
254デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/13(日) 21:50:43.69ID:z6dVpON+0
そのうち、休日に働いて会社でのんびりするようになるよ
あんまり良くないんだけど、プログラムは家じゃないと集中して掛けないんだよな
255デフォルトの名無しさん (アウアウエー Sadf-UHnC)
2019/10/13(日) 21:54:03.90ID:a37CwINqa
>>254
あー、すごいよくわかる
256デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/13(日) 22:03:41.31ID:0JmSqCe7x
>>248
平均的なVBAerってのがどんな層を指してるかちょっと分からないが、Dictionaryが理解できない人ってそもそも配列やCollectionも理解できないんじゃないの?
257デフォルトの名無しさん (ワッチョイ b74b-x3kW)
2019/10/13(日) 22:05:54.29ID:VDajUcWs0
dictionaryの替わりにシートを使うという発想は無かったな
258デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/13(日) 22:13:33.97ID:0JmSqCe7x
シートが可視化された配列だってのはその通りなんだけど誰でもGUIで簡単に編集できてしまう点が逆に弱点でもある
値の読み書きだけでイベントハンドラに制御が渡るからそもそも重いし
259デフォルトの名無しさん (ワッチョイ f768-NJTS)
2019/10/13(日) 22:23:41.04ID:z6dVpON+0
>>258
まぁねぇ。その辺は考えながらうまく付き合って行きたい所
260デフォルトの名無しさん (ワッチョイ 9fa2-8cCB)
2019/10/13(日) 22:44:44.65ID:Sc8Blp8e0
連想配列ってどういうとき便利なの?
いまいち基本書の記述じゃメリットとか使い道とかがイメージできないんだけど
261デフォルトの名無しさん (ワッチョイ f77c-h29T)
2019/10/13(日) 23:07:03.97ID:exOKfr5u0
>>260
配列で数字の添え字じゃなくて好きなワードを使いたい時に
あとDictionaryの場合は検索がめちゃくちゃ速いから大量データの検索に
262デフォルトの名無しさん (アウアウウー Sa5b-8cCB)
2019/10/13(日) 23:09:26.19ID:YeAfr+Aea
>>241
こういうこと?
Sub 検索()
Const COL_C As Long = 3
Const COL_F As Long = 6
Const COL_O As Long = 15
Dim nSetRow As Long
nSetRow = 5
Dim nRow As Long
For nRow = 5 To 17
If Not IsExistValue(Cells(nRow, COL_C).Value) Then
Cells(nSetRow, COL_O).Value = Cells(nRow, COL_C).Value
nSetRow = nSetRow + 1
End If
Next
For nRow = 5 To 21
If Not IsExistValue(Cells(nRow, COL_F).Value) Then
Cells(nSetRow, COL_O).Value = Cells(nRow, COL_F).Value
nSetRow = nSetRow + 1
End If
Next
End Sub
263デフォルトの名無しさん (アウアウウー Sa5b-8cCB)
2019/10/13(日) 23:09:42.80ID:YeAfr+Aea
Function IsExistValue(ByVal pValue As Variant) As Boolean
IsExistValue = True
Const COL_Y As Long = 25
Dim nRow As Long
For nRow = 5 To 25
If Cells(nRow, COL_Y).Value = pValue Then
Exit Function
End If
Next
IsExistValue = False
End Function
264デフォルトの名無しさん (ワッチョイ 9fea-+Z1Z)
2019/10/13(日) 23:20:25.51ID:rkAEaYhN0
>>260
Keywordが重複できないから必ず一意なデータセットができる。
265デフォルトの名無しさん (ワッチョイ 9fe0-o74w)
2019/10/14(月) 00:48:24.78ID:2bLpiP0X0
2シートを連結する際、それぞれの各行をクラスインスタンスに代入&コレクション化してるのですが連結方法に悩んでいます

Personクラス(pID, 氏名, 名字プロパティ, 生年月日,...)→Persons.Add Personインスタンス, str(pID)
Diaryクラス(dID, pID, 作成日, 本文,...)→Diaries.Add Diaryインスタンス, str(dID)
'出力
Dim d as Diary
For each d in Diaries
if(存在チェック) then xxx = Persons.Item(d.pID).名字
Next d

現在上記のように回してますが、より楽に書けるor固いor保守しやすい...実装があれば教えて頂きたいです
現状はプロパティの予測表示がされないのが微妙に使いにくいのと、そもそもコレクションにおけるkeyの動作をよく分かっていません
266デフォルトの名無しさん (ワッチョイ 9f4b-x3kW)
2019/10/14(月) 01:24:56.78ID:wVIK+1B50
>>260
existsが便利
数数えたり、行番号取り出したり、キャッシュの管理に使ったり
for eachで中身を全部取り出そうとしたら投入順が保証されないのが少し残念
267デフォルトの名無しさん (ワッチョイ bf68-NJTS)
2019/10/14(月) 09:29:31.58ID:+oSE7p5I0
VBAでOPENしたファイルを引数で渡す事は出来ますか?
こんな感じで処理したいのですが、「#1」って変数では無いのでしょうか

Sub foo()
Open "TESTFILE" For Output As #1 ' Open file for output.
Call write_(#1,"content")
Close #1
End Sub

Function write_(filenumber, content)
Write filenumber, content
End Function
268デフォルトの名無しさん (ワッチョイ 9fda-OHYr)
2019/10/14(月) 09:38:41.74ID:LU4QFSeP0
>>254
>>255
ホント。
プログラムに対する理解のないバカ上司とか、
コーディングの真っ最中に、平気でコピー取りを要求してきたりするからな。
269デフォルトの名無しさん (アウアウウー Sa5b-8cCB)
2019/10/14(月) 12:22:02.07ID:UlmNQm1da
>>267
ファイル番号は1-255の範囲で常に固定値でやるなら引数で渡さずにどこも#1でいいかと思う
FreeFileって関数があってこれは番号を任意に付番してくれるので
たとえば
Dim nNo as Integer
nNo = FreeFile
Open .... #nNo
って書くこともできる
このnNoを引数に指定してもいいかもね
270デフォルトの名無しさん (ワッチョイ bf68-NJTS)
2019/10/14(月) 12:27:42.70ID:+oSE7p5I0
>>269
行けました!ありがとうございます
ナンバー記号「#」の詳細ってMSDNかどこかにありますか?

Sub foo()

Dim nNo As Integer
nNo = FreeFile

Open "TESTFILE" For Output As nNo ' Open file for output.
Call write_(nNo, "conteaasnt")
Close #1

End Sub

Function write_(nNo, content)
Write #nNo, content
End Function
271デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/14(月) 14:39:32.50ID:aC+4aHxsx
>>265
Persons、Diariesをコレクションにしている理由は、「Person、Diaryという2つのカスタムクラスの集合オブジェクト」という意味論以外に、何か実装的な理由はあるのかな?

例えば、2つのコレクションクラスに格納するデータの型が一様でないからCollectionじゃないとリスト化できないとか、多態のためにCollectionクラスをインターフェース継承させているとか

そういう事情がないならば、Keyの存在確認手段を持たないCollectionクラスではなく、Keyの存在確認を行うExistsメソッドを持つDictionaryを使うのが実装的には楽だと思う
pID・Person、pID・Diaryの二種類のペアに対応するDictionaryを個別に作ってpIDでリレーション確認するイメージ(各DictionaryではpIDをKeyとしておく)

そもそもRemoveやAddといった基本的な機能はCollectionとDictionaryとで共通しているし、Dictionaryの方が動作も早いしね
272デフォルトの名無しさん (アウアウウー Sa5b-8cCB)
2019/10/14(月) 14:43:11.09ID:ghhHmrX1a
>>270
自分は見たことないですね
なんとなくですが自分は常に#をつける派です
それとcloseも#nNoかと
273デフォルトの名無しさん (スプッッ Sddf-NJTS)
2019/10/14(月) 15:37:37.47ID:g9W5x9G3d
言語リファレンスでも#は省略可能となっているだけで、説明はどこにも見当たらない
古いBASICとの互換性で残してあるだけだと思う
274デフォルトの名無しさん (ワッチョイ bf68-NJTS)
2019/10/14(月) 15:51:24.60ID:+oSE7p5I0
>>272-273
あれ、じゃあなんでしょうねこれ
コンソールで
?#1
ではエラーになるので、ただの数値ではなくなるみたい
#1=2
も出来ない。なんとなくリテラルか参照っぽいですが、何でしょうね
openなどの時にしか使えないのでしょうか
275デフォルトの名無しさん (ワッチョイ 9fe0-o74w)
2019/10/14(月) 15:54:12.83ID:2bLpiP0X0
>>271
ありがとうございます
コレクションを選択した理由は特にありません
(あえて挙げるなら、コレクションにまとめるリファレンスが最初に目に付いた です)

>pID・Person、pID・Diaryの二種類のペアに対応するDictionaryを個別に作ってpIDでリレーション確認するイメージ(各DictionaryではpIDをKeyとしておく)
言葉足らずですみません。Diaryクラス側ではpIDが重複しdIDが主キーとなるので、一意に取得できません。(この認識も間違っていたらすみません...)
エラー処理がExistsで済むのは明確なメリットですね。Collectionでは、調べた限りではOnErrorGoToで飛ばす方法しか見つけられませんでした
ひとまず、Diary側のループで取得したpIDでPersonDictionaryにExistsをかける 方法を試してみようと思います。
276デフォルトの名無しさん (ワッチョイ f77c-h29T)
2019/10/14(月) 16:00:13.52ID:pMfnFO5+0
>>274
#1の中身は文字列じゃないよ
277デフォルトの名無しさん (ワッチョイ 9f01-Kkga)
2019/10/14(月) 16:32:13.39ID:9SF/tSaH0
>>274
> openなどの時にしか使えないのでしょうか
そう言うことだろ
278デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/14(月) 17:26:42.75ID:J7mWSp9Bx
>>275
複数のDiaryインスタンスが共通のpIDを持つならば、連結を二重化したらいいんじゃないだろうか

まずpIDをキーとするDiary用のDictionaryをまず作っておいて、
同じpIDを持つDiaryインスタンスをまとめたDictionaryかCollectionをItemとして持たせる形にすればいいと思う

構造的に表すと
(Key[i] = pID, Item[i] = (Key[j] = dID, Item[j] = Diary))

みたいな感じ
279デフォルトの名無しさん (ワッチョイ bfad-la4p)
2019/10/14(月) 22:48:09.17ID:PwgP8aUB0
VBAで表からその左の行を検索したいのですがどうしたらいいでしょうか?
Dim rng As Range
Set rng = ws_siriaru.Range("D:L").Find(ken4, LookAt:=xlWhole)
If rng Is Nothing Then rng
MsgBox ""ない
Exit Sub
End If
siriaru = Range("C" & rng.Row).Value
gouki = siriaru
label_siri = gouki
では表示はされるのですがうまくいきませんでした。
280デフォルトの名無しさん (ワッチョイ 9fe0-o74w)
2019/10/14(月) 23:16:54.59ID:2bLpiP0X0
>>278
重ねてありがとうございます。

なるほど。Dictionaryの各要素を、そのkeyに対応するインスタンスの集合とするんですね
1key対1レコード という考えしか無かったので目から鱗です
281デフォルトの名無しさん (ワッチョイ f77c-h29T)
2019/10/15(火) 00:00:45.56ID:Nq3iWAMG0
>>279
説明する時「うまくいく」とか「うまくいかない」という単語は使ってはいけない
282デフォルトの名無しさん (ワッチョイ 9fe0-o74w)
2019/10/15(火) 00:02:27.41ID:0b9bW6T40
>>279
どういった表示がされて、実際に欲しい情報とどこが違うでしょうか?

Range("D:L")をken4で完全一致検索をかけ、最初に見つかったセルの行番号を取得
その行のC列セルの値をsiriaruに代入

という点ではプログラムに間違いはありません
283デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/15(火) 00:30:22.92ID:i09LlRYux
>>280
その通り
そのようにすれば、Diaryのインスタンス集合全体に対してpIDの存在確認をすることも出来るし、pID, dIDという2つのプロパティ値を使って目的のDiaryオブジェクトを取り出すこともできる
284デフォルトの名無しさん (オッペケ Srcb-FpGY)
2019/10/15(火) 04:19:47.75ID:/i2LKWgur
>>279
siriaru=ws_siriaru.Range("C" & rng.Row).Value
285デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/15(火) 08:12:41.36ID:/HnZFUztx
>>279
siriaruに値を代入するときに参照しているシートがシリアルのシートじゃなくて別シートになってると思う
siriaru = ws_siriaru.Range("C" & rng.Row).Value
に変えたらうまくいくのでは
286デフォルトの名無しさん (アウアウウー Sa5b-ueyd)
2019/10/15(火) 18:45:11.44ID:opa9jcIha
>>270
close もopenと同じ番号のnNo によ
287デフォルトの名無しさん (オッペケ Srcb-jOzB)
2019/10/15(火) 21:12:27.40ID:OH7oWYO6r
>>236
最初からVariantに入れるのが正解では?
288デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/15(火) 21:28:52.40ID:NB8YI5GFx
>>287
Variant型は便利だけどRangeオブジェクトを突っ込むためだけの変数で使用するにはねぇ
実際のデータ型を明示しないぶんコードが読みにくくなるしコーティング時にインテリセンスも利かなかったりとデメリットの方が目立つ
実行時エラーの原因って感じ
289デフォルトの名無しさん (ワッチョイ bfad-la4p)
2019/10/15(火) 22:36:34.14ID:LwOOuMgG0
リストの表示について
以下の表示の際最終行後ろのセルが空白だった場合最終行が表示されません。
なぜでしょうか?
LastRowではA列の最終行を指定しているので間違いではないと思うのですが
最終行のみ全てのセルに数値を入れていないと最終行に反映されないみたいです;。
With ws_kiki
    LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
myData = .Range(.Cells(1, 1), .Cells(Rows.Count, 13).End(xlUp)).Value

End With
With list_ken
.ColumnCount = 13
.ColumnWidths = "20;60;50;50;50;70;70;50;50;50;50;50"
.List = myData
290デフォルトの名無しさん (ワッチョイ f77c-h29T)
2019/10/15(火) 22:58:43.53ID:Nq3iWAMG0
>>289
M列で値が入ってる一番下のセルまでが範囲のようだが
291デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/15(火) 23:33:50.79ID:NB8YI5GFx
>>289
あなたsiriaruの人でしょ
もういい加減お金払って誰かに教えてもらうか、MSDNのVBAのリファレンスを読み込んできちんと勉強すべきだとおもうよ
会社で使ってるマクロのコードベタ貼りしてるのも本当に宜しくない

今回の問題は、せっかくLastRowにA列の使用セルの最終行の行インデックスを格納しているのに、myDataに入れる値のセル範囲指定でそのLastRowの値を使っていないことが原因でしょ
自分の頭をちゃんと使って書いてる?

myData = .Range(.Cells(1, 1), .Cells(LastRow, 13)).Value

と書き直せば終わり
292デフォルトの名無しさん (ワッチョイ f77c-h29T)
2019/10/16(水) 00:02:02.46ID:TVv1yadl0
この人の問題は質問内容よりも質問文が意味不明なこと
状況を全く何も知らない相手に説明するということを考えながら質問文を書くようにしよう
293デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/16(水) 00:19:19.45ID:GI0GqC4Qx
こういう構造的思考力のない人がコピペ&コピペで作り上げた野良マクロが企業の負債になっていくんだよね
294デフォルトの名無しさん (ワッチョイ 9f4b-x3kW)
2019/10/16(水) 00:30:12.53ID:4U9etGee0
ワークシートのスクリーンショットとか図で説明してもらわないと訳がわからない
295デフォルトの名無しさん (ワッチョイ 9f4f-aOdU)
2019/10/16(水) 07:23:15.57ID:Qp+et4KT0
.Net系もやってる人に質問です
列挙体に属性付けて指定すると数値の他に定義した文字列返す方法があると思うんですけど
アレをVBAで行う方法は有りますか?
Constで定義すれば出来ないことは無いんですがなんかダサくて・・・
296デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/16(水) 08:23:24.91ID:GI0GqC4Qx
>>295
構造体配列とかクラスとかで擬似的に再現するしかないんじゃないの
297デフォルトの名無しさん (アウアウウー Sa5b-Cvo3)
2019/10/16(水) 08:32:09.52ID:M09TXdK2a
>>295
どうでもいいだろ
VBAなんか使ってること自体が恥辱なのに何を今更
298デフォルトの名無しさん (ドコグロ MM8b-Kkga)
2019/10/16(水) 12:35:11.58ID:IY04c/q/M
>>295
簡単には無理でしょ
.NETも取得するのはそれなりに面倒だし
299295 (ササクッテロ Spcb-aOdU)
2019/10/16(水) 12:54:37.89ID:swoRisr+p
>>296
そのためにクラスを作るとVBAの場合はひとクラス1モジュールファイルを切らないといけないし、
フォルダ分けも出来ないので、クラスを作る方法は後々クラスファイルが煩雑になる可能性があるのでやめておきます。

構造体や配列を使うのは少し大掛かりな気もしますが、お陰で何となくイメージがわきました。
DictionaryとかCollectionとかのValueペアのオブジェクトを使って、key側にenumで使用している番号、
Value側に文字列を設定して、enumに紐付けてやるような感じでやろうかなと。
ただ、修正が入るときに手間が掛かるようだとあまり意味がないのでその辺の構成は気をつけて作るような
感じですかね。ありがとうございました。

>>297
どんな言語だろうと自分なりに構成を考えて作っていくのは大事だと思いますよ。
今回の件は無理して作る程のものではありませんが
きちんと部品化しておけばまた違った局面で使うことが出来るので、
自分のためにも、引き継ぐ人のためにも大事だと思います。それはどの言語でも同じでしょう。
300デフォルトの名無しさん (ドコグロ MM9b-Cvo3)
2019/10/16(水) 13:35:11.75ID:QJqyol2eM
引き継ぎを考えるなら郷に入れば郷に従えで普通にプレーンに書いた方がいい
VBAに限ったことではないけど、変なオナニーされるのが一番迷惑なんだよ
301デフォルトの名無しさん (アウアウエー Sadf-tJKS)
2019/10/16(水) 18:05:45.54ID:vKUJ5JTra
>>297
なんでここに居るん?
302デフォルトの名無しさん (アウアウウー Sa5b-ueyd)
2019/10/16(水) 18:50:39.66ID:QVKO1shPa
>>295
ダサくてもそれが今の実力だからな
303デフォルトの名無しさん (ワッチョイ 9fda-OHYr)
2019/10/16(水) 19:41:40.73ID:3AmZTcsu0
>>295
それは.NetでExcelを動かせばいいんじゃ・・。
304デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/16(水) 22:11:30.10ID:Y2Xm51x3x
>>299
値のペアを返す参照構造を作りたいんだったらワークシートを素直に使ってハッシュテーブルで運用した方がメンテ工数が少ないのでは
ワークシートはGUI化された多次元配列なのでね
セルの値の読み書きでイベントハンドラに制御が渡るのが嫌なら別だが
305デフォルトの名無しさん (ワッチョイ 5701-TO0X)
2019/10/16(水) 22:19:50.46ID:IiLmkjOX0
フィルタされたデータをシート上で複数繋がった状態で選択したとする。その場合にそれら『のみ』を取得することはできるんだろか?教えていただきたいです。
バージョンはexcel2016です。

例)
以下がフィルタされたセル。
 A1←選択
 A4←選択
 A5
上の場合にA1とA4のみを取得する。A2とA3は取得しない。
306デフォルトの名無しさん (アークセー Sxcb-FpGY)
2019/10/16(水) 22:43:21.53ID:Y2Xm51x3x
フィルタ抽出されたセル範囲だけを取得したいなら、
Range("A1:A5").SpecialCells(xlCellTypeVisible).Select

の一行で終わると思う
Range.SpecialCellsプロパティが可視セルだけを返すよう、引数に列挙定数xlCellTypeVisibleを渡せばいい
Range("A1:A5")のフィルタ範囲は必要に応じて変えてね
307デフォルトの名無しさん (ワッチョイ bfad-la4p)
2019/10/16(水) 23:52:50.60ID:e5YHiPLP0
>>289です。
わぉ!辛辣ですね。こちらで聞いて大分やりたいことが出来ましたので
後は自分で考えていきます。
参考書を聞きかじってインターネットからまるまるパクったコードをデバックしまくって改造
していきます。
ちなみに今回のコードは
LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
myData = .Range(.Cells(1, 1), .Cells(Rows.Count, 13).End(xlUp)).Value
これが正しいコードでした。
myData = .Range(.Cells(LastRow, 1), .Cells(1, 13).End(xlUp)).Value
最終列の最終行を取得してたのでそこが空白だと最終列が反映されないことが判明しました
308デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/17(木) 01:09:44.53ID:QyNdzX/10
>>307
間違ってるけど…
309デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/17(木) 01:12:20.23ID:cDk85Tz1x
>>307
読んでて頭痛のするような酷い文章だな
デバックじゃなくてデバッグだろ

しかも単なるコード改変のことをデバッグとか言ってるしさ
本気でデバッグしなきゃならないときにスキルのないこういうコピペコーダーは何の役にも立たないのに
会社の資産であるコードをこんな掲示板に晒しといて何やってんだか
310デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/17(木) 01:14:14.21ID:cDk85Tz1x
>>307
しかもコード間違ってるし
311デフォルトの名無しさん (ワッチョイ 1ead-b2ak)
2019/10/17(木) 01:19:38.31ID:KClIintl0
>>309
会社の資産でもなんでもないけど?
1から自分で休日に作ってるんだけど?会社で使うものでもないんでw
312デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/17(木) 01:23:29.50ID:cDk85Tz1x
>>311
仕事でもないのにわざわざVBAを使うってただの苦行じゃん
PythonとかJavaScriptとか使えばいいのに
313デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/17(木) 01:26:24.43ID:QyNdzX/10
インターネットからまるまるパクることを1から自分で作るとは言わない
314デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/17(木) 01:28:05.18ID:cDk85Tz1x
控え目に言ってアホだよな
315デフォルトの名無しさん (アウアウウー Sa43-pYNj)
2019/10/17(木) 07:12:10.84ID:f3ZcAy7Ha
vbaの話で別の言語とか出してマウント取りたい人って何なんだろうね
職場の同僚も大変そうw
316デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/17(木) 07:30:47.90ID:cDk85Tz1x
何か心に刺さったのかな?
他言語持ち出されたときにマウント取られたと思うのは大抵そう受け取る側に問題があるぞ
317デフォルトの名無しさん (ササクッテロ Sp47-F9Df)
2019/10/17(木) 08:03:49.72ID:p8i0Yvjup
>>316
一応ここVBAのスレだから
せめてJavascriptやPythonでExcelが扱えるようになってから来なさい
318デフォルトの名無しさん (ドコグロ MM32-i14O)
2019/10/17(木) 08:25:30.37ID:kDxfJkPvM
前提もなしに>>312みたいなこと書くやつは要らんっていう話だろ
319デフォルトの名無しさん (ワントンキン MM97-+Ykt)
2019/10/17(木) 08:36:06.38ID:GRl5SZlQM
結局なんらかの形で表データを閲覧するならエクセルで閉じた方が楽だなと思う
320デフォルトの名無しさん (ワッチョイ e36d-S3Tg)
2019/10/17(木) 10:14:17.57ID:V7Fv8DAn0
結局、表入力が簡単で確実なんだよな
なんつか心配がいらない
処理はpythonのほうが楽だがエクセル
ファイルのみで管理できるってことも含め
総合的にはVBAいいんだよね 雑な意味で
データと処理が一つにまとまってるんで
オブジャクト思考的ってか
321デフォルトの名無しさん (ワッチョイ 16da-S3Tg)
2019/10/17(木) 10:31:18.04ID:fkyJRw1v0
発音に「ャ」の要素はないかと。
322デフォルトの名無しさん (ワッチョイ e36d-S3Tg)
2019/10/17(木) 10:39:10.24ID:V7Fv8DAn0
API呼び出せるんだから
大概のことはVBAでどうにか
なってしまうんだよな。小さい会社、つまり
会社の9割以上はVBA程度で
十分なんだよな まあVBAがおもちゃで
なくてはならないって立場は分からんでもないがw
323デフォルトの名無しさん (ワッチョイ 2701-Maid)
2019/10/17(木) 15:37:20.74ID:e7g1u0+T0
エクセルの表から始まる作業ならVBAがいいとおもうよ
例えば客からの電話注文をエクセルに一度まとめていて、それを管理画面に反映させる作業とか・・・
スクリプトを動かす必要のないサイトならブラウザ開かずにボタンポチで完了するし
(いつもちゃんと登録されてるのか不安がられるが)
324デフォルトの名無しさん (ドコグロ MMea-tIsl)
2019/10/17(木) 16:07:50.37ID:gr44XWYWM
俺ならそういうのはGoogle Spreadsheet使うかな
一旦ローカルに置くのは無駄
325デフォルトの名無しさん (ワッチョイ 2701-Maid)
2019/10/17(木) 16:46:25.92ID:e7g1u0+T0
>>324
みんなエクセルで管理したがるので
326デフォルトの名無しさん (ササクッテロ Sp47-F9Df)
2019/10/17(木) 18:09:32.12ID:p8i0Yvjup
まぁVBAやって育ってくるとその内
VB.Netとかやるようになって
Web系を扱うようになると
ASP.Netとかやる機会も出て来るから
SQLと同じようにHTMLとかCSSとか
JavaScriptとか必要に迫られて
片手間で覚えるようになるから大丈夫。

別に今のままで良ければそのまま
VBAやってればいいわけだし。
327デフォルトの名無しさん (ワッチョイ 9f94-vCPd)
2019/10/17(木) 19:58:00.62ID:EDPspb6d0
VBAの最大のデメリットは何でもVBAでやろうとする脳になる事
こんな化石のような言語でやるのは苦行そのもの
今更覚える意味すらない
328デフォルトの名無しさん (ワッチョイ 9242-U7Hu)
2019/10/17(木) 20:00:11.81ID:2ydjDz1a0
そんな意味のないもののスレをわざわざ見に来る意味はあるの
329デフォルトの名無しさん (ワッチョイ 9ec6-GDtP)
2019/10/17(木) 20:41:45.44ID:j32AuqLC0
>>322
さすがにエクセルで納品ってわけにいかないから
適当にインターフェースつくるが中身はVBAで
十分ってのはあるな

>>327
そんなに言語仕様クソか?
小綺麗にまとまってると思うけどな
純粋さはないが使い勝手は悪くない
330デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/17(木) 20:55:38.52ID:a6vhi3mO0
時代遅れ感があるのと、どう書くべきかが分かりにくいのと、エラーメッセージがクソなのを除けばそこまででもないな
シートモジュールやブックモジュールが邪魔すぎる。標準モジュールだけで良かった
そしてエラーメッセージの「修正:式」はあまりに不親切。ここはアップデートかけてくれてもいいのに
331デフォルトの名無しさん (アウアウウー Sa43-hJjz)
2019/10/17(木) 21:02:24.20ID:9rn0DJ5qa
他の言語と比較すればマトモだと思う
332デフォルトの名無しさん (ワッチョイ 92da-GDtP)
2019/10/17(木) 21:18:35.64ID:uSN2w5EG0
>どう書くべきかが分かりにくいのと

それは言語の問題じゃない。

英語の文法はわかりにくい → そりゃお前が日本人だからそう思うだけだろ!
日本語の文法はわかりにくい → そりゃお前がアメリカ人だからそう思うだけだろ!
333デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/17(木) 21:22:30.75ID:a6vhi3mO0
出ました定義したがりw
334デフォルトの名無しさん (ワッチョイ 92da-GDtP)
2019/10/17(木) 22:03:59.43ID:uSN2w5EG0
>>333
え?
違うの?
じゃあわかりにくいのは、あんたの能力の問題だね。
俺にはわかりやすいから。
335デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/17(木) 22:53:38.34ID:lelQayoPx
シートモジュールとブックモジュールはただのクラスモジュールだからなぁ
コンストラクタとデストラクタがないぶんシートモジュールだけが特殊だが
336デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/17(木) 23:08:12.09ID:a6vhi3mO0
そう、オブジェクトが何か分かっていれば何の問題もない
しかし現実問題、Excelを使うのは一般事務。setっていつ使うのかなかなか理解できない層が中心なのだ
337デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/17(木) 23:49:25.80ID:lelQayoPx
implementsステートメントで組み込みのワークシートオブジェクトのインターフェースを継承すればシート用モジュールになります、って感じの仕組みならよかったよな
ユーザー定義クラスだって属性宣言を先頭に持って来ればクラス用モジュールになりますって感じの扱いで良かったし
338デフォルトの名無しさん (ワッチョイ de10-u2an)
2019/10/18(金) 00:09:11.06ID:RulO09Tc0
オマイラのスーパーテクを俺に継承してくれや。
339デフォルトの名無しさん (アウアウウー Sa43-tIsl)
2019/10/18(金) 01:12:13.81ID:Kn6PgWdna
>>338
VBAを上手く使うというのはつまるところ「可能な限りVBAを使わない」なので教えろと言われても難しいな
業務フローのレベルからVBAが最小限になるように設計するんだよ
340デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/18(金) 01:29:19.13ID:sk0uHZY+x
PowerQueryとかPowerPivotとか標準的なExcelの組み込み機能で出来る作業をVBAでやってるのを見るけどああいうのも時間の無駄だわな
341デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/18(金) 06:28:43.63ID:rwfK/g890
vbaで何でも出来るから全部vbaでやる・・・それがシンプルでカッコイイ事だと思いこんでいた時期がありました
342デフォルトの名無しさん (ワッチョイ de10-4MLx)
2019/10/18(金) 08:24:07.64ID:RulO09Tc0
武器を持った奴が相手ならVBAを使わざるを得ない
343デフォルトの名無しさん (ワッチョイ de10-4MLx)
2019/10/18(金) 08:28:11.67ID:RulO09Tc0
>>339
>>340
>>341
レスありがとう。万能なExcelに選ばれた言語、それが、VBA!

VBA王に俺はなる!
344デフォルトの名無しさん (ササクッテロル Sp47-5sgQ)
2019/10/18(金) 12:32:43.64ID:xgSV8V5dp
>>343
そんなこと言わんと
VBAをとっとと卒業してC#辺りに入りなさいな。
他の言語も勉強するとVBAのコードの組み方もガラッと変わるよ。

例えば.Net系をやればクラスやインターフェースの理解がグッと深まるから
テスト項目も減らせる組み方が出来るし、変更点の改修も少ない組み方が出来るようになる。
345デフォルトの名無しさん (ワンミングク MM42-+Ykt)
2019/10/18(金) 12:35:35.40ID:YN+VnyL5M
そういう所まで進みたい人とそうでも無い人がいるって事を理解しなよ
346デフォルトの名無しさん (ドコグロ MM32-tIsl)
2019/10/18(金) 12:45:18.66ID:dVFolCOsM
>>345
どちらにせよVBAを極めても意味はないという帰結に違いはないな
347デフォルトの名無しさん (アウアウエー Saaa-1P7U)
2019/10/18(金) 12:47:17.38ID:as8acMuSa
本当にプログラミング好きな人はVBAじゃ満足しないだろ
VBAを極めるとはどういう状態かわかりませんが
348デフォルトの名無しさん (ワンミングク MM42-+Ykt)
2019/10/18(金) 12:55:00.41ID:YN+VnyL5M
>>346
ちょっと理解出来ないです
349デフォルトの名無しさん (ワッチョイ f345-UkKt)
2019/10/18(金) 14:34:31.34ID:C4vTbpVj0
2つ質問させてください

Sub Main()
Dim n As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws1cell As Range
Dim r As Long
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(Worksheets.Count)
n = ws1.Cells(Rows.Count, 5).End(xlUp).Row + 5
For r = 1 To ws2.Cells(Rows.Count, 5).End(xlUp).Row
Set ws1cell = ws1.Range("E:E").Find(ws2.Cells(r, 5).Value, lookat:=xlWhole)'項目名が違い、達成率が100%でない場合は開始日・終了日・達成率を更新
If ws1cell Is Nothing And ws2.Cells(r, 10) < 1 Then
ws1cell.Range(ws1.Cells(n, 8), ws1.Cells(n, 10)).Value = ws2.Range(ws2.Cells(r, 8), ws2.Cells(r, 10)).Value
n = n + 1
Else'達成度が進んだ場合は開始日・終了日・達成度を更新
If ws1cell.Value = ws2.Cells(r, 5).Value And ws1cell.Offset(0, 3) < ws2.Cells(r, 8) Then
ws1cell.Offset(0, 3) = ws2.Cells(r, 8)
ws1cell.Offset(0, 4) = ws2.Cells(r, 9)
ws1cell.Offset(0, 5) = ws2.Cells(r, 10)
End If
End If
Next r
End Sub
項目名が違う時にエラーが出てしまいます
If ws1cell is nothingの部分で変数を解放しているから問題なのかと考えていましたが、ws1cell = "" , 0に書き換えてもウォッチウィンドウで見ると
set ws1cellを通った後もnothingのままになっていました
setを通れば変数を定義出来ると思っていたのですが、どのようにすれば解決できますか?
よろしくお願いします
350デフォルトの名無しさん (ワッチョイ f345-UkKt)
2019/10/18(金) 14:35:51.85ID:C4vTbpVj0
改行エラーが出てしまったため2つに分けました
VBAを使い始めて1ヶ月弱なのですがC#でエクセルを操作出来るようになりたいと考えております
VBAで作ったプログラムを元にして、C#を学ぶ方法は無いでしょうか?
書き方が全然違うとの話を聞いたので、諦めて最初から覚えるしかないかと途方に暮れております
よろしくお願いします
351デフォルトの名無しさん (ワッチョイ 92a2-r0zP)
2019/10/18(金) 14:58:09.86ID:irJy6XEP0
なんでvbaでできる事をいちいちC#でやろうとするか意味解らんよ
352デフォルトの名無しさん (スッップ Sd32-UkKt)
2019/10/18(金) 15:40:17.44ID:71CpEOK5d
今後C#を使う予定であれば、VBAで出来る事だとしてもC#を使う時間を増やした方が習得が早いと思ったからです
353デフォルトの名無しさん (ワッチョイ 1ef7-tmOE)
2019/10/18(金) 19:07:24.11ID:Kd4kiXAf0
>>349
一番目のIF文の条件間違えてね?
これだとNothingのときに中で使うことになっちゃうよ
354デフォルトの名無しさん (スププ Sd32-YrLK)
2019/10/18(金) 19:07:29.23ID:7YrisXmNd
文法が全く違う言語だから何をどう頑張ろうがベースにはできない。
せいぜい同じ結果を出せるかどうかの演習材料にしかならんよ。
355デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/18(金) 19:11:29.96ID:vO06UtuM0
>>350
覚えるっていうか移植先の作法に従って書き換えるだけ
356デフォルトの名無しさん (ワッチョイ 1ef7-V+wO)
2019/10/18(金) 19:17:45.06ID:Kd4kiXAf0
>>349 書き直すけど
If ws1cell Is Nothing And ws2.Cells(r, 10) < 1 Then は
ws1cellがNothingのときじゃないと通らない。なのにそのあとでws1cell.Range〜とかws1cell.Offsetなんてやると当然エラーになる。
Not ws1cell Is Nothing みたいに反転させないと。
357デフォルトの名無しさん (ワンミングク MM42-+Ykt)
2019/10/18(金) 19:35:18.82ID:YN+VnyL5M
セルがどういう時にnothingになるのか分かって条件に指定してるのか怪しい気がする
358デフォルトの名無しさん (ササクッテロル Sp47-5sgQ)
2019/10/18(金) 19:38:22.84ID:xgSV8V5dp
>>350
VBAやって一ヶ月ならそのままVBAやっておけばいいよ。別に急いでるわけでもないんでしょ?

VBAやってツールの幾つかでも作って、コードがそらで書けるようになったらまずVB.Netをやる。

文法はそっくりだけど構成が違うし見たこともない命令も沢山あるから多分苦労すると思う。
でもここさえ乗り越えてしまえばObject指向の何たるかが大体解るようになるからそうしたらC#に入ればいいよ。

C#はVBA→VB.Netのときとは逆に構成がVB.Netとよく似ていて文法が違う。あと型が厳しい。
でも、ま、VB.Netを覚えてしまえばC#も7割方理解したって言えると思う。

何も手を着けてない状態なら最初からC#をやることを勧めるけど
折角VBA始めたんだから遠回りにはなるかも知れないけどそういう楽な方法もあるよ。
359デフォルトの名無しさん (ドコグロ MMea-VRky)
2019/10/18(金) 20:19:32.44ID:L2N4rS5+M
それ以前に>>349
> 項目名が違う時にエラーが出てしまいます
じゃなくてどの行でどんなエラーが出てるのかを書けよ
ID:Kd4kiXAf0は超親切だからレスしてくれてるけど普通はスルーされて終わりだよ
360デフォルトの名無しさん (ワッチョイ 6f02-UkKt)
2019/10/18(金) 21:48:21.62ID:/2Um4idM0
>>356
条件が反対だったんですね…
If文の条件をもう一度書き直してみます
丁寧にありがとうございます

>>355
>>358
将来的にはエクセルに集約しすぎて重くなってしまっているデータを、誰でも使えるように軽くしたいと考えている位なので、まずはプログラムに慣れて行きます
プログラムの考え方だけでも次のステップの練習問題には使えると思うので、数をこなしてみます
ありがとうございます

>>359
すみませんでした
次から質問する時は気をつけます
361デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/18(金) 21:50:15.03ID:vO06UtuM0
>>349
関係ないけど変数の中に何か入れることを定義とは言わない
定義はDimの行でやっている
362デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/18(金) 23:10:26.23ID:3qufjhb3x
>>361
もっと細かく言うとDimでやっているのは定義ではなく、あらかじめ定義されたデータ型の適用を宣言してその型に適合したメモリ領域を確保することなんだけどな
未知の型を宣言するとエンジン側で型検査できずにコンパイルエラーになることを考えたら分かる
363デフォルトの名無しさん (ワッチョイ 124f-5sgQ)
2019/10/18(金) 23:16:13.52ID:1ynBc/Lo0
>>360
そういう目的があるならまず覚えるべきはSQLだね
VBAだろうがJavaだろうが.Netだろうが
どの言語をやっていてもデータベースを扱う限り
SQLはまず使わないことがない。

ま、中にはEntityFreamworkなんてSQLを使わずにDBに同期してデータを
引っ張るなんて場合もあったりするけどSQLは最初の内に覚えておいて絶対損はしないよ。
364デフォルトの名無しさん (ドコグロ MM32-tIsl)
2019/10/18(金) 23:22:21.64ID:dVFolCOsM
>>363
VB系言語はそれだけやってると変な癖がついて他言語への適応が困難になるから、
プログラミングの基礎の基礎だけ習得したらあまり使い込まないですぐに他に移った方がいいよ
365デフォルトの名無しさん (ワッチョイ 124f-5sgQ)
2019/10/19(土) 00:34:54.51ID:UvKzTNAx0
>>364
そこは割り切り。
どうせどんな言語やってたってちょろっとしたツールを作るには
VBAでやった方が手っ取り早いことの方が多いんだから。
どの仕事場でも大概Excelは入っているしね。

それにVB系は癖が強いから他言語の習得を阻害するというのも
個人の適応能力やセンスによるものも大きいからちょっと何とも言えないし。

むしろ俺みたいに適応力やセンスが皆無なら
やれ構造化言語だ、object指向だ、関数型言語だって変わるたびにチンプンカンプンなところから始めるから
結局否応なくその言語に合わせることになるんだけどね。
366デフォルトの名無しさん (ワッチョイ 6bce-S3Tg)
2019/10/19(土) 02:56:34.09ID:Z3LWqSJp0
.netを始める上での壁は文法や型なんかより膨大なクラスを把握することだからVBでもC#でも手間は変わらん
しかも日々増殖したり仕様が変わったりするから手に負えない
367デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/19(土) 05:58:33.57ID:4RrPMtib0
VBAは枯れに枯れた技術って意味で物凄い安定感がある

>>365
さすがに関数型言語はもう無いんじゃね?
一時遊びでlispやってたけどあれは頭の切り替えに難儀した。あれが業務だったら退職しますわ
368デフォルトの名無しさん (ワッチョイ 124f-5sgQ)
2019/10/19(土) 06:05:45.30ID:UvKzTNAx0
>>367
ちょい前までExcelに入るんじゃないかって噂で騒がれてたPython、あれ関数型言語だよ
369デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/19(土) 06:21:12.47ID:4RrPMtib0
>>368
あれ、まだ関数型言語に分類されるのか
2の頃はそうなんかなl−と思ってたけど、3になるとすっかりオブジェクト指向担ったと思っていたのに
370デフォルトの名無しさん (ワッチョイ 124f-5sgQ)
2019/10/19(土) 06:47:40.57ID:UvKzTNAx0
うーん、なんて言うか
Microsoftが出してる言語、複数やったことがある人なら何となく知ってると思うんだけど
何か中途半端にとどめておくのが好きみたいな傾向があって、

例えばVBAや旧VB6なんかでもObject指向の概念は
取り入れてるんだけどインターフェースはあるけど
.Netでいう継承は出来ないとか

.Netでも関数型言語の概念は取り入れててlinqやrambda式が使えるけどデータ分析や機械学習が
出来ないって訳じゃないけど苦手だったり。

次に何か出るときはその変のことが統合されて
いい感じになったものが出るんだろうけど
多分次もその次に出て来る新しい概念を
中途半端に取り入れたところで落ち着くような
そんなことを繰り返すような気がするね。
371デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/19(土) 06:54:51.77ID:a0xT/TLW0
>>365, >>368
Pythonが関数型とか適応力やセンスの問題じゃなくて単なるアホやろw
372デフォルトの名無しさん (ワッチョイ 124f-5sgQ)
2019/10/19(土) 07:39:52.38ID:UvKzTNAx0
>>371
何となく言いたいことは解るけど
一応パラダイム対応してるからObject指向でも書けるけど
それだけだったら他に洗練された言語いっぱいあるしやっぱり関数型色が強いしね
373デフォルトの名無しさん (アウアウエー Saaa-mdgP)
2019/10/19(土) 07:43:44.99ID:VlF8OMgza
ここの人たちはどんなシステム作ろうとしてるんだ
事務処理をちょい効率化したい程度の簡単なプログラムならVBAが最高
374デフォルトの名無しさん (ワッチョイ 124f-5sgQ)
2019/10/19(土) 08:08:42.95ID:UvKzTNAx0
>>373
そうなんだよね。
よく「別言語の〜でやれば〜行で出来るのに」って
言う人がいるけどあれは違うと思う。

VBAは凄く間口が広い言語で
EXCELが有ればどこでも組める言語。
手軽だから何かをちょろっとやらせるには
非常に使い勝手のいい言語なんだよね。
特にExcelが絡んだときは。

間口が広いってことは初心者からお年寄りまで
誰にでも優しい言語だからそりゃ至らない部分も沢山あるけど
他の言語で簡単に出来る部分でExcelが苦手な部分を
どうやっていい感じに作りこんで行くかを考えるのもまた醍醐味。

例えばXNAとかでテトリス作った後でもう一回
じゃ、今度はVBAで作って見ようかなと思わせる
何かがある言語だと思う。
375デフォルトの名無しさん (ドコグロ MM33-VRky)
2019/10/19(土) 08:10:42.89ID:Mtyg747cM
>>372
どこを見て関数型と言ってるんだ?
パラダイムとか言いたいだけやろw
376デフォルトの名無しさん (アウアウウー Sa43-r0zP)
2019/10/19(土) 10:54:26.76ID:CSoOYtrTa
VBAのいいところはほぼ会社のPCで普通にはいっているExcelでいろんなことができるようになることだろ
C#だなんだっていうやつは職場のPCにかってにVSとかいれていいとでも思ってるのかな
それをわかってないバカが多すぎ
377デフォルトの名無しさん (スフッ Sd32-S3Tg)
2019/10/19(土) 11:14:07.78ID:Vb23X7hcd
データの整理とか手作業でやらされてるのを、ちょっと自動化して楽したいだけなのに、なんでC#とか使わなあかんの
378デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/19(土) 11:32:54.08ID:a0xT/TLW0
>>376
今時のWindowsにはC#コンパイラは標準で入ってますけど?
> それをわかってないバカが多すぎ
自己紹介乙w
379デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/19(土) 11:43:29.38ID:ZEihazemx
ちょっとした処理のためにCOMのOfficeのGUIを起動させ続けなきゃいけないってのがVBAの最大の難点でしよ
単なるデータ整理をする環境として見るとOfficeは高機能すぎるし効率が悪い
PowerShellなんてWindows標準でSDKとCUIがインストールされてるしマルチプロセスもOKだからな
380デフォルトの名無しさん (ササクッテロル Sp47-5sgQ)
2019/10/19(土) 12:03:08.48ID:hNMTCzKgp
Powershellは.NetFramework抜いたらただのshell
.NetFrameworkにへばりついてるただの寄生虫
38149 (スップ Sd52-Nocg)
2019/10/19(土) 12:04:29.37ID:EjAyXMTtd
>>378
そのC#コンパイラが使いにくいw
メモ帳で頑張るのが苦痛だw
38249 (スップ Sd52-Nocg)
2019/10/19(土) 12:06:19.27ID:EjAyXMTtd
>>379
寧ろ、OfficeのGUIが起動してるのが前提だよ。
ExcelのファイルをどうにかしたいだけだったらVBAである必要全く無いんだから。
38349 (スップ Sd52-Nocg)
2019/10/19(土) 12:09:07.46ID:EjAyXMTtd
ちなみにここはVBAのスレであってExcelブックをどうにかしたいスレじゃない。
でも、なぜか競合しないのにVBAでないものを書く人が沸いてくるね。
384デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/19(土) 12:09:32.04ID:a0xT/TLW0
>>380
> Powershellは.NetFramework抜いたらただのshell
流石にそれはアホすぎ
パイプにオブジェクト流せるとか配列処理とか従来のshellとはかなり違う
385デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/19(土) 12:10:48.45ID:a0xT/TLW0
>>381
面倒と言うならわかる
VSなんて要らんよっていうだけの話だし
386デフォルトの名無しさん (アウアウエー Saaa-mdgP)
2019/10/19(土) 12:29:53.54ID:Tgsi24Yea
パワーシェルってなんだよ
難しいな
387デフォルトの名無しさん (アウアウエー Saaa-mdgP)
2019/10/19(土) 12:37:43.59ID:Tgsi24Yea
理解したわ
388デフォルトの名無しさん (スフッ Sd32-FOpr)
2019/10/19(土) 13:01:01.88ID:pCXt87yDd
>>373
開発職やってるが、Excelじゃなくて他の環境で作るべきではと思うようなシステムをExcelて依頼されることがよくある
Excelっていう環境が使う側にとっても手軽で都合がいいんだろう
389デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/19(土) 13:21:58.93ID:ZEihazemx
>>388
俺は逆に発注側だけど、Excelの方が都合が良いというより、Excelしか想像できない奴に要件整理のタスクを与えて社内稟議まで通してRFP出してしまう感じ
Excelで作ろうが他のシステムで作ろうが発注側は中身が理解できないから取捨選択すらしてない
390デフォルトの名無しさん (ワッチョイ 6bce-S3Tg)
2019/10/19(土) 13:22:25.60ID:Z3LWqSJp0
ある意味閉じた環境だからテストが楽なんだよ
もちろん完全なサンドボックスではないけど
39149 (スップ Sd52-Nocg)
2019/10/19(土) 13:27:49.07ID:EjAyXMTtd
>>388
それあるね。
ネットワークとユーザー認証絡む奴でExcelには向かないからWebとかで作った方が良いって言ったんだけどさ、予算が無いんだってさ。
392デフォルトの名無しさん (ブーイモ MM5b-4MLx)
2019/10/19(土) 13:37:35.97ID:cIlA6SsdM
csc教えてくれてありがとう。世界が広がったわ。
エクセルで社内chatアプリとか作り放題できそう。
393デフォルトの名無しさん (ワッチョイ 2701-U7Hu)
2019/10/19(土) 23:16:31.79ID:Ryiq5UZK0
A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていなければハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。

G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?

Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")

'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub

ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)

Dim Filepath
Filepath = pas_kom1

Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
394デフォルトの名無しさん (ワッチョイ 2701-U7Hu)
2019/10/19(土) 23:20:25.07ID:Ryiq5UZK0
↑393です。間違えました。訂正します
A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていればハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。

G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?

Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")

'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub

ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)

Dim Filepath
Filepath = pas_kom1

Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
395デフォルトの名無しさん (ワッチョイ 2701-U7Hu)
2019/10/19(土) 23:20:42.32ID:Ryiq5UZK0
↑393です。間違えました。訂正します
A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていればハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。

G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?

Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")

'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub

ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)

Dim Filepath
Filepath = pas_kom1

Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
396デフォルトの名無しさん (ワッチョイ 1259-YrLK)
2019/10/19(土) 23:27:37.60ID:yen3fKlK0
ハイパーリンクでどこへ飛ぼうとしているのか?
天国か?
397デフォルトの名無しさん (オッペケ Sr47-UVSK)
2019/10/20(日) 04:33:33.09ID:9oZ0eOj0r
mychkbook.activate
range~
398デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/20(日) 14:29:15.27ID:udtUjyhnx
>>395
やりたいことはこういうことかな?
処理の内容からみて、GoToでエラーハンドラに飛ばす必要はないと思う


' 開いているブックの集合に対してループを回し、順番にmyChkbookにセットして名前を調べ、test1.xlsxが見つかったらループを終了する

Dim myChkbook As Workbook

For Each myChkbook In Workbooks
If myChkbook.Name = "test1.xlsx" Then Exit For
Next myChkbook

' ループが終了した段階でmyChkbookにセットされているブックの名前がtest1.xlsxでない場合、test1.xlsxが開かれていないことを意味するので、test1.xlsxを開いてmyChkbookにセットする

If myChkbook.Name <> "test1.xlsx"
Then Set myChkbook = Workbooks.Open(pas_kom1)

' myChkbookをアクティブにしてハイパーリンクをフォローする

myChkbook.Activate
Range("G4").Hyperlinks(1).Follow NewWindow:=True
399デフォルトの名無しさん (アウアウウー Sa43-hJjz)
2019/10/20(日) 17:59:43.40ID:WrbRE/qYa
どうせ設定とかじゃね
400デフォルトの名無しさん (ワッチョイ 92ae-ZGIR)
2019/10/22(火) 08:37:21.30ID:Ppw3/Jpc0
プログラムじゃなくて、プログラミング言語とは…驚いた
学生の頃、友人がyaccとか字句解析とか構文解析とか言ってたが、その世界か…分からん

スーパー中学生誕生、プログラミング言語わずか数週間で開発、
U-22プログラミング・コンテスト2019 2019/10/21
https://www.bcnretail.com/market/detail/20191021_142131.html

「もっと人間にとって扱いやすい、自分の言語をつくってみたかった」。
10月20日に東京の秋葉原コンベンションホールで開催された第40回「U-22プログラミング・コンテスト2019」の
最終審査会で、見事、経済産業大臣賞(総合)を受賞した開成中学校3年の上原直人さん(15歳)は、
独自プログラミング言語「Blawn」を発表した。

IT業界の経営者など、並みいる審査員を驚かせたのは、完成度の高さはもちろんのこと、今年8月からわずか
数週間で完成させたスピードだった。
一次審査の応募期間7月1日〜9月2日に着想から開発、完成まで一人で仕上げたという。

◆C言語を使ったのは今年7月
それまでPythonを使っていたという上原さんは発表の中で、「今年の7月か8月にC++を始めたが、扱いにくかった。
もっと可読性の高い構文とメモリの安全性や速度を高めたいと思った」と、開発のきっかけについて語った。

質疑応答で審査員から、「7月にC++を使ったということは、Blawnはそれ以降につくられたということですか?」
と聞かれて、上原さんが「7月中旬に構想して構文解析を行って、プログラムを書き始めたのは8月ごろ」と答えると、
会場にどよめきが起きた。文句なしの受賞だった。

上原さんは、ほかにもスポンサー企業のデジタルガレージとサイボウズ2社の賞と、当日の模様を配信した
ニコニコ生放送の視聴者による賞など4冠を達成した。

Blawnの特徴は、型名の記述が一切不要、構文の可読性が高い、すべての関数/クラスがC++でいうところの
テンプレート関数/クラス、コンパイル速度と実行速度が速い、メモリが安全などだ。

また、Blawnの言語名は「Blue Lawn(青い芝)」からもじったもので、隣の芝が青く見えるほど、既存の言語の
不満を解消できるような良い言語にしたい気持ちを込めたという心憎い演出もあった。
401デフォルトの名無しさん (ワッチョイ 92a2-r0zP)
2019/10/22(火) 15:11:43.53ID:qPForpUI0
なぜ天才は日本語プログラミング言語を作ってくれないのか
402デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/22(火) 15:18:35.17ID:N/F1Z5u20
日本語プログラム言語あるけど流行ってない
403デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 15:19:56.38ID:xfWb2k0X0
変数に2バイト文字使えるだけでもかなりありがたいぞ
404デフォルトの名無しさん (アウアウウー Sa43-hJjz)
2019/10/22(火) 15:30:45.72ID:xJDh6jyea
>>401
日本語が曖昧で向いてないだろ
405デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/22(火) 15:40:40.34ID:9HPDColwx
自然言語のルールそのままでプログラミング言語を実装するわけじゃないから日本語が曖昧云々ってのはズレてる
英語のit とかtheyとかbeだって曖昧極まりないし
406デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/22(火) 16:09:09.07ID:GMYZfzoF0
>>403
> 変数に2バイト文字使えるだけでもかなりありがたいぞ
今時使える処理系の方が多いだろ
407デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 16:09:15.44ID:xfWb2k0X0
>>404みたいなのは何も考えてない+自分に自信を持てないアホだから相手しても時間の無駄だぞ
408デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 16:17:32.52ID:xfWb2k0X0
>>406
え、マジかわざわざ挑戦するようなことでもないから知らんかった、スマン
.NETはともかく他に何かあるんか?web系は全滅と思うけど変わってるのだろうか
409デフォルトの名無しさん (オッペケ Sr47-zzXu)
2019/10/22(火) 17:34:47.60ID:wz2D8YEyr
>>397 >>398
ありがとう。解決しました
410デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/22(火) 17:37:00.61ID:GMYZfzoF0
>>408
それこそVBAでも使えるしVisual Studioで使えるC/C++, C#, VB.NETはもとより、GCCとかPython3でも使える
411デフォルトの名無しさん (オイコラミネオ MM8f-XaGA)
2019/10/22(火) 17:42:31.34ID:lfmCyloCM
vlookupを最下行まで入れたくて、検索範囲を絶対参照にしたいんだけどできるの?
$maxrow$じゃだめだよね
412デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/22(火) 18:05:19.82ID:N/F1Z5u20
>>411
.Rows.Count
413デフォルトの名無しさん (ワッチョイ 92da-GDtP)
2019/10/22(火) 19:26:57.40ID:yzv1f2K60
108万行探すつもりかよww
A:Aとかじゃダメなのか。
414デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 19:34:37.46ID:xfWb2k0X0
100行しかデータが入ってなくても、A:Aみたいに列全体にすれば自動的にA1:A100みたいに解釈してくれるよ
415デフォルトの名無しさん (スッップ Sd32-Nocg)
2019/10/22(火) 20:37:15.07ID:8AVeU+tzd
>>409
どっちもあまり良いコードとは言えんよ。
activateは使わない方が良い。
その後のRangeの前を省略しない書き方のが良い。
416デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/22(火) 20:49:46.38ID:IKwAwtn1x
>>415
ApplicationレベルのWorkbookActivateイベントで何らかの処理を噛ませている可能性があるから、Activateメソッドが無意味とは言いきれない
417デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 20:51:16.87ID:xfWb2k0X0
それは考えすぎw
ハンドラまで作れる人ならこんな質問しないよ
418デフォルトの名無しさん (JP 0H82-S3Tg)
2019/10/22(火) 21:38:55.73ID:tIwQFwn0H
Excelで、「行ごとに違う色をつけるが、1行目だけ何も色を付けない」というVBAの書き方を教えてくんさい。
419デフォルトの名無しさん (アウアウウー Sa43-tIsl)
2019/10/22(火) 21:46:01.16ID:lomrvhbna
>>418
https://support.office.com/ja-jp/article/-1-行おきまたは-1-列おきに色を設定する-30002ce0-7a1c-4d70-a70c-4b6232f09f5e
VBAなど不要
どうしても一発でやりたいならマクロの記録を使えばいい
420デフォルトの名無しさん (ワッチョイ 9268-S3Tg)
2019/10/22(火) 21:48:09.80ID:fx5uI0000
>>418
3行目から始まる、4行ごとのsannpuru
色(65535の部分)はマクロの記録で取ってくれ
あともう少し真面目に聞いたほうが回答が尽きやすい


For i = 3 To 100 Step 4
Rows(i & ":" & i).Interior.Color = 65535
Next
End Sub
421デフォルトの名無しさん (JP 0H82-S3Tg)
2019/10/22(火) 22:45:35.38ID:tIwQFwn0H
>>420
すみません&有り難うございます。

具体的な目的を書かずに適当に質問してしまったのですが、やりたいことは

1.行ごとに違う色を入れる
2.1行目だけ何もしない(色を変えない)
3.2についてはIF文を使う

なのですが、3.が上手くいきません。
*************************************************************************:
Sub xxxxxxx()

Dim i As Integer
Dim z As Integer
Dim y As Integer

z = 500 '最大行数
y = 300 '最大列数

For i = 1 To z '繰り返し処理を使い、変数は1〜500
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 22 'セル範囲の指定
Next i '500行目までを22番色で埋める
For i = 1 To z Step 2 '1行飛ばしで500行目までを13番色で埋める
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 13 'セル範囲の指定
Next i

End Sub
**********************************************************************↓こういう感じのIF文を入れたい
If i = 1 Then '1行目だけ何もしない
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 00
Else
422デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/22(火) 23:10:48.22ID:N/F1Z5u20
>>421
Ifにする必要がわからない
Range(Cells(1, 1), Cells(1, y)).Interior.ColorIndex = 0 を最後に入れるか、
最初に入れてForの開始行を1にしなければいいと思うんだが
上手くいかないとはどういかないの?
423デフォルトの名無しさん (ワッチョイ 124b-+Ykt)
2019/10/22(火) 23:10:49.55ID:Qb6PF4Ej0
そもそも2行目からスタートすればいいのでは
424デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/22(火) 23:11:06.82ID:IKwAwtn1x
縞模様のテーブルスタイルをあらかじめ定義しておいて、テーブル変換してスタイルを適用してからテーブルを範囲に転換するのが一番楽だよ
425デフォルトの名無しさん (ワッチョイ 9268-S3Tg)
2019/10/23(水) 06:33:53.41ID:3xysxys80
>>421
ifは見づらいだけだよ
100%、forを2から始めた方が良い

For i = 1 To z '繰り返し処理を使い、変数は1〜500
if i >1 then
'ここに全部入れる
endif
Next i
426デフォルトの名無しさん (ワントンキン MM42-vsgv)
2019/10/23(水) 08:42:06.06ID:F6dTtsAKM
>>421
範囲内を塗るだけなら、最初のFor〜Nextはいらない。
範囲全体を22番で塗った後に奇数行に処理するのではなく、
範囲全体を13番で塗った後に偶数行に処理する、
とすれば、1行目の処理のIf文いらない。

Sub xxxxxxx()
Dim i As Integer
Dim z As Integer
Dim y As Integer
z = 500
y = 300

Range(Cells(2, 1), Cells(z, y)).Interior.ColorIndex = 13
For i = 2 To z Step 2
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 22
Next i

End Sub


>2.1行目だけ何もしない(色を変えない)
っていうのは元々色が付いていたらその色から変えてはいけないって意味だよね。
そうすると
1行目を含めて塗った後、勝手にInterior.ColorIndex = 00であったとと決めつけて処理するのはよろしくない。
427デフォルトの名無しさん (ワッチョイ 6f87-7R73)
2019/10/23(水) 08:44:11.12ID:u2hf1X8z0
>>422-425

有難うございます。
間違いなく、Forのところを2行目からにする方が簡潔でいいと思うのですが、無理矢理if文を入れるとするとどうすべきかを知りたかった部分もあったので、大変助かりました。
428デフォルトの名無しさん (ワッチョイ 6f87-7R73)
2019/10/23(水) 08:56:18.27ID:u2hf1X8z0
>>426
全く仰る通りです。
「00で塗らなければならない」ではなく、「何もしない」なのだから、そのように書くのが筋ですよね。
有難うございます!
429デフォルトの名無しさん (ワッチョイ 1ef7-V+wO)
2019/10/23(水) 09:28:03.44ID:zKPC6jha0
奇遇判定ならIfよりSelect Caseで分けると楽かな

Dim cngRng As Excel.Range
Set cngRng = Excel.Application.Range("A1:E20")
'範囲から上一列を除外
Set cngRng = cngRng.Offset(1, 0).Resize(cngRng.Rows.Count - 1, cngRng.Columns.Count)

Dim colorNum As Long
Dim r As Excel.Range
For Each r In cngRng.Rows
Select Case r.Row Mod 2 '行番号を2で割った余り
Case 0
colorNum = 1 '1=Black
Case 1
colorNum = 6 '6=Yellow
End Select
r.Interior.ColorIndex = colorNum
Next r
430デフォルトの名無しさん (ワントンキン MM42-+Ykt)
2019/10/23(水) 10:14:44.78ID:pOBwJdgAM
リーダブルコードとか読んでみたらいいんじゃないか
431デフォルトの名無しさん (ワッチョイ 6bce-S3Tg)
2019/10/23(水) 10:35:16.84ID:Bv/wwg6O0
z = 500 '最大行数

For r = 2 To z Step 2
  '偶数
Next

For r = 3 To z Step 2
  '奇数
Next
432デフォルトの名無しさん (ワッチョイ 371a-8Pqf)
2019/10/23(水) 10:39:27.17ID:9YAnqBFd0
Rangeをつかってセルの範囲を指定した後に
条件を付け加えて条件に合うまで自動で繰り返し処理を行って条件通りになった時に選択セルに文字や数字を入れるにはその下にIfとかで条件を増やしていけばいいの?
433デフォルトの名無しさん (オッペケ Sr47-UVSK)
2019/10/23(水) 12:32:05.46ID:YTHJUc03r
>>432
条件が簡単で範囲が狭ければ上にあるようにselect caseが分かりやすい
for each c in range("a5:b20")
select case c
case 1
c=c+1
end select
next
434デフォルトの名無しさん (スッップ Sd1f-5/kr)
2019/10/24(木) 12:24:28.14ID:UjAlYEh+d
>>432
選択セルに入れるというのがナンセンス。
今、ユーザーが選択したセルに入れるという処理はあり得るけど、普通は選択せずに入れる。
435デフォルトの名無しさん (ベーイモ MMff-CM8p)
2019/10/24(木) 18:18:50.61ID:uab6eG2kM
ExcelでOutlookのメールを処理することについての質問なのですが、ここのスレでよろしいでしょうか。

https://docs.microsoft.com/ja-jp/office/vba/api/outlook.items.getlast
getlastメソッドで、メールを取得するのですが、たまに取得できないことがあります。(たぶんNothing?が帰ってくる。Nothingでない可能性もある。)(メールアイテム以外でも動作確認済。)

getlastメソッドで、取得失敗した場合には5秒待機してもう一度getlastメソッドを行い、最大20回繰り返す処理にしても、たまにメールの取得に失敗します。

ログを確認すると、メールを受信した時間にエラーが起きているようでした。(自身が送信したメールであるかは未確認)

ちなみに、共有受信フォルダに対して処理を行なっています。

メールの取得がうまくいかない原因として何が考えられるでしょうか?
また対策もお教えいただければ。

よろしくお願いします。
436デフォルトの名無しさん (ワントンキン MMe7-9ZKN)
2019/10/24(木) 18:54:50.60ID:9FPqNGzPM
getlastしようとしてるオブジェクトが空なんじゃないの
当然何度やってもダメでしょうし
オブジェクトの指定を見直すしかないのでは
437デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/24(木) 21:16:31.40ID:LTozGfJsr
>>435
マクロ実行のタイミングで新着がある場合に失敗することがある
438デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/24(木) 22:19:08.24ID:k4Slgj9Ox
>>435
outlookの受信処理と競合して、完全にダウンロードされていないアイテムを掴んで処理が失敗してしまってるんじゃないかな

ActiveExplorer.CommandBars.ExecuteMso ("ToggleOnline")でオンライン/オフラインのモードを切り替えられるので、オフラインモードにしてから受信済のアイテムを操作してみたらどうかな
439デフォルトの名無しさん (ワッチョイ ff42-CM8p)
2019/10/24(木) 23:23:46.93ID:Asf3hx3R0
>>438
解決に近い具体的な解決策ありがとうございます。
少し調べてみて明日組み込んでみます!
440デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/24(木) 23:31:06.94ID:0B+H0gI/x
>>439
438をポストした者だけど、共有メールボックスではコマンドバー操作を試していないので、うまくいかなかったら申し訳ない
441デフォルトの名無しさん (ワッチョイ c31a-hRK6)
2019/10/25(金) 11:05:50.13ID:dGLThU1d0
>>434
どういう事?
442デフォルトの名無しさん (ワッチョイ 6f68-7KPZ)
2019/10/25(金) 11:29:44.18ID:cKRHja930
選択されてる範囲に勝手に入力されるのは困ると捉えるか
使う側が指定した範囲に効果を適用したいと捉えるかの違いでは
443デフォルトの名無しさん (ワッチョイ e301-X3cA)
2019/10/25(金) 22:22:49.14ID:l2RnHcFL0
>>429
むしろ遇奇なら一行ifを使ったほうが簡潔だよ

 If r.Row Mod 2 Then r.Interior.ColorIndex = 6 Else r.Interior.ColorIndex = 1

また、「colorNum」を「r.Row Mod 2」の関数とみなせば

 Dim colorNum(): colorNum = Array(1, 6) '配列で代用
 (中略)
 r.Interior.ColorIndex = colorNum(r.Row Mod 2)

という形になる。
また、「r.Row Mod *」の除数は「colorNum」の要素数なので

 Dim modSecond as Long : modSecond = Ubound(colorNum) - Lbound(colorNum) + 1
 r.Interior.ColorIndex = colorNum(r.Row Mod modSecond)

と一般化できる。
これはIf文やSelect文と違い、colorNumを与えれば三色以上にも動的に対応出来る。

>>441
Selectメソッド使わなくてもセルに入力できるよっていう話だと思う
マクロを記録すると当然セル選択(Select)も全部記録するし、「選択してから操作する」は直感的にも正しいから、
初めてVBAを触る人はSelect必須だと勘違いしやすい
実際は「マクロが動いてる様子が見れないと不安だ」っていう人も少なからずいて、わざとSelectすることはよくある
444デフォルトの名無しさん (ブーイモ MM1f-FIMf)
2019/10/26(土) 12:54:04.66ID:eBBCRY7lM
このまえ職場のITの人が
「サーバがコケた」と言ってました。
「コケた」とはなんですか?
サーバに足が二本あってその足がもつれてサーバが倒れた?
445デフォルトの名無しさん (ワッチョイ ff38-RFIa)
2019/10/26(土) 15:23:13.25ID:ByENxD/q0
すいません
「いま選択しているセル(1セルのみ選択します)の中心に、
[行の先頭(Aの左端)]から[設定されている印刷範囲の右まで]
オートシェイプの罫線を引く」
、というマクロを作成し始めているのですが、
[印刷範囲の右まで] という指定はどのように記述したらよいでしょうか?

いまのところ検索しつつ手習いでこんな記述になったのですが、

Sub マクロ名()
Dim R As Range
Set R = Selection
With ActiveSheet.Shapes.AddLine(R.Left - R.Left, R.Top + R.Height / 2, [     ], R.Top + R.Height / 2).Line
End With
End Sub

[ ]の中に[印刷範囲の右まで]という意味合いを
挿入すればできるのかしらと思っています

[Aの左端]を指定するのに
[選択範囲の右までの距離から、選択範囲の右までの距離を引いたもの]で
距離がゼロになったはウフフ としているのも
「・・・他にビシッとした命令文があるんじゃないかね」と思っているので
ここもご教示いただければ幸いです
446デフォルトの名無しさん (ワッチョイ ff95-mjLV)
2019/10/26(土) 15:26:44.03ID:a/Ne+y1n0
>>374
殿堂入りのコピペにしよう
447デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 15:51:51.18ID:LZqRDs7Rx
>>445
印刷範囲はActiveSheet.PageSetup.PrintAreaで取得できる

印刷範囲の右端列のうち選択セルRと同じ行にあるセル範囲を取得するならば、こんな感じになるかな
試してないのでうまくいかなかったらごめん

With ActiveSheet
.Cells(R.Row, .PageSetup.PrintArea.Columns(.PageSetup.PrintArea.Columns.Count).Column)

End With
448デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/26(土) 17:22:53.91ID:gStMXt400
列の右端左端の値を取ろうとxltoright/xltoleftを使ったやり方したんだけど、普通に値が入ってるのは大丈夫だったのだけど、計算式が入っているのはダメだった…

どうしたら計算式でも値が入ってる最終、最初の列の値を取れるのでしょう…
一応値貼り付けをしてみたけどダメでした。
449デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 17:42:49.95ID:r1v5ZtYZx
>>448
RangeオブジェクトのCurrentRegionプロパティで解決できる
450デフォルトの名無しさん (ワッチョイ b39e-KT7O)
2019/10/26(土) 18:39:46.37ID:iVpeMUgw0
listviewが使えない状態でフルパスをドラッグドロップで取得したいんですが可能ですか。

vbsでバッチファイル経由でも良いのですが
excel上にマクロボタンを設置し
listviewのようにバッチファイル自体にドラッグドロップするのではなく
エクセル内にドラッグドロップしフルパスを取得したいです。

ご教示お願いします。
451デフォルトの名無しさん (スップ Sd1f-mumX)
2019/10/26(土) 19:02:55.77ID:fijtr2QZd
OutlookとかVBAとかいつの時代を生きてんの?
そろそろ進もうよ
452デフォルトの名無しさん (スフッ Sd1f-omNk)
2019/10/26(土) 19:12:27.63ID:KoMfhOgAd
うちもOutlook。しかも2007
453デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 19:24:57.11ID:2Jq8ZMU0x
>>451
Office365でOutlookクライアントネイティブでマクロ実行するときもOutlook VBAが使えて便利だぞ
Excel VBAでもPowerPivotや PowerQueryみたいなモダンな機能を扱えるし何かと便利

あとVBAは古くて癖があるけど、やっぱりMS Office自体は有用だし、他言語でCOM生成したりMS Office Interopを使ったりする手間を考えたらVBAを使う手間と大差ない
454デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/26(土) 21:43:16.86ID:3NuDJQUH0
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

ちょっと頭のおかしい感じにしてみたんですけど、どうでしょう?

Sub 猿()
 '@@@@@@@@@@@@@@@@@@
 Dim 日本脳炎, 邪教, 脳梗塞
 '@@@@@@@@@@@@@@@@@@
End Sub

Sub 呪呪呪呪呪呪呪呪()
 '死死死死死死死死死死死死
 Dim あああああああああああ
 '死死死死死死死死死死死死
End Sub
455デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/26(土) 21:44:56.09ID:w2sb5QGz0
>>454
ここはExcelスレじゃない
456デフォルトの名無しさん (ワッチョイ 43c3-nkui)
2019/10/27(日) 04:54:35.83ID:iIC7Qe/E0
33sands's blog: VBAでpushやpopができる配列クラスを実装しました
http://33sands.blogspot.com/2012/03/vbapushpop.html

このブログで、VBA自作配列クラスが公開されていたようですが、ファイルが消えていました。
ここで公開されていたファイルをお持ちの方はいませんでしょうか?
457デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/27(日) 07:39:28.03ID:LP8uAzFd0
いないよw
458デフォルトの名無しさん (ワッチョイ 53ce-mjLV)
2019/10/27(日) 07:48:21.99ID:5kDmbxH+0
WebArchive
459デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 08:55:23.11ID:1nxyxlWe0
>>449
月曜日に試してみたいと思います。
ありがとうございます。
460デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/27(日) 09:08:45.25ID:7A1wEn3c0
>>456
そこに書いてある Ubound(配列) + 1 ってのは、よく見かける見る例で、
ループ内で使うと思うんだけど、毎回配列の最大数調べてたら遅くならんかなぁ。
俺は a = a + 1 にしちゃうけど、変わらんか?
461デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/27(日) 10:16:44.42ID:LP8uAzFd0
>>460
VBAでpushを実装しようと思うとこうするしかないぞ
462デフォルトの名無しさん (ワッチョイ ff01-3qLD)
2019/10/27(日) 11:21:18.40ID:vcUKQgsd0
>>460
たいして変わらんし、多少変わったとしても次の
ReDim Preserve myArray(newIndex)
に比べたらゴミ
463デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 11:24:16.68ID:1nxyxlWe0
>>449
currentregionプロパティで下記のは可能でしょうか?

ABCDEFGHI(列名)
q 12 33 q

A〜I列の内、B〜H列内で数字がある最初と最後の列番号を取得したいと思ってます。

通常では448に書いたようにB〜H列を指定して.ENDでxltoleft/rightを使い2行と2つの変数に結果を入れる事でできたのですが、計算式だとNGだったので(どちらもH列が帰ってきました)
464デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 12:19:45.36ID:jv/fzOi30
>>456
なんで作者本人に連絡取らんの
465デフォルトの名無しさん (ワッチョイ cfdd-MdJ4)
2019/10/27(日) 13:19:15.84ID:5V6/K/A10
>>463
計算結果が数値の最初と最後の列ってこと?
xlToLeft; xlToRight; はセルが空かどうかでしか判断できないから使えないでしょ?
開始列と終了列からそれぞれなめて、IsNumeric(.value) で判定しないとダメじゃないかな。
なんかいい方法あるけ?
466デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 14:10:23.14ID:lm+G5EAgx
>>456
よく見てないけど計算量最適化できてなさそうだね
467デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 14:42:36.79ID:lm+G5EAgx
>>463
CurrentRegionでは恐らく無理
下のようにループを左右両側から回して調べるしかないんじゃないかな
列番号をチェックする行に含まれるセルを選択している状態という前提です


Dim RngA2I As Range 'チェック対象行のA列からI列までの範囲
Dim i As Long 'ループ用インデックス
Dim LMost As Long '左端列の列番号
Dim RMost As Long '右端列の列番号


With ActiveSheet
Set RngA2I = .Cells(.Cells(Selection.Row, 1), .Cells(Selection.Row, 9))
End With

For i = 2 To 8
If IsNumeric(RngA2I.Item(i).Value) Then
LMost = i
Exit For
End If
Next

For i = 8 To 2 Step - 1
If IsNumeric(RngA2I.Item(i).Value) Then
RMost = i
Exit For
End If
Next
468デフォルトの名無しさん (ワッチョイ ff01-3qLD)
2019/10/27(日) 14:55:15.64ID:vcUKQgsd0
>>466
中身わからんのに計算量を推定できるとかエスパーかよw
469デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 16:12:11.26ID:jv/fzOi30
>>463
With Range("B:H")
'最初
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
'最後
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
End With

値が入ってるセルが1つも無いとエラーになるから事前にチェックしておく
470デフォルトの名無しさん (ワッチョイ cfdd-MdJ4)
2019/10/27(日) 16:59:16.22ID:5V6/K/A10
>>469
これで数値結果を返すセルを拾えるの?
文字列結果を返すセルも捕まえるみたいだけど、、
471デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 17:02:26.90ID:jv/fzOi30
数字限定?なら>>469は忘れて
472デフォルトの名無しさん (スプッッ Sd1f-mumX)
2019/10/27(日) 17:36:39.44ID:aJJKs/ARd
今の時代でマルチスレッドが使えない時点で終わってる
473◆QZaw55cn4c (ワッチョイ 7f47-U9uJ)
2019/10/27(日) 17:40:21.78ID:QYdsXE4U0
>>472
マルチスレッドプログラミングは難しいので、なにか適切な抽象化方策が言語でとられるべきかと
474デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 20:13:15.91ID:lm+G5EAgx
>>468
Redimで連続アドレス領域を都度確保するのが効率悪いって言いたいだけなんだが
475デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 20:14:07.93ID:1nxyxlWe0
>>467
やはり両方から確認しにいくのが確実ですよね。
他の部署から来るデータで2シートだけは単純に空白と数値だけなのですが、他のファイルにある1シートだけは計算式入ってたので…

まぁ、最初と最後だけ確認してから他の作業をさせればいいので、これ参考にさせていただきます。
ありがとうございました。
476デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 20:16:11.25ID:1nxyxlWe0
>>469
数値限定なんです。
さらにその数値から●を他のシートに入力していくとかいうメンドクサイ作業も待ってるという…(そっちは早々に作りましたが)

ありがとうございました。
477デフォルトの名無しさん (ドコグロ MMc7-3qLD)
2019/10/27(日) 21:21:01.09ID:rrcAfXPkM
>>474
どこからその都度確保なんて出てきたんだ?
>>456のリンク先のコードはサンプルでクラスモジュールのコードがそのままとかエスパーならわかるの?
478デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 23:13:53.49ID:lm+G5EAgx
>>476
その作業、AccessとかPowerQueryでやった方がいいんじゃないの?
VBAだと車輪の再発明になる気がするぞ
479デフォルトの名無しさん (ワッチョイ 7f4b-9ZKN)
2019/10/27(日) 23:43:54.17ID:qu9l82Nk0
面倒臭いからVBA使うんだろ
480デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 23:53:42.61ID:lm+G5EAgx
AccessやPowerQueryを知らずに言ってるんだろうがテーブルへのクエリをExcel VBAでスクラッチする方が遥かに面倒だぞ
481デフォルトの名無しさん (ワッチョイ 7f4b-9ZKN)
2019/10/27(日) 23:55:56.34ID:qu9l82Nk0
448のどこがaccess、powerquery向きなのか理解出来ない
482デフォルトの名無しさん (アウアウウー Sa27-wnNP)
2019/10/28(月) 01:11:50.89ID:DN6aA2bKa
最初からデータをDBへ入れて扱っていれば「端の値を取る」などというトンデモ要件はそもそも出てこないということだろう
業務ロジックの中でシートの右だの左だの何列目だのとシート上でのレイアウトに依存したコードが散乱するのは典型的な悪夢
483デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/28(月) 08:44:07.27ID:ECOvCBlTM
448です。
元は手作業でやっていたのを自動化?したいとかで外の会社とかも関わってるので、DB化とかそういう話になるとメンドクサイ事になるらしいです。
自分は他から来ているので、あまり口出しできない状態。

あと、作業の行にカレンダーがあって、そのカレンダーに数字が入力されてる感じです。
なので月ごとに場所が変わったりするので…
そんなのが数百行あるので、少しでもその作業の先頭列が分かれば…と思っていたのですが…
484デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/28(月) 08:46:00.28ID:ECOvCBlTM
>>482
確かに…
Excelで手作業だったって事もあって、項目によっては行が結合されていたりとかもあってさらにメンドクサイ状態。

そのへんなんとかしてほしいのだが、そうなると外の会社との折衝にもなるらしいのでNGっぽい…orz
485デフォルトの名無しさん (ワッチョイ cfd2-Z4kd)
2019/10/28(月) 11:38:38.31ID:aHKY+muw0
プログラミングスレで聞くのが妥当か分からないけど
マクロの記録を使って「データ分析」ツールをSheet1、Sheet2....Sheet13と起動していくマクロを作ろうとしてるんだけど、どういうわけか「データ分析」で生成された表が現れるSheetと現れないシートにムラがある
規則性はないように思われる
なにかわかることありますかね
486デフォルトの名無しさん (ワッチョイ c3b0-OGTw)
2019/10/28(月) 12:42:09.32ID:w6LeaWY50
Mac版でcontrol+Shift+5で%が付くようにしたのですがこの設定を元に戻すショートカットってありますか?
487デフォルトの名無しさん (ブーイモ MM1f-DyET)
2019/10/29(火) 04:42:35.22ID:pjDEMxXCM
userformの選択されているcheckboxのcaptionを変数にまとめてautofilterでデータ抽出しようとしているのですがうまくいきません
ちなみにそのような方法でautofilterをかけることは可能でしょうか?
よくわかんない質問ですいませんがよろしくお願いします
488デフォルトの名無しさん (ワッチョイ ffea-/P2k)
2019/10/29(火) 05:23:49.56ID:5vXI5Cgx0
>>487
たぶん。
確か、配列にして渡すんだったと思う。
任意の複数選択フィルタリングを記録すればどう書けばいいかすぐわかるハズ。
489デフォルトの名無しさん (ワッチョイ ffd2-hRK6)
2019/10/29(火) 17:33:39.24ID:VP7O6DBE0
看護師の勤務表を作りたいけど何からやればいいか分からないです。教えてください
490デフォルトの名無しさん (ワッチョイ ff42-cmPQ)
2019/10/29(火) 17:46:30.71ID:/hC7c7vt0
単純に勤務表ってだけなら表計算でできることなのでエクセルスレへどうぞ(厳密には表計算ですら無いけど)
VBAは大雑把に言うと表計算だけでは実現でいないことをやるための技術です
491デフォルトの名無しさん (ワッチョイ ffd2-hRK6)
2019/10/29(火) 17:51:20.57ID:VP7O6DBE0
VBA使わずに自動で1ヶ月分作れるんですか?
492デフォルトの名無しさん (スフッ Sd1f-omNk)
2019/10/29(火) 18:01:49.00ID:489rbQ/pd
Office365のカレンダーがいいよ
493デフォルトの名無しさん (ワッチョイ ff42-cmPQ)
2019/10/29(火) 18:03:40.61ID:/hC7c7vt0
その場合は必要
後出しで条件を追加すると話が長くなるし回答も二度手間になるので最初にやりたいことをきっちり説明すべし
494デフォルトの名無しさん (スッップ Sd1f-Z4kd)
2019/10/29(火) 18:11:33.96ID:NgUa+H/Id
配列に入ってる値をセルに一個ずつ入れたいのですが、

for i = LBound(配列) to UBound(配列)
Cells(i.1).value = 配列(i)
Next i

こう書くと型が違いますとエラーになります
どうすればいいですか?
495デフォルトの名無しさん (アウアウクー MM47-M947)
2019/10/29(火) 18:12:54.47ID:xRagZ8fLM
勤務表を自動で作成したいとなれば、アルゴリズムの知識がないと実装できないと思う。ナース・スケジューリング問題とか調べてみるといい。参考になる文献が出てくる。ただ、いっそのこと有料ソフトを買った方が早い気がする。
496デフォルトの名無しさん (ワッチョイ 6ff7-I5l6)
2019/10/29(火) 18:23:00.38ID:nykYL9OH0
>>494
そらi=0から始まるけどセルに座標0はないんで
497デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/29(火) 18:26:41.51ID:cRJ9A2Q6r
>>494
range("a1").resize(Ubound(配列)ーLbound(配列)) = _
worksheetfunction.transporse(配列)
498デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/29(火) 18:28:33.17ID:cRJ9A2Q6r
訂正
transpose
499デフォルトの名無しさん (ワッチョイ 6ff7-I5l6)
2019/10/29(火) 18:35:46.74ID:nykYL9OH0
Cells(i+1,1).valueかCells(1,1).Offset(i,0).valueにする
500デフォルトの名無しさん (ワッチョイ cf8e-FPtM)
2019/10/29(火) 18:36:33.04ID:CZCLEAoQ0
>>489
馬鹿は死ね
501デフォルトの名無しさん (スップ Sd1f-mumX)
2019/10/29(火) 18:41:35.33ID:VPqdpMYqd
エクセル以外のソフトをインストール出来ないってアホみたいな環境はソッコーで辞めた方が良い
VBAなんて将来性もないクソ言語を覚える意味は全くない
本当に他の開発環境は無理なの?
冗談だよね?
502デフォルトの名無しさん (ワッチョイ ffd2-hRK6)
2019/10/29(火) 19:27:11.79ID:VP7O6DBE0
>>500
おう。お前が死んどけ
503デフォルトの名無しさん (ササクッテロル Sp47-YkOl)
2019/10/29(火) 19:48:08.52ID:+Y5A9Qhrp
>>494
取り敢えずみんなが言ってる通り配列のインデックスは0から始まるし
Cellは行にしても列にしても1から始まるのでそこんとこ気をつけなければいけません。

後はセル指定する際にはブック、シートも指定しておく癖をつけておくことをお勧めします。
504デフォルトの名無しさん (ササクッテロル Sp47-YkOl)
2019/10/29(火) 19:57:54.69ID:+Y5A9Qhrp
>>501
仕事場によっては、特に銀行系は
使うもの以外勝手にインストールしてはいけないところが多々有ります。

例えばJavascriptだけ使ってればいいのに
勝手にVisualStudoやTOMCATとかをインストールすると怒られるどころか
コンプライアンスの面から仕事場を退場させられる場合もあります。

EXCELは大概どこの仕事場にも入っているから
インストールしなくても使えるだけで、
当然入れてはいけないと言われたら勝手に入れるべきではありません。

むしろ「勝手にどんどん何でもインストールしていいですよ〜」なんて仕事場があったら
そこのセキュリティはどうなってるのか疑うべきと思われます。
505デフォルトの名無しさん (ワッチョイ e394-mumX)
2019/10/29(火) 20:03:23.90ID:tCyp/No90
マクロを許可してる方がセキュリティ意識ゼロ
506デフォルトの名無しさん (ワッチョイ d363-mjLV)
2019/10/29(火) 20:06:27.60ID:b5zWL0uJ0
開発メンバーは基本何でもできるからしょうがないだろ
Excelマクロがだめなら開発環境の言語使うわ
507デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/29(火) 20:10:23.13ID:zvctnIdZ0
cmdとか使える時点でセキュリティも何も合ったもんじゃないと思うけどね
508デフォルトの名無しさん (ワッチョイ 6f01-Z4kd)
2019/10/29(火) 20:22:40.07ID:OodB9NB80
>>496
>>497
目から鱗ですありがとうございます
早速明日試してみます
509デフォルトの名無しさん (ワッチョイ 6f01-Z4kd)
2019/10/29(火) 20:28:16.99ID:OodB9NB80
>>503
ご教授ありがとうございます
めっちゃすっきりしました
やっぱり1人でうんうん悩むより聞いた方が早いですね
勉強になります
510デフォルトの名無しさん (ワッチョイ ff59-cL2I)
2019/10/29(火) 23:06:14.03ID:G3O8ZbaI0
鱗付いてるとか爬虫類かよ
511デフォルトの名無しさん (ワッチョイ cf8e-FPtM)
2019/10/29(火) 23:35:46.46ID:CZCLEAoQ0
>>502
死ね、クズ
512デフォルトの名無しさん (ワッチョイ d3da-MdJ4)
2019/10/30(水) 10:46:19.82ID:YBm8xQnu0
>>510
爬虫類のわけないだろ
513デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 10:55:31.55ID:YKBvUaHsd
>>441
>>443
少し組める人は絶対にSelectを使わないという姿勢で組むものです。
何故なら無駄である上に速度が低下するので百害あって一利無しだからです。
しかし、ごく一部Selectしないと実現出来ない処理があります。
形式を選択して貼り付ける処理などがそれです。
それから>>443さんのおっしゃるようにユーザーに選択している場所を提示するためにわざとSelectする場合もあります。
514デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 11:02:18.69ID:YKBvUaHsd
>>501
結構多いし、そもそもExcelだけでどうとでもなるから。
能力の低い奴はExcelのせいにするけど、こっちは君が対応出来ないことも出来るんだよ。

確かにどうにもならないことならその時にはじめて他のソフトを検討するけどね。
515デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 11:04:17.20ID:YKBvUaHsd
>>503
>>509
配列の設計はどうにもならんの?
別に1始まりにも出来るし、2次元にすればもっと良い。
516デフォルトの名無しさん (スプッッ Sd1f-5/kr)
2019/10/30(水) 11:07:13.09ID:YKBvUaHsd
>>504
勝手に入れる奴はそもそも居ないでしょ。
Excelは大概どこの仕事場にも入っているのは事実だけど、それが理由ではない。
入っていなければ最初から選択肢に無いし、このスレに書き込んでもいない。
517デフォルトの名無しさん (ブーイモ MMe7-DyET)
2019/10/30(水) 17:43:14.91ID:qmgosQ7XM
>>487
>>488
Dim i As Integer
Dim n As Integer
Dim 検索値(0 To 3) As String
n = 1

For i = 1 To 4

If Me.Controls("CheckBox" & i).Value = True Then
検索値(n) = Me.Controls("CheckBox" & i).Caption
n = n + 1
End If
Next i

ActiveSheet.Range("$A$1:$J$41").AutoFilter Field:=2, Criteria1:=Array(検索値), Operator:=xlFilterValues


素人ながらにこんな感じで書いてみたのですが、こうするとチェックした項目だけでなく空白セルもautofilterもかけてしまいます。
どうしたら空白セルを除外することができますか?
518デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/30(水) 20:32:13.04ID:xO9FzZTbr
end ifの前にredim preserve 検索値(i)は?
519デフォルトの名無しさん (ワッチョイ e394-mumX)
2019/10/30(水) 20:57:54.67ID:LQeJyD4+0
VBAのユーザーフォームはWindows98の時代で止まったまま
あれじゃあ恥ずかしいよね
520デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:12:32.09ID:q2N5Gpbg0
2019でファイルを開いた時に、勝手にコンボボックスのクリックイベントが発動するんだけど、何で?
もちろん、ワークブックのクラスには何も書いてない状態。
2013ではそんな事なかったと思うんだけど。
このせいで、一切編集せずに閉じようとしても、いちいち保存するか聞いてくる。
521デフォルトの名無しさん (ワッチョイ 53ea-roNU)
2019/10/30(水) 21:15:30.81ID:CYvJIfr60
>>517
だいたいそんな感じですね。
以下で行けました。(Dim文、略)
Control名いじるのが面倒なので、FrameにChkBox
つっこんで回しています。

iCnt = UserForm1.Frame1.Controls.Count - 1
ReDim ARR(iCnt)

i = -1
For Each vBuf In UserForm1.Frame1.Controls
  With vBuf
    If .Value = True Then
      i = i + 1
      ARR(i) = .Caption
    End If
  End With
Next

ActiveSheet.Range("範囲").AutoFilter _
  Field:=1, _
  Criteria1:=ARR, _
  Operator:=xlFilterValues
522デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 21:19:32.90ID:JfXI2Ieyx
>>520
アドインでアプリケーションレベルのイベントハンドラ動かしてるとかじゃないの
523デフォルトの名無しさん (ワッチョイ 6f10-NvbF)
2019/10/30(水) 21:22:06.27ID:naugAKCN0
ワークブッククラスの話までできるなら切り分ければいいのに。
524デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:37:14.35ID:q2N5Gpbg0
>>522
アドインを無効にしたり、
ワークブックオープンイベントの最初にEnd入れてみたりしたけど、ダメだった。

>>523
最悪は違う手を考えるけど、こんな変な仕様だったのか?と思って。
525デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:39:34.26ID:q2N5Gpbg0
↑ワークブックオープンイベントの最初にEndって、アドインの方ね。
526デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 21:45:25.88ID:q2N5Gpbg0
↑クリックイベントだけじゃなくて、チェンジイベントもだった。
何もチェンジしてないっての。
527デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 21:54:49.68ID:JfXI2Ieyx
>>525
Worksheet_Activateイベントあたりが悪さしてるんじゃないの
シートイベントってほんとにゴチャゴチャになりやすいから
528デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/30(水) 21:55:52.89ID:gwpyZLjKM
ある数値が範囲(***-***)や、範囲と単体の組み合わせを、カンマで区切っているのを降順に配列に格納したいけど、なんか上手くいかないです。

全部VBAでやろうとしているから…なのかな?と思い始めてます。
それ用のシートを作って、そこに1つずつ入れてソートさせた方が簡単…なのでしょうか?
529デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 22:06:31.14ID:JfXI2Ieyx
>>528
10, 5, 1-3, 6 7-9, 11
みたいに数字が並んでるのを、カンマ区切りの文字列ではなく数字の評価をした上で降順ソートしたいってこと?
まず今手元にあるコードを書いてくれ
530デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/30(水) 22:18:54.50ID:q2N5Gpbg0
>>527
それも見たけど、ないなぁ。
ていうか、コンボボックスが置いてあるシートがアクティブじゃなくても発動するし。

2013では、VBAでオブジェクトにフォーカスを移すと、
初回のみカーソルが見えなくなる現象が起きたと思うけど、
その対策として何かやってたりして。
531デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/30(水) 22:21:08.45ID:TIjegGw30
>>528
VBAでもシートに書き出してからでもどっちも大した手間は無いよ
まず範囲を1-3なら1,2,3と展開して全体をカンマ区切りだけにしてから、
前者なら配列に格納→配列の中身を降順でソート
後者ならシートに貼り付け→ソート機能使えばいい
532デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 22:34:12.92ID:JfXI2Ieyx
>>530
実装レベルでの不具合の可能性もあるし、ブックのxmlだけが壊れてる可能性もある
コンボボックス以外のオブジェクトの挙動は試してみた?
533デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/30(水) 23:11:10.26ID:iRK6fdCa0
>>529
すまん、コード会社にあるから書けないけど、やりたい事はそんな感じ。

最初にカンマでsplitして配列に入れてからfor〜nextで0からuboundで最後まで繰り返して「-」になってる範囲を数字にバラしてその間の数字を作って配列に入れ直して…

とかやってたらコードぐちゃぐちゃ、頭の中もぐちゃぐちゃに…orz
534デフォルトの名無しさん (ワッチョイ cf8e-FPtM)
2019/10/30(水) 23:22:56.07ID:rL303qhu0
>>533
馬鹿には無理ってことだよ
535デフォルトの名無しさん (JP 0Hff-Aa88)
2019/10/30(水) 23:42:55.97ID:+vGa/LGgH
ソートを自前で書くのは速度的にもメリット無いし作業シート用意した方がいいと思う
そういうとこで苦労するのはちょっと時間の無駄かなとも思うし
536デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/30(水) 23:56:52.02ID:6F3AzkQ1x
>>533
配列を作るところまでは多分いけるんだろうけど、問題はソートなんじゃないの?
配列のソートをサポートしてる.NETのArrayListオブジェクトはVBAでも使えるので、CreateObject("System.Collections.ArrayList")でインスタンス生成してAddメソッドで配列を渡して使うといいよ
Revereメソッドを噛ませてからToArrayメソッドで再度配列化して配列変数に再格納すれば一発で降順ソートされた配列を取得できる
537デフォルトの名無しさん (ワッチョイ 4a02-d0HK)
2019/10/31(木) 01:50:11.06ID:Xu0ModTh0
Excel2016/32bitで作成したマクロをExcel2019/64bitのパソコンに移動すると途中でExcel自体が落ちてしまいます
この場合、2019にしたこと、64bitにしたこと、どちらが原因と考えられるでしょうか?
538デフォルトの名無しさん (アウアウウー Sa2f-RHCh)
2019/10/31(木) 06:48:15.19ID:P+363w9Wa
そのくらいしらべられないの?
539デフォルトの名無しさん (アークセー Sx03-9ZEm)
2019/10/31(木) 08:04:58.17ID:6oU9RGLEx
>>537
動かないマクロファイルのファイル形式は?
540デフォルトの名無しさん (ワッチョイ 4a02-d0HK)
2019/10/31(木) 10:03:55.60ID:Xu0ModTh0
>>538
調べてもわかりませんでした
>>539
xlsmです
541デフォルトの名無しさん (ワッチョイ 4a02-d0HK)
2019/10/31(木) 10:04:33.47ID:Xu0ModTh0
ちなみに動く時もありますがたまに落ちるという不安定な状態です
542デフォルトの名無しさん (ワッチョイ de8e-D9gH)
2019/10/31(木) 11:41:33.83ID:EmOHV2200
また馬鹿が来た
543デフォルトの名無しさん (スフッ Sdea-t/t6)
2019/10/31(木) 12:23:33.00ID:aNgqFqurd
>>540
何をどう調べてどういう結果になったの?
544デフォルトの名無しさん (アウアウクー MM43-ppJP)
2019/10/31(木) 12:30:33.86ID:oEJHLRECM
533です。
結局分割をしたデータをセルに置いてソートをさせて配列に入れるコードで問題なく動きました。
ありがとうございました。
変にVBAてわ全てやろうとせずにすればここまで時間かけずに済んだのですね…orz
545デフォルトの名無しさん (ドコグロ MM0b-+xQI)
2019/10/31(木) 12:42:50.28ID:H1H2bMOCM
どうせマクロ作った奴が手抜きしててエラーになったらApplication.Quit()してるとかじゃね
みんなエスパーじゃないんだからコード上げられないなら自分でチマチマデバッグしなよ
546デフォルトの名無しさん (ブーイモ MMea-i/e8)
2019/10/31(木) 16:13:16.49ID:yyoRZlBtM
>>518
>>521
ありがとうございます
547デフォルトの名無しさん (ワッチョイ c605-qQ6b)
2019/11/01(金) 00:20:58.64ID:bbcNS1Ni0
VBSスレが過疎り過ぎているのとWSHのスレが無いことから、ここでVBSの質問させて下さい。

WshShellのRunメソッドを使ってTortoiseSVNのダイアログを呼び出すプログラムを書いているのですが、引数1を入れてもウィンドウが最前面に来てくれません。
Runした後にAppActivateメソッドを使ってもだめです。誰か、解決策をご存じの方、よろしくお願い申し上げます。
548デフォルトの名無しさん (ワッチョイ c610-HjOu)
2019/11/01(金) 00:46:23.89ID:txYCNlM40
tortoiseSVNとやらを触った事ないけど、
tortoiseSVNだけ起こる事象なの?他のNotepadとかでは試しました?
549デフォルトの名無しさん (ワッチョイ c610-HjOu)
2019/11/01(金) 01:08:36.00ID:txYCNlM40
spy++とかで窓id探ってapi使ってhandleできないかな
550デフォルトの名無しさん (ワッチョイ c610-HjOu)
2019/11/01(金) 01:38:24.11ID:txYCNlM40
>>536
レコードセット以外にも色んな方法があるものだね。勉強になったありがとう。
551デフォルトの名無しさん (ワッチョイ 0b7c-qp9g)
2019/11/01(金) 16:54:14.94ID:BenAXzvv0
こちらのページ(https://www.sejuku.net/blog/99122)に記載されている
PDFをテキスト抽出してエクセルに貼るマクロを利用したいのですが、
ファイルとフォルダのパスを固定した記述になっているため、
ベースとなるPDFファイルを選択できるようにしたいのですがどなたか教えていただけないでしょうか。
↓のアスタリスク部分をどうにかすればと2時間戦いましたがどうにもできませんでした...

'PDFのデータをExcelに読み込むメイン処理
Sub Main()
'PDFファイルをテキストに変換するための定数を用意
* Const fileName = "*****"
* Const folderPath = "C:\Users\*****\"
Const pdfFilePath = folderPath & fileName & ".pdf"
Const txtFilePath = folderPath & fileName & ".txt"
'PDFファイルをテキストに変換
Call convPDFtoText(fileName, folderPath, pdfFilePath, txtFilePath)
'テキストデータをExcelに読み込む
Call importTxtData(txtFilePath)
End Sub
552デフォルトの名無しさん (オッペケ Sr03-9ZEm)
2019/11/01(金) 18:51:05.73ID:tcQFOgygr
>>551
GetOpenFilenameでパスとファイル名を取得
553デフォルトの名無しさん (ササクッテロル Sp03-HTwX)
2019/11/01(金) 19:03:05.01ID:qpEsTrFRp
>>536
.Netのオブジェクトが使えるというのは
正直目からウロコだった。

いいね。.Net使いの俺からすると
機能に制限があるとは言っても有り難い。

ただ、参照設定して使っても
インテリセンスが効かないのが
ちょっと玉に瑕だけど。
554デフォルトの名無しさん (ワッチョイ 4ada-QPqB)
2019/11/01(金) 19:13:41.95ID:VrCKg/E/0
>>532
試してないけど、クリック→ドロップボタンクリックにしたら発動しなくなったから、もうそれでいいやw
1クリックで2回動くのが嫌だけど。
いちいち、2回に1回Exitする処理入れないといけないし。
555デフォルトの名無しさん (ワッチョイ 4ada-QPqB)
2019/11/01(金) 19:19:03.89ID:VrCKg/E/0
↑ダメだったwww
発動しないけど、何もしてないのに保存しますか?って聞いてくる現象が直ってないww
イベント関係ないのか。
556デフォルトの名無しさん (ワッチョイ cb01-ysfy)
2019/11/01(金) 19:19:33.63ID:uwtpA0hM0
>>553
IListインターフェースを通せばメンバが見れる
557デフォルトの名無しさん (ワッチョイ 07ce-qV4/)
2019/11/01(金) 21:38:56.17ID:GexbRJ7D0
>>553
スニペット出す方法あるよ
558デフォルトの名無しさん (ブーイモ MM27-VCHd)
2019/11/02(土) 10:38:29.89ID:Rmc9OzBRM
>>557
教えて
559デフォルトの名無しさん (ワッチョイ 0b7c-BUT5)
2019/11/02(土) 11:50:26.19ID:Wmiw+MGb0
>>552
定数を変数にしてファイル名だけの取得を別に作成したらできました!
ありがとうございました
560デフォルトの名無しさん (ラクペッ MMfb-KqWR)
2019/11/02(土) 17:21:27.20ID:ZDwGDXirM
>>557
CreateObjectせず使う方法があるのか
561デフォルトの名無しさん (スフッ Sdea-xAfC)
2019/11/02(土) 17:29:13.96ID:wtbfu1Hrd
ペニスット
562デフォルトの名無しさん (ワッチョイ ca79-fRYr)
2019/11/02(土) 17:58:11.63ID:71SUtLbe0
わかる
563デフォルトの名無しさん (アウアウウー Sa2f-wGfw)
2019/11/02(土) 18:30:05.20ID:PiAf5Ioqa
VBAスレはみんな頭悪そうだなぁ
564デフォルトの名無しさん (ワッチョイ 0668-qV4/)
2019/11/02(土) 19:38:01.12ID:iaRIGfJY0
>>561
誰もが思うよな
565デフォルトの名無しさん (ワッチョイ 4ada-QPqB)
2019/11/02(土) 19:39:08.44ID:FVhvHALx0
面白いこと考えるよな。
シートに貼ってソートか、SQLのORDER BYしか思いつかんかったわ。
566デフォルトの名無しさん (ワッチョイ 4a42-ANgw)
2019/11/02(土) 23:15:53.80ID:yMKMWSCL0
>>563
見下したところでお前のほうが格上になったわけじゃないんだぜ
567デフォルトの名無しさん (ワッチョイ 4ada-QPqB)
2019/11/02(土) 23:34:47.29ID:FVhvHALx0
ん?
>>563は、自分が頭良いとは言ってないのでは?
ここの回答者よりも高度な回答例は書けないようだし。
書けたら格上を認めてあげても良いけど。
568デフォルトの名無しさん (ドコグロ MM02-+xQI)
2019/11/02(土) 23:38:18.19ID:neC/7x9UM
>>566
いちいち構うなよ…
569デフォルトの名無しさん (ワッチョイ ca59-xAfC)
2019/11/03(日) 00:02:25.36ID:uWoEfwnV0
おならが止まらん
570デフォルトの名無しさん (ワッチョイ 1bc4-5gQh)
2019/11/03(日) 04:16:21.62ID:C9sdk88g0
ユーザーフォームが表示されてる状態でキーボードのキーの組み合わせ(ctrl+何かとか)をした際にだけ、フォーム上に表示される様にするにはどう言ったコードにすればいいでしょう?
571デフォルトの名無しさん (アークセー Sx03-9ZEm)
2019/11/03(日) 05:12:05.86ID:dj0payfvx
>>570
UserFormのKeyDownイベントで拾う
たとえばUserFormの上でCtrlキーとAキーが同時に押されたときにCommandButton1を表示するという処理なら下のようになる
押された文字キーを示すキーコードは引数KeyCodeに定数で格納されるけど、Aキー以外の文字キーにしたいなら定数は自分で調べてくれ
あと次からは何を表示したいのか目的語をきちんと書くように

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 65 And Shift = vbCtrlMask Then Me.CommandButton1.Visible = True

End Sub
572デフォルトの名無しさん (ブーイモ MM4f-VCHd)
2019/11/03(日) 05:37:41.26ID:ZKxIvhRAM
Withってコーティングの手間を省く、見映え以外に良いこと有りますか?
573デフォルトの名無しさん (ドコグロ MM02-+xQI)
2019/11/03(日) 06:42:19.84ID:RKQY4+qlM
>>572
Dim S As Xxx
Set S = Yyy
S.Abc = …
S.Def = …
より
With Yyy
.Abc = …
.Def = …
End With
の方が微妙に速いとかもあったかも
まあ気にするほどの差はない
574デフォルトの名無しさん (ワッチョイ 1bc4-5gQh)
2019/11/03(日) 08:20:53.85ID:C9sdk88g0
>>571
ありがとうございます。
今までユーザーフォームって苦手でほとんど使った事なかったのですが、今携わってるシステムは使ったほうが使い勝手良くなるので…
575デフォルトの名無しさん (ワッチョイ c610-HjOu)
2019/11/03(日) 09:38:51.22ID:459Gcksu0
まず変数名を考えなくて良いという点、
それから、end with で破棄(解放)される点
576デフォルトの名無しさん (アークセー Sx03-9ZEm)
2019/11/03(日) 13:54:04.03ID:dj0payfvx
逆にWithステートメントで取得した参照がEnd Withまで静的に保持される点は注意すべきポイントでもある

例えばWith ActiveSheet で始まるWithブロック内で他シートをアクティブにしても、ドットでアクセス提供されるメンバの親はWith宣言時点のActiveSheetになるからな
577デフォルトの名無しさん (ドコグロ MM02-l9Pq)
2019/11/04(月) 01:41:27.33ID:uMNIwQlPM
Withの読み方はウイズだと思うけど書くときの頭の中はいつもウイテンなのは俺だけなのかな
578デフォルトの名無しさん (ワッチョイ 4ada-QPqB)
2019/11/04(月) 02:38:13.83ID:C7VrCGoL0
読み方があってるかどうか不安なのはあるな。
ナンバーフォーマットローカルとか。
579デフォルトの名無しさん (ブーイモ MMea-HjOu)
2019/11/04(月) 02:46:05.97ID:Y6Gluo6PM
バリアントであってる?w
580デフォルトの名無しさん (ワッチョイ 4ada-QPqB)
2019/11/04(月) 03:13:21.06ID:C7VrCGoL0
最初は、ヤッホージャパンって何だよwwwって思ったな。
581デフォルトの名無しさん (アークセー Sx03-9ZEm)
2019/11/04(月) 03:53:28.93ID:CYpqTCzkx
むかしFalseのことファルスって読んでた
ファルスがギリシャ語で陰部を意味する単語だと知ったのは最近
582デフォルトの名無しさん (ワッチョイ 07ce-qV4/)
2019/11/04(月) 09:39:04.15ID:gB0LOFjS0
滅びの呪文
583デフォルトの名無しさん (ワッチョイ 67da-NOwR)
2019/11/04(月) 14:50:42.78ID:O9lg7NQ30
w
584デフォルトの名無しさん (ワイーワ2 FF82-Se/k)
2019/11/05(火) 18:34:38.01ID:CrKvYzfVF
DataObjectオブジェクトについて https://chiebukuro.yahoo.co.jp/

0OM
585デフォルトの名無しさん (ラクペッ MMfb-KqWR)
2019/11/05(火) 18:44:36.75ID:v4Zm9Tj+M
>>581
20年以上ファルスと読んでた。最近Youtubeでフォルスだと知った。Bluetoothを何度教えてもブルースと読む同僚を笑えない。
586デフォルトの名無しさん (スププ Sdea-uEAZ)
2019/11/05(火) 18:50:10.04ID:W9mxYkl/d
>>585
ワイの周りにもファルス詠みはたくさんいる。中高の英語の勉強で発音記号見たことあるはずなのに
587デフォルトの名無しさん (ワッチョイ 9f7c-a6AK)
2019/11/05(火) 19:54:14.94ID:zWfG7OZu0
教えてくれた先生がファルスだったので周りもみんなファルス読み
588デフォルトの名無しさん (アウアウウー Sa2f-NOwR)
2019/11/05(火) 20:22:41.01ID:JryaN2pta
上司からフォルスで教わった
589デフォルトの名無しさん (ワッチョイ 6f5f-ANgw)
2019/11/05(火) 21:16:39.16ID:rpaa5EWu0
フォルス?フォールスだろ?
英語知らんのかな
590デフォルトの名無しさん (ワッチョイ 4a42-ANgw)
2019/11/05(火) 21:29:26.89ID:hUdA7EQo0
ファーストフードがいつの間にかファストフードになってるようなもんだろ
591デフォルトの名無しさん (ワッチョイ 6f5f-ANgw)
2019/11/05(火) 21:32:19.18ID:rpaa5EWu0
いや単にバカなだけだろw
592デフォルトの名無しさん (ワッチョイ caea-lfDl)
2019/11/05(火) 22:00:02.40ID:Y2zra18+0
>>589
発音記号みると、どっちもあるみたいだね。
593デフォルトの名無しさん (ワッチョイ c610-HjOu)
2019/11/05(火) 22:35:00.66ID:ah8KxcV+0
カタカナに当てはめるんじゃないfalseはfalseだぜ
594デフォルトの名無しさん (アウアウエー Sac2-x9nz)
2019/11/05(火) 22:50:55.14ID:yUheLICMa
ファォッルスッ!
595デフォルトの名無しさん (ワッチョイ c610-HjOu)
2019/11/05(火) 22:52:22.61ID:ah8KxcV+0
ふぁっぁく!
596デフォルトの名無しさん (ワッチョイ 4aa2-aDcy)
2019/11/05(火) 23:47:59.23ID:7oZHxMow0
野球のファールみたいなもんだろ
よってファールスで
597デフォルトの名無しさん (ワッチョイ de61-DOEl)
2019/11/06(水) 06:04:23.35ID:jiZZUv+M0
LCase 関数 VBA http://vba-auto.com/lcase_function_vba/

B5F
598デフォルトの名無しさん (ワッチョイ de61-DOEl)
2019/11/06(水) 06:44:01.06ID:jiZZUv+M0
CBool 関数 VBA http://vba-auto.com/cbool_function_vba/

TDL
599デフォルトの名無しさん (ワッチョイ 4ada-QPqB)
2019/11/06(水) 19:00:52.62ID:XsHQlDv60
ん?
ムサンバニかモーサンバーニーかっていう話?
600デフォルトの名無しさん (アウアウウー Sa2f-NOwR)
2019/11/06(水) 19:53:02.84ID:3KrvKGm6a
ピッツァのことか
601デフォルトの名無しさん (オッペケ Sr0f-I9Tk)
2019/11/07(木) 00:18:34.56ID:Vgod5FHRr
すみません。
最新のWindows10でVBAを実行したところ、VBScript.RegExpのCreateObjectに失敗しました。
IEのVBS機能が無効化された影響によるものでしょうか?
回避策等ありますでしょうか?
602デフォルトの名無しさん (アークセー Sx0f-Arvb)
2019/11/07(木) 03:57:12.24ID:sFRacxbxx
>>601
試してないけどJScriptを使ったらどうかな
32bit環境ならScriptControl オブジェクトをCreateObjectで生成してJScriptの正規表現を使う
62bit環境ならMSHTMLオブジェクトでIEのエンジンのJScript実行環境を生成して、そこからJScriptの正規表現を使う
603デフォルトの名無しさん (ワッチョイ 0fcc-OQ0I)
2019/11/07(木) 19:03:46.63ID:JqbJgiKT0
同じフォルダ内の他のファイルを削除しようとすると
ファイルは削除されますが、
「実行時エラー'70': 書き込みできません。」
がでて処理が止まります。
Dim aa As String
aa = ThisWorkbook.Path & "\"
Kill aa & "*.*"

どうすれば止まらずに処理できますか
604デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
2019/11/07(木) 19:14:00.49ID:JuEkRQF70
>>603
自分の手で自分の頸を吊ってみればわかるぞ
605デフォルトの名無しさん (アークセー Sx0f-Arvb)
2019/11/07(木) 19:14:43.23ID:A6k0oUZwx
>>603
ThisworkbookそのものをKillしようとして失敗してる
606603 (ワッチョイ 0fcc-OQ0I)
2019/11/07(木) 19:37:17.46ID:JqbJgiKT0
>>605
VBAの実行ファイルを対象から外すにはどうすればよいですか?
607デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/07(木) 19:51:15.23ID:DHbfNndS0
>>606
ひとつずつ確認しながら消す
608デフォルトの名無しさん (アウアウウー Sacf-GHlP)
2019/11/07(木) 19:54:49.91ID:Hld4e4lOa
エラー処理いれる
609デフォルトの名無しさん (ワントンキン MMbf-cnl9)
2019/11/07(木) 19:56:45.33ID:5uk1oCuaM
>>603
On Error Resume Next
じゃダメなん?
610603 (ワッチョイ 0fcc-OQ0I)
2019/11/07(木) 19:57:11.59ID:JqbJgiKT0
>>608
ありがとうございます
611デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
2019/11/07(木) 20:19:39.30ID:JuEkRQF70
>>610
馬鹿は死ねよ
612デフォルトの名無しさん (アウアウウー Sacf-GHlP)
2019/11/07(木) 20:29:48.40ID:Hld4e4lOa
>>610
607のやり方がいいと思うぞ
613デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/07(木) 20:32:08.30ID:DHbfNndS0
>>609
thisworkbookを消そうとした時以外でも同じエラーが出ることがある
614デフォルトの名無しさん (ワッチョイ 8b01-U1MJ)
2019/11/07(木) 20:46:34.17ID:gQ6uYn6M0
例外前提の分岐とか一番やっちゃいけないだろ
615デフォルトの名無しさん (ワッチョイ 5bda-AXNO)
2019/11/08(金) 03:21:06.91ID:ebkgjtQt0
kill *.* とか普通は怖くてできないぞ
616デフォルトの名無しさん (アークセー Sx0f-Arvb)
2019/11/08(金) 03:24:31.82ID:TcyEUh9gx
FileSystemObjectとか使えばいいのに
617デフォルトの名無しさん (ワッチョイ ef10-wQYL)
2019/11/08(金) 07:35:20.51ID:/14Ittk50
https://gigazine.net/amp/20191107-drum-machine-in-excel
スーパーテクを俺に継承してくれw
618デフォルトの名無しさん (アークセー Sx0f-Arvb)
2019/11/09(土) 08:05:58.77ID:FLPipJw+x
>>603
Dim fso As Object
Dim fr As Object
Dim fl As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set fr = fso.GetFolder(ThisWorkbook.Path)

On Error Resume Next

For Each fl In fr.Files
If fl.Name <> ThisWorkbook.Name Then
fl.Delete
If Err.Number <> 0 Then
Debug.Print "Err.Number:" & Err.Number &" FileName:" & fl.Name
Err.Clear
End If
End If
Next fl
619デフォルトの名無しさん (ブーイモ MMbf-NtqY)
2019/11/09(土) 09:04:21.85ID:DhErEMKcM
Dim wb as Workbook
...

wbが開いているか閉じられているか確認する方法ありますか?
620デフォルトの名無しさん (ワッチョイ eff7-jCOF)
2019/11/09(土) 09:50:21.72ID:s5KKViGX0
For Each wb in workbooks で名前やパスをチェックするとか
621デフォルトの名無しさん (アークセー Sx0f-Arvb)
2019/11/09(土) 10:39:45.65ID:YT93jrBPx
>>620
そのやり方だとNASとかにある共有ファイルを他人が開いてる場合には判定不可能

>>619
対象のファイルをエクセルファイルとして開かずにVB6のOpen ステートメントの追記モードで開くのがオーソドックスなやり方
他のユーザーエンティティが編集権をロックした状態だとファイルが開けずエラーが発生することを利用する
エラーコードを調べて0より大きい場合はファイルが開かれている、そうでなければファイルが開かれていないと判断する
ただし負荷対策が最適化されていないネットワーク環境でサーバーの応答が遅くなっている場合、数分前に誰かが閉じたファイルを開いていると判定してしまうので要注意

'サンプルコード
Sub Sample()
If IsFileOpened("任意のブックのフルパス") Then
MsgBox "開かれています"
Else
MsgBox "開かれていません"
End If
End Sub

Function IsFileOpened(fliepath as String) As Boolean
On Error Resume Next
Open filepath For Append As #1
Close #1
If Err.Number > 0 Then
IsFileOpened = True
Err.Clear
Else
IsFileOpened = False
End If
End Function
622デフォルトの名無しさん (オッペケ Sr0f-I9Tk)
2019/11/10(日) 03:17:05.03ID:7c8MD0U8r
>>621
ブックを開いているときは~$ファイル名の隠しファイルが作られるからそれを見たら
623デフォルトの名無しさん (スププ Sdbf-38dS)
2019/11/10(日) 16:07:54.61ID:mlZHtGvXd
行番号が1-9まで1ずつ加算されてる中で3ごとにブロックとして処理の始点を1,4,7行にしたいんだけど行番号から式で求められないかな?
for i=1to9
if i<4 and i>0 then 処理1
elseif i<7 and i>3then 処理2
else 処理3
next i
これを分岐なしでスマートに書きたい
123456789→111444777って変換式が欲しい
624デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
2019/11/10(日) 16:20:12.48ID:ISabdlL+0
>>623
馬鹿は小学生からやり直せ
625デフォルトの名無しさん (ワッチョイ 5bda-GHlP)
2019/11/10(日) 16:45:02.84ID:3pDgk0W90
1引いて3で割った商を3倍して1を足すとか
626デフォルトの名無しさん (スップ Sdbf-IAD9)
2019/11/10(日) 16:54:56.61ID:CxUi7EKzd
VBAの時点でスマートじゃないから
627デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/10(日) 17:03:38.70ID:ER+z1tbi0
Ruby で、

( 1..9 ).each { |i| p ( ( i - 1 ) / 3 ) * 3 + 1 }
628デフォルトの名無しさん (ワッチョイ ef68-DaD1)
2019/11/10(日) 17:13:45.05ID:HO+Z4H690
何でもうすぐ無くなる言語のruby何かで答えるの?アホなの?
629デフォルトの名無しさん (ワッチョイ dbce-DaD1)
2019/11/10(日) 17:46:44.80ID:f9aUABsd0
>>623
変換するだけなら
i - (i - 1) Mod 3
で111444777になる
3つの処理に分けたいなら
Select Case i
  Case 1, 2, 3
    処理1
  Case 4, 5, 6
    処理2
  Case Else
    処理3
End Select
630デフォルトの名無しさん (ワッチョイ 5bda-AXNO)
2019/11/10(日) 17:48:13.51ID:3pDgk0W90
式を入れてもできそうだな
631デフォルトの名無しさん (アークセー Sx0f-Arvb)
2019/11/10(日) 17:55:48.55ID:CHmVk7q0x
>>623
111777999を割り出す変換式を使うのではなく、行番号を3で割った商が1の場合だけ処理を行うようにするのは駄目なの?
例えばこんな感じ

For i = 1 To 9
If i Mod 3 = 1 Then
'処理
End If
Next
632デフォルトの名無しさん (アークセー Sx0f-Arvb)
2019/11/10(日) 18:00:46.35ID:CHmVk7q0x
>>631
間違えた、3で割った商じゃなくて余りね
633デフォルトの名無しさん (ワッチョイ ef68-ojrg)
2019/11/10(日) 19:14:57.01ID:tOVYZh2e0
数独かな
634デフォルトの名無しさん (ワッチョイ 5bda-AXNO)
2019/11/10(日) 19:46:34.21ID:3pDgk0W90
j = Mid("111444777", i, 1)
635デフォルトの名無しさん (スププ Sdbf-38dS)
2019/11/10(日) 22:03:46.21ID:mlZHtGvXd
たくさんレスありがとう
>>634のが一番シンプルな気がするのでこれいただきます。

>>633
そのとおり
練習で作ってみてるんだがエスパー力に驚嘆
636デフォルトの名無しさん (ワッチョイ eff7-jCOF)
2019/11/10(日) 22:35:02.94ID:bOxdjs7b0
for i =1 to 7 step 3
637デフォルトの名無しさん (スププ Sdbf-38dS)
2019/11/11(月) 06:13:38.55ID:3IE5w81qd
( x - 1 ) mod stepNum + minNum
例えば0123456789を3ずつカウントアップすると000333666になる
638デフォルトの名無しさん (アウアウウー Sacf-g+oF)
2019/11/11(月) 06:30:01.29ID:Q8KRogaUa
>>637
何故馬鹿は聞かれてもいない事をこたえてしまえのかw
639デフォルトの名無しさん (ワッチョイ ef68-ojrg)
2019/11/11(月) 08:49:23.01ID:P0z5I7y60
>>635
1-9, 3毎, ブロック
こんだけあれば可能性として浮かぶよ
640デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/11(月) 19:59:18.13ID:oGPuZ3IA0
>>637
>>625をやろうとしてる?
641デフォルトの名無しさん (ワッチョイ 4bc4-PySg)
2019/11/11(月) 21:20:23.51ID:ar1IlrsX0
ブックAのUserFormのボタンから1つ下のフォルダに入っているブックBのUserFormを起動させたいのだけど、
ネットで探した「Application.run Thisworkbook.path & "\〜\ブックB!subプロシージャ名"」というのを記載して実行させたけど、
エラーになってしまいましたが、これはどこが悪いのでしょう…
642デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/11(月) 21:24:34.26ID:oGPuZ3IA0
>>641
パス、プロシージャ名、引数のどれかが間違ってる
643デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/11(月) 21:26:03.11ID:oGPuZ3IA0
拡張子も付いてないな
644デフォルトの名無しさん (ワッチョイ 4bc4-n17R)
2019/11/11(月) 21:56:10.05ID:ar1IlrsX0
>>643
.xlsm!〜でもやってみたのですがダメでした。
645デフォルトの名無しさん (ワッチョイ 4bc4-n17R)
2019/11/11(月) 21:58:12.61ID:ar1IlrsX0
ちなみに、workbook_openのプロシージャは直接subプロシージャ名を指定してもブックが開く時には通るって考えでいいんですよね?
646デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/11(月) 22:22:57.09ID:oGPuZ3IA0
>>644
パスを'で括る
647デフォルトの名無しさん (ワッチョイ 0b2c-38dS)
2019/11/11(月) 22:26:38.25ID:m+wKVDU/0
>>640
たぶんそうじゃない?
648デフォルトの名無しさん (ワッチョイ 4bc4-n17R)
2019/11/12(火) 02:24:55.99ID:oo4izA1E0
>>646
application.run 'thisworkbook.path & "ブックB.xlsm'!subプロシージャ"
って書けばいいのでしょうか?
649デフォルトの名無しさん (ワッチョイ 8b01-U1MJ)
2019/11/12(火) 04:29:40.38ID:0+gbLwkM0
>>648
先頭のシングルコーテーションは&演算子で結合する

application.run 'フルパス'!プロシージャ名
という形になるようにする
650デフォルトの名無しさん (アウアウクー MM0f-n17R)
2019/11/12(火) 08:36:17.42ID:l0mUz5CNM
>>649
やってみます!
ありがとうございます。
651デフォルトの名無しさん (アウアウクー MM0f-n17R)
2019/11/12(火) 08:50:10.74ID:l0mUz5CNM
>>649
シングルクォーテーションにしたら…コメントアウトになりません?
…今気がついたけど…
652デフォルトの名無しさん (アウアウクー MM0f-n17R)
2019/11/12(火) 08:58:18.88ID:l0mUz5CNM
>>649
すみません、自分の早合点でした。
"'" &でやればシングルクォーテーション使えましたね…
653デフォルトの名無しさん (ベーイモ MM7f-tVd4)
2019/11/12(火) 10:11:19.95ID:n8VUgOjjM
スレチですまん。
俺はVBAをやってるが上司から言われました。(うちの部署、10名のうち、VBAを作れる人は二人だけ、、、)

AIが集計をしてくれるからEXCELは必要ない時代が来るねと言ってた。

反論出来る?
654デフォルトの名無しさん (ワントンキン MM7f-Uxmt)
2019/11/12(火) 10:27:44.24ID:9Ebm7+hvM
楽しみですねと答える
655デフォルトの名無しさん (アウアウクー MM0f-n17R)
2019/11/12(火) 10:28:50.68ID:l0mUz5CNM
まぁAIが台頭してくる頃にはその上司は居ないだろうからスルーでいいんじゃない?

それかそのAIの設定?は誰がやるんだよっ!
そんな事も分からん様なヤツの方が必要なくない?ってw
656デフォルトの名無しさん (ミカカウィ FF4f-keNo)
2019/11/12(火) 11:50:40.50ID:PU6pNSMVF
AI以前に、最近のDXの流れでシステムが合理化されていって、VBAでやってるような無意味な業務自体が消滅するのが先だろうね
657デフォルトの名無しさん (アウアウエー Sa3f-awm9)
2019/11/12(火) 13:09:11.37ID:YXMhvVfEa
AIってまたざっくりしてるなぁ
658デフォルトの名無しさん (ドコグロ MM8f-keNo)
2019/11/12(火) 13:51:05.18ID:kiUdBOPaM
○データフロー中に存在する、辻褄合わせのためのデータ加工
→業務フローの見直し、システムの改善、ETLツールの導入等により脱VBA
○ルールベースで実施可能な、機械的な意思決定のためのレポート作成
→完全な自動化により脱VBA
○ルールベースでは困難な、人間的判断を必要とする意思決定のためのレポート作成
→BIツール等に置き換えて脱VBA
AIを使うとしたらこの3番目だけど、そこまでいく前にやるべきことはいくらでもある
それをやり尽くしてAIの導入を検討する頃にはVBAなんかとっくに無くなってるはずだから、VBAとAIが直接競合することなんて無いよ
659デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)
2019/11/12(火) 14:15:36.08ID:fOVSc9po0
現在のAIが何をやってるか知らない馬鹿ども
660デフォルトの名無しさん (オッペケ Sr0f-NaRu)
2019/11/12(火) 19:55:22.11ID:CeIzlsxBr
VBAが必要ないじゃなくて、EXCELが必要なくなるだからな
人間が介在する限り、なんらかのUIは必要なわけで、AIとEXCELはまったく競合しないわな
661デフォルトの名無しさん (ワッチョイ 9f42-msxt)
2019/11/12(火) 21:10:30.98ID:6BPOxo4o0
昔のSFみたいに透明なパイプを空飛ぶ車が走ったりロボットが何でもやってくれる世界を想像しているようなもんだろ
残念ながら現実は違ったよな
662デフォルトの名無しさん (ササクッテロレ Sp0f-9pxj)
2019/11/12(火) 23:57:00.45ID:NVQBnRcZp
構文ミスって無限ループが発生した時にエクセルが固まるやつはなんか対策ないんか?
663デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/13(水) 01:01:43.28ID:1iCOkal60
>>662
Esc連打したり他のウィンドウをアクティブにしたりを繰り返してみる
664デフォルトの名無しさん (ベーイモ MM7f-tVd4)
2019/11/13(水) 08:52:45.90ID:dBffRhEVM
VBAよりPythonを覚えた方がいいなぁ。
665デフォルトの名無しさん (スフッ Sdbf-DaD1)
2019/11/13(水) 09:27:16.58ID:QPrlUzWZd
>>661
交通事故をなくすには車を隔離してパイプの中を走らせるのが一番
ただしあと300年かかる
666デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/13(水) 09:50:15.66ID:zYuYteZMM
>>664
低学歴がPythonやっても仕事無いぞ
667デフォルトの名無しさん (ワッチョイ fb7c-t5zK)
2019/11/13(水) 11:30:26.61ID:0dM9Rqjm0
いつかはExcelもPCも必要なくなる時代は来るだろうけど今は必要だからな。データ管理する以上はExcel、Accessは最後まで残りそうだけどな。
将来的に事務職がなくなれば、事務管理してる上司もいらないから、新しい仕事探したほうがいいね
Pythonだけ出来ても仕事ないよ
668デフォルトの名無しさん (ワンミングク MMbf-Uxmt)
2019/11/13(水) 12:06:34.79ID:gzl4+/xqM
faxすら無くせないのに
669デフォルトの名無しさん (アウアウエー Sa3f-awm9)
2019/11/13(水) 13:00:27.19ID:cKfGi7tYa
PC無くなるのはまだ随分先だろ
670デフォルトの名無しさん (スップ Sdbf-DaD1)
2019/11/13(水) 13:55:43.47ID:aJh4//42d
紙の書類を茶封筒で送る郵便すら生き残ってる
671デフォルトの名無しさん (アウアウウー Sacf-ayYe)
2019/11/13(水) 15:18:04.61ID:WJRWmFcXa
学校で奨励されたためにVBAエキスパートを受験しようと思いましたが、仮にスタンダードまで合格すれば理解度はどの程度にまで到達するのでしょうか?
672デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/13(水) 15:26:24.21ID:zYuYteZMM
その時点で世の中の自称VBAプロの半数以上よりは上だと思う
世の中のVBA使いのレベルは想像を絶するほど低いから、
少しでも何が役に立つもの作れるようになったら「VBAを使いこなせます」と言っちゃっていいよ
673デフォルトの名無しさん (ワッチョイ eff7-jCOF)
2019/11/13(水) 16:25:53.60ID:WaSRdoWP0
エキスパート持ってるけどやっぱり試験用の知識って感じだよ
つまらん関数の引数とか
PC環境あれば簡単に確認できるものを暗記でやる感じ
674デフォルトの名無しさん (ワッチョイ 9fda-AXNO)
2019/11/13(水) 19:26:09.82ID:YFdnwmN50
VBAエキスパートなんかあるのか・・。
VBエキスパートではなく。

トランスフォーマー検定じゃなくて、
トランスフォーマーガム検定みたいな感じか?
違うか。
675デフォルトの名無しさん (エムゾネ FFbf-/3O/)
2019/11/13(水) 19:34:50.53ID:8BkVy1q9F
求められるのはVBAエスパー
676デフォルトの名無しさん (ワッチョイ 2be5-NsPY)
2019/11/13(水) 19:58:58.25ID:YIACCBmB0
A列で適当な色でフィルターをかけて、B列の可視セルをC列の値✕D列の値にする場合はどうすれば良いでしょうか。
for each in specialcells(xlCellTypeVisible)
b.value=c.value*d.value
next
にしていますが、データ2000くらいあるとと遅いです。
b.specialcells(xlCellTypeVisible).value=を用いれば早くなりそうですが、よく分かりません。
分かる方いましたら教えて下さい。
677デフォルトの名無しさん (ワッチョイ 9fda-AXNO)
2019/11/13(水) 20:10:53.70ID:YFdnwmN50
何だそりゃww
可視セル以外は計算しちゃいけないのか?
計算してもいいなら、全部配列に入れて計算しちゃえば?
678デフォルトの名無しさん (ワッチョイ 2be5-NsPY)
2019/11/13(水) 20:15:05.26ID:YIACCBmB0
>>677
早速の返信ありがとうございます。
可視セル以外は変更してはだめなんです。
後だしになるんですが、黒でフィルターしたらC✕D、白ならC-Dと処理が違うためです。
679デフォルトの名無しさん (オッペケ Sr0f-NaRu)
2019/11/13(水) 20:15:12.55ID:6AWs9S2tr
>>676
B列にはじめから計算式入れとけば良いんじゃ
680デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/13(水) 20:23:26.06ID:1iCOkal60
>>678
フィルタいらなくない?
色で計算変えればいいだけじゃない?
681デフォルトの名無しさん (ササクッテロ Sp0f-jIeE)
2019/11/13(水) 21:12:54.98ID:xS2J4sOcp
質問失礼します。
vbaからc++のdllへ引数を渡してc++で処理し、配列をvba側に返したいです。
引数で渡すものは、配列ではありません。

文字列や数値をvbaで受け取ることは出来るのですが、配列はどのようにc++から受け取れば良いのでしょうか?

お願いします。
682デフォルトの名無しさん (ワッチョイ 2be5-NsPY)
2019/11/13(水) 21:45:08.38ID:YIACCBmB0
>>679
>>680
ボタンを押した時だけ変更するようにしたいので、式を入れるのは難しいかと思います。
またまた後だしになるんですが、他にも色々ボタンを配置して、このボタンを押すとB=Cとしたり、こっちのボタンを押すとB=1.1*Dという感じにしています。
683デフォルトの名無しさん (ワッチョイ fb7c-Sray)
2019/11/13(水) 21:50:01.18ID:1iCOkal60
>>682
だからボタン押した時色によって計算変えればいいじゃないかと
684デフォルトの名無しさん (ワッチョイ 6b01-lZUE)
2019/11/13(水) 22:20:19.63ID:nTBpuTY40
このスレって北海道のハゲのおっさん来てるの?
685デフォルトの名無しさん (ワッチョイ 02da-6HYk)
2019/11/14(木) 20:59:40.88ID:17R2nmHB0
>>682
色以外にフィルタをかけられる要素は無いの?
あるなら、一旦解除して配列に入れて、該当行だけ計算して、またセルに戻して再度フィルタ。

>>681
普通に受け取れると思うけど。
ByRef的に受け取るの?
686デフォルトの名無しさん (オッペケ Sr11-CPZv)
2019/11/15(金) 05:48:17.81ID:yBQ3/wSNr
>>676
for eachループを
range(cells(2,2),cells(10000,2).end(xlup)).specialcells(略).formula="=C2*D2"
687デフォルトの名無しさん (ワッチョイ 3901-u6X5)
2019/11/15(金) 06:53:06.51ID:PYCwQdmA0
このスレって北海道のハゲのおっさん来てないの?
688デフォルトの名無しさん (JP 0H96-XgEr)
2019/11/15(金) 08:30:23.58ID:1eiULMc8H
>>687
こんなとこでハゲ友おっさんずラブっすかw
689デフォルトの名無しさん (スップ Sda2-sGiA)
2019/11/15(金) 09:09:18.54ID:kdsqvzvNd
>>671
昔、某掲示板で質問してた奴が、欲張らずに基礎からやった方が良いと言われてエキスパート持ってるんですけどねと言ってた人がいた。
そんな感じかな。
690デフォルトの名無しさん (ワンミングク MMd2-NlRl)
2019/11/15(金) 09:16:55.98ID:QHXNBkQLM
vbaスタンダードの教材の目次見たけど基礎というか普通に初心者向けという感じがした
逆にこういう内容飛ばしてどうやって使ってるんだろう
691デフォルトの名無しさん (ワッチョイ 02da-6HYk)
2019/11/15(金) 18:37:41.87ID:C4049C6d0
基礎からやるの、良いと思うけどな。
基礎を無視した俺は、ADOもWinAPIもUiAutomationも使えるが、
プロシージャの意味を20年くらい知らなかったぞ。
692デフォルトの名無しさん (ワッチョイ 3901-u6X5)
2019/11/15(金) 18:58:40.00ID:PYCwQdmA0
スーパーつるっぱげ
693デフォルトの名無しさん (アウアウウー Sa45-dd3P)
2019/11/16(土) 13:07:26.06ID:sIw2xRM6a
VBAスレ民はマジで頭弱めだな
694微糖 (ワッチョイ 2eda-zGDE)
2019/11/16(土) 20:01:13.26ID:Owph/MuN0
「置換したい文字列」と「置換文字」を変数として扱って、全体の文字を出力することはできませんか?
Replace関数では、Replace(文字列, 検索文字, 置換文字)とありますが、
文字列の入った変数を第一引数に与えるエラーが出てしまいます。

最終的な目的として、エクセルで定型的なHTMLコードを出力したいのです。
何かよい策がありましたら教えてください。

Sub 企業情報コピーテスト()
Dim i As Long
Dim s1 As String
Dim excelldata1 As String
Dim excelldata2 As String
....
s1 = HtmlSorce.Cells(2, 2).Value
'企業名
excelldata1 = Sheet1.Cells(4, 4).Value
'資本金
excelldata2 = Sheet1.Cells(5, 4).Value
Replace(s1,"tabledata1", excelldata1)

Debug.Print (s1)
End Sub
695微糖 (ワッチョイ 2eda-zGDE)
2019/11/16(土) 20:02:05.70ID:Owph/MuN0
■HtmlSorce.Cells(2, 2)に入っているデータ■
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>企業名</td>
<td>
tabledata1
</td>
</tr>
<tr>
<td>資本金</td>
<td>
tabledata2
</td>
</tr>
....
</tbody></table>

///////////////////////////////
こんな感じです。どうぞよろしくお願いいたします。
696デフォルトの名無しさん (ワッチョイ 65ce-iGNt)
2019/11/16(土) 20:06:56.33ID:sGW0vpYA0
>>694
関数の結果を入れる変数が抜けてる
コートは精査してないけど、とりあえずこれでいいんじゃね?
s1 = Replace(s1, "tabledata1", excelldata1)
697デフォルトの名無しさん (ワッチョイ cd7c-/PCw)
2019/11/16(土) 20:08:04.72ID:TSYRRFtw0
>>694
普通はエラー出ない
698微糖 (ワッチョイ 2eda-zGDE)
2019/11/16(土) 20:10:44.84ID:Owph/MuN0
すいません。できた 私はあほでした。
s1 = Replace(s1,"tabledata1", excelldata1)
で出力できました。
699微糖 (ワッチョイ 2eda-zGDE)
2019/11/16(土) 20:11:37.38ID:Owph/MuN0
みんな、早い。。ありがとう。。
700デフォルトの名無しさん (アークセー Sx11-CPZv)
2019/11/17(日) 03:29:18.67ID:2cbrHYYdx
レンダリングエンジンとしてExcelを使ってるの?
つらすぎるなそれは
701デフォルトの名無しさん (ワッチョイ 224b-NlRl)
2019/11/17(日) 04:16:20.60ID:ssaK56un0
レンダリングエンジンの意味間違ってるよ
702デフォルトの名無しさん (ワッチョイ 65ce-iGNt)
2019/11/17(日) 06:32:04.83ID:xHzCYEPp0
使ってるかどうかは、これだけじゃ判断できない
可能性はあるけど断言はできないから
703微動 (ワッチョイ 2eda-zGDE)
2019/11/17(日) 11:35:29.77ID:7JpkRiZ80
わたくしのことですか??

コーディングは、いつもAtom使って手打ちしてるよ。
ただ、定期的にエクセルで入稿してくる案件があるので、
毎回エクセルからデータを手作業でコピペするのがしんどくて
コピペミスもあるし。
VBAでまるっとタグが出力できればいいなと。

他に良い方法がみあたらないし、これがベストかと。

思ってるとこでし。
704デフォルトの名無しさん (アウアウウー Sa45-woiy)
2019/11/17(日) 11:38:28.01ID:iKuebie5a
Atomとか久しぶりに聞いたな
VSCodeに完全敗北して利用者がほとんど乗り換えた挙げ句に開発元がMSに買収されて完全に開発も終わった死んだエディタだよ
705微糖 (ワッチョイ 2eda-zGDE)
2019/11/17(日) 11:47:05.51ID:7JpkRiZ80
そんなこといわなくても、、、
web系は、sublimetext か Atom が多いと思う。まれに秀丸さんもいるお。
706デフォルトの名無しさん (ワッチョイ cd7c-/PCw)
2019/11/17(日) 11:51:44.83ID:+9SinR1u0
>>705
そいつは触らなくていいやつだよ
707微糖 (ワッチョイ 2eda-zGDE)
2019/11/17(日) 11:52:22.26ID:7JpkRiZ80
ここらへんにいらっしゃるかたは
R列が何番目か直ぐに頭にでてくるのかしらん。

セル選択したら、行列番号がすぐわかる表示設定あるといいですねえ。
708デフォルトの名無しさん (ドコグロ MM49-woiy)
2019/11/17(日) 11:52:40.84ID:RwF92niuM
いつの話だよ
Web系のAtomユーザーはほとんどVSCodeに乗り換えたよ
709デフォルトの名無しさん (ワッチョイ 86c9-jvSr)
2019/11/17(日) 12:25:47.38ID:sTIVZZab0
>>707
エクセル 列の表示を数字とアルファベットで切り替える
https://www.tipsfound.com/excel/01204
710デフォルトの名無しさん (アークセー Sx11-CPZv)
2019/11/17(日) 12:31:12.53ID:Sxy4Nq05x
>>707
言ってることがよくわからんけど↓みたいにVBEでコンソール出力するのは駄目なの?
?Selection.Item(1).Row & ", " & Selection.Item(1).Column
711微糖 (ワッチョイ 2eda-zGDE)
2019/11/17(日) 12:46:43.50ID:7JpkRiZ80
いろいろ提案ありがとうございます。
普通に対応表を手元においときます。
712デフォルトの名無しさん (ワッチョイ cd7c-/PCw)
2019/11/17(日) 13:14:49.52ID:+9SinR1u0
>>707
A1とR1C1表示を切り替えられるショートカット作った
713デフォルトの名無しさん (ワッチョイ e9f1-Xz/Q)
2019/11/17(日) 13:37:03.64ID:3mRPp1GD0
まれに禿もいるよ
714デフォルトの名無しさん (ワッチョイ e9d2-gqPR)
2019/11/17(日) 14:08:51.89ID:1WE0juC20
>>707
1行目に連番を振っておく
715デフォルトの名無しさん (ワッチョイ c668-iGNt)
2019/11/17(日) 15:12:07.26ID:6UewZHZj0
>>707
機能はいらんかな。見たくなったらcolumn()入れてる
716デフォルトの名無しさん (ワッチョイ 3901-0xny)
2019/11/17(日) 18:02:42.14ID:iBcgGvQr0
北海道のグラサンの禿はここにきてないの?
717デフォルトの名無しさん (ワッチョイ 05da-6HYk)
2019/11/17(日) 19:02:54.92ID:FdUgz5q60
俺も=Column()入れてるわ。
ていうかね、何でどっちか片方だけなんだよ。
A(1)、B(2)とか両方表示するモード付けりゃいいのに。
718デフォルトの名無しさん (ワッチョイ c668-iGNt)
2019/11/17(日) 19:28:55.74ID:6UewZHZj0
>>717
おーそれいいね
ややこしかったらツールチップみたいに、ポイントした時に出てくるとかでも良い
719デフォルトの名無しさん (アークセー Sx11-CPZv)
2019/11/17(日) 19:33:09.97ID:Sxy4Nq05x
現状自作するしかないわな
720デフォルトの名無しさん (ワッチョイ 8201-0xny)
2019/11/17(日) 19:38:26.25ID:SNu9npot0
むしろ列番号が必要なことって少なくね?
721デフォルトの名無しさん (ワッチョイ c668-iGNt)
2019/11/17(日) 19:43:53.48ID:6UewZHZj0
indirectやVBAで古いデータを整備する時にたまに必要になる
722デフォルトの名無しさん (JP 0H92-iGNt)
2019/11/17(日) 22:37:01.66ID:8Px/zAQ8H
1行目1列目にランダムに数字が入力されている表において、その数字を上から順番に足して2列目にその合計を表示させるにはどう書けばいいでしょうか?(下みたいな感じで)

1列目 2列目
--------------------
4     4
7     11
8     19
12    31
15    46
2     48
723デフォルトの名無しさん (ワッチョイ 224b-NlRl)
2019/11/17(日) 22:40:14.20ID:ssaK56un0
上から順番に足して2列目にその合計を表示させればいいですよ
724デフォルトの名無しさん (アークセー Sx11-CPZv)
2019/11/17(日) 22:55:50.76ID:Sxy4Nq05x
>>722
ワークシート関数じゃ駄目なの?
725デフォルトの名無しさん (ワッチョイ cd7c-/PCw)
2019/11/17(日) 23:11:53.16ID:+9SinR1u0
>>722
左のセル+上のセル
726デフォルトの名無しさん (ワッチョイ cd7c-/PCw)
2019/11/17(日) 23:14:14.11ID:+9SinR1u0
A2から対象行までを合計
727デフォルトの名無しさん (ワッチョイ 0610-Xbus)
2019/11/18(月) 00:38:18.28ID:NH6dP3qE0
for i = 1to10
v=v+cel(i,1)
cel (i,2)=v
next
みたいな感じ?
728デフォルトの名無しさん (ワッチョイ 8279-dW04)
2019/11/18(月) 00:45:00.05ID:+I12EpJt0
なんだcelて
ちゃんと書けボケナス
729デフォルトの名無しさん (ワッチョイ 6d8e-2sI3)
2019/11/18(月) 01:27:00.60ID:pxOyK5Ui0
>>722
馬鹿は死ねよ
730デフォルトの名無しさん (ワッチョイ 822c-Lnqu)
2019/11/18(月) 04:45:54.36ID:SrAXqM1K0
Ruby で作った

nums = <<"EOT".lines( chomp: true ).map( &:to_i ) # 数字の配列。改行は削除
4
7
8
12
15
2
EOT

totals = nums.each_with_object( [ 0 ] ) {
|num, ary| ary.push( ary.last + num ) }

totals.shift # 先頭要素の0 を削除する
p totals #=> [4, 11, 19, 31, 46, 48]
731デフォルトの名無しさん (ドコグロ MM15-dzja)
2019/11/18(月) 15:14:40.58ID:ScNSEd7IM
>>722
Sub sample1()
Dim i Range
Range("B1") = Range("A1")
For i = 2 To 6
Cells(i, 2) = Cells(i - 1, 2) + Cells(i, 1)
Next i
end sub

A列が不特定多数で出力の速さを求めるのなら

Sub sample2()
Dim i Range,j Range
j = WorksheetFunction.Count(Range("A:A"))
Application.ScreenUpdating = False
Range("B1") = Range("A1")
For i = 2 To j
Cells(i, 2) = Cells(i - 1, 2) + Cells(i, 1)
Next i
Application.ScreenUpdating = True
end sub
732デフォルトの名無しさん (ドコグロ MM15-dzja)
2019/11/18(月) 15:19:20.54ID:ScNSEd7IM
間違えた

Sub sample1()
Dim i As Long
Range("B1") = Range("A1")
For i = 2 To 6
Cells(i, 2) = Cells(i - 1, 2) + Cells(i, 1)
Next i
end sub

A列が不特定多数で出力の速さを求めるのなら

Sub sample2()
Dim i As Long,j As Long
j = WorksheetFunction.Count(Range("A:A"))
Application.ScreenUpdating = False
Range("B1") = Range("A1")
For i = 2 To j
Cells(i, 2) = Cells(i - 1, 2) + Cells(i, 1)
Next i
Application.ScreenUpdating = True
end sub
733デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 15:42:28.46ID:cwF5jgoMd
>>707
VBEのメニュー上にテキストボックス作って数値とアルファベット相互変換する奴作れば。
734デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 15:43:19.48ID:cwF5jgoMd
>>720
寧ろ列番号の方が必要。
735デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 15:53:04.73ID:cwF5jgoMd
>>722
Range("B1:B10").Value="=SUM($A$1:$A1)"
'関数残したくなければ下を追加
Range("B1:B10").Value=Range("B1:B10").Value
736デフォルトの名無しさん (ドコグロ MM4a-0xny)
2019/11/18(月) 17:07:56.73ID:S9/8fJfLM
>>734
どんなときに必要なの?
737デフォルトの名無しさん (ワッチョイ eecc-7HT4)
2019/11/18(月) 18:10:29.63ID:7QICIGub0
マクロ実行ブックと同じフォルダ内にある"CCT"というブックに
1つのシートがあって、そのシートをマクロ実行ブックの"CCT1"に貼り付けたいのですが
"CCT"内のシート名が毎回変わってしまうので、変わってもコピペができるマクロをおしえてください

Workbooks.Open ThisWorkbook.Path & "\CCT", ReadOnly:=True
Sheets("*").Cells.Copy ThisWorkbook.Sheets("CCT1").[A1]
ActiveWindow.Close savechanges:=False
738デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 18:25:23.23ID:cwF5jgoMd
>>736
普通はCells(i, j)を使うから
739デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 18:33:30.81ID:cwF5jgoMd
>>737
Worksheets(1)じゃ駄目なん?
740デフォルトの名無しさん (ドコグロ MM4a-0xny)
2019/11/18(月) 19:06:26.91ID:S9/8fJfLM
>>738
まさかと思うけど、F1~X1のセルの処理を
For C = 6 To 24 ' F列からX列
~.Cells(1, C).~
Next
みたいにコーディングしてるの?
741デフォルトの名無しさん (ワッチョイ 0d7c-RQWt)
2019/11/18(月) 19:14:56.88ID:sS2XhUCG0
vbaを勉強してるのですが、specialcellsとusedrangeの違いが分からないのですが、どんな時に使い分けるのですか?
742デフォルトの名無しさん (ワッチョイ 224b-NlRl)
2019/11/18(月) 19:45:04.18ID:TkavPukF0
どっちも普段使わない
743デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 19:45:09.69ID:cwF5jgoMd
>>740
そんなものは内容による。
Range("C1")のような表現よりも数学的、座標的表現であるCellsの方を使うことの方が多いと言ってる。
744デフォルトの名無しさん (ワッチョイ cd7c-/PCw)
2019/11/18(月) 19:46:05.14ID:HkQQG0+L0
>>737
シート名かシートの順番を固定しないと無理
745デフォルトの名無しさん (ワッチョイ cd7c-/PCw)
2019/11/18(月) 19:49:12.48ID:HkQQG0+L0
>>741
specialcellsは選択範囲から取得される
usedrangeは選択範囲関係なくシート全体から取得される
746デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 19:50:38.34ID:cwF5jgoMd
>>744
シート1つしか無いと思う。
文が曖昧だから必ずそうとは言えないが。
747デフォルトの名無しさん (ドコグロ MM4a-0xny)
2019/11/18(月) 19:55:46.17ID:S9/8fJfLM
>>743
お前がそうだというだけの話なのね
748デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 19:56:31.57ID:cwF5jgoMd
>>747
そうだよ。
749デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 19:58:05.76ID:cwF5jgoMd
今までの経験上、組める奴は同意見が多いけどね。
750デフォルトの名無しさん (ワッチョイ c668-iGNt)
2019/11/18(月) 20:05:00.70ID:NN3IfGCl0
>>740
列方向だけに伸ばす事は少ないけど、

for k = 1 to 3
for i = 1 to 最終行
cells(i,k)
next
next

みたいに二重ループにすることはたまによくあるよ
751デフォルトの名無しさん (ワッチョイ 224b-NlRl)
2019/11/18(月) 20:05:54.63ID:TkavPukF0
>>737
シートが1枚しか無いならブック開いてからアクティブシート取得すればいいのでは
752デフォルトの名無しさん (スフッ Sda2-LOTu)
2019/11/18(月) 20:08:35.28ID:OvcXdQbJd
Set
753デフォルトの名無しさん (ワッチョイ 8201-0xny)
2019/11/18(月) 20:22:40.48ID:lwVIqPwD0
>>748
ならなんの問題もないな

>>749
お前の周りの話だよね?

>>750
いや、その例で
for k = 1 to 3 ' A列~C列
って書いてるってことね
754デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/18(月) 21:22:26.89ID:cwF5jgoMd
>>753
俺の周りって結構広いんで。
755デフォルトの名無しさん (ワッチョイ e194-qxAY)
2019/11/18(月) 21:40:37.27ID:/hFPyym30
Rubyなら一行で書ける程度の事をVBAは面倒だね
756デフォルトの名無しさん (ワッチョイ 8201-0xny)
2019/11/18(月) 22:02:21.62ID:lwVIqPwD0
>>754
はいはいw
757デフォルトの名無しさん (アークセー Sx11-CPZv)
2019/11/18(月) 22:39:37.88ID:VbUqW+zkx
俺はCells派
任意のセル範囲内での位置座標を相対指定できてめちゃくちゃ便利
Cells(i)もCells(i, j)もよくつかうしSelection.Cells〜とかよくやる
758デフォルトの名無しさん (ワッチョイ 0610-Xbus)
2019/11/18(月) 23:25:47.41ID:NH6dP3qE0
>>728
携帯で打ってるのに無理ゆうなよ。
759デフォルトの名無しさん (アウアウウー Sa45-4N22)
2019/11/19(火) 06:07:21.04ID:hrMAmFVPa
>>754
ウエストな
760デフォルトの名無しさん (ワッチョイ c602-jK0f)
2019/11/19(火) 09:42:21.51ID:i5CWN+mw0
>>754
カエルかな?
761デフォルトの名無しさん (ワッチョイ c6f7-G4Z9)
2019/11/19(火) 12:42:00.23ID:QxFuappz0
>>741
SpeciallCellsのほうはユーザー定義関数で使うと不具合あったはず
762デフォルトの名無しさん (オッペケ Sr11-bUGG)
2019/11/19(火) 22:43:20.17ID:UG4gZLw4r
>>740
RangeをVariantに代入して
For c = 1 To Ubound(Variant)
Variant(1,c)...
が一番楽
だけどRangeが1セルだけの場合上手く代入できない気がする
763デフォルトの名無しさん (スッップ Sda2-sGiA)
2019/11/20(水) 13:27:25.20ID:IaTx24D1d
>>762
>>740
いや、だからさ、>>735みたいにしたりするし、その時によるんだよ。
行、列共に多少なりとも組める奴ならアルファベットでアクセスすることは少ないというだけ。
764デフォルトの名無しさん (アウアウウー Sa9d-d1iG)
2019/11/21(木) 15:35:37.98ID:2y1jGWDSa
http://officetanaka.net/excel/vba/tips/tips38.htm

Sub Sample1()
Dim RE, strPattern As String, r As Range
Set RE = CreateObject("VBScript.RegExp")
strPattern = "SUM\("
With RE
.Pattern = strPattern ''検索パターンを設定
.IgnoreCase = True ''大文字と小文字を区別しない
.Global = True ''文字列全体を検索
For Each r In ActiveSheet.UsedRange
If .Test(r.Formula) Then r.Interior.ColorIndex = 3
Next r
End With
Set RE = Nothing
End Sub
このソースのDim REの部分ってこのサブルーチンだけを動かすようなマクロの場合いらなくね?
765デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/21(木) 15:37:08.52ID:LUwjW7Cja
>>764
間違えたdimでRE変数宣言するのいらなくない?
それとは別の話でset RE nothingはこのサブルーチンしか動かさない場合は必要なくない?
766デフォルトの名無しさん (オッペケ Src5-/8GO)
2019/11/21(木) 16:45:06.69ID:CoNvnJper
>>765
変数そのものがなくても良いって話なのか、宣言がいらないって話なのか?
まあどっちもやりようによってイエスだが、それが推奨されるかは別の話
767デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/21(木) 17:16:22.54ID:LUwjW7Cja
>>766
プログラム的に何か考慮してるのか聞きたい
プロジェクトでどうするべきか見たいなところは興味ない
768デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/21(木) 17:22:58.39ID:LUwjW7Cja
vbaの設計的にはSet RE = CreateObject("VBScript.RegExp") これだけで初期化できてるからdimで宣言する必要があるのかコンピューターサイエンスサイドの意味で聞きたい
769デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/21(木) 23:25:18.32ID:BtgKOXu8d
普通は変数宣言を強制するようになってるだろ。
770デフォルトの名無しさん (ワッチョイ 8901-hZ32)
2019/11/22(金) 00:36:07.32ID:kJTMU1Ov0
スモリートインハゲラクター
771デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/22(金) 01:53:36.59ID:NJe7bE9qx
>>768
モジュールレベルで変数宣言を強制している場合にはプロシージャ内のDimで宣言していないとコンパイルエラーになる
型指定なしのDim宣言ってのは実際にはVariant型変数の宣言なので、代入時に型評価をしているだけだけどね
RegExp型のメモリ領域をDim宣言時に確保するとなると参照設定が必要でそれはそれでまた別の問題が生じる
772デフォルトの名無しさん (スプッッ Sd73-MY8M)
2019/11/22(金) 11:54:02.74ID:L6bND2U2d
クラスモジュールを使ってオブジェクト指向(厳密には違うらしいですが…)を理解したいと思っています
Newでオブジェクト生成して、get set letを使いながらプログラムを書くという認識で合っているでしょうか?
773デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 12:01:14.10ID:BVLtoDL5a
>>771
モジュールレベルで変数宣言を強制している場合には必要なのね、ありがとう良くわかった。
set RE = nothingなんだけどこのサブルーチン実行完了したらメモリとか解放されるからnothingやらなくてもスタック領域占有しないと思ってるんだけど実際のところどうなの?そもそも"VBScript.RegExp"の占有ってスタック領域であってる?
そもそもVBAのこの
774デフォルトの名無しさん (ワンミングク MMd3-Na0O)
2019/11/22(金) 12:14:16.35ID:rCku/67RM
発達障害か何かか?
775デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 12:16:14.12ID:BVLtoDL5a
>>774
教えてよ知ってるなら質問してたからこれも
776デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 12:19:40.92ID:BVLtoDL5a
実際に正常終了する前提ならset RE = nothingしなくてもメモリリーク起きないのか知りたい
777デフォルトの名無しさん (ワンミングク MMd3-Na0O)
2019/11/22(金) 12:25:56.88ID:rCku/67RM
自分で検証して納得しなさいよ
778デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 12:44:22.42ID:BVLtoDL5a
>>777
やるけど"VBScript.RegExp"の占有領域はスタックかどうかだけ教えて欲しい
スタックメモリだと思ってるんだけど
779デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/22(金) 12:55:31.14ID:VuiommTl0
>>774
相手するなよ…
780デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 13:00:58.08ID:BVLtoDL5a
>>779
いやここVBA質問スレだよね?
その姿勢は本分を果たしてなくないか
781デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 13:03:14.92ID:BVLtoDL5a
アインシュタイン「6歳の子供に説明できなければ、理解したとは言えない。」
782デフォルトの名無しさん (ワッチョイ 7b02-Ghh+)
2019/11/22(金) 15:54:34.05ID:ioMkz3g00
6歳って小1とかだよな?
小1が5chか・・・
783デフォルトの名無しさん (ワッチョイ c1da-/L9V)
2019/11/22(金) 16:07:33.42ID:TX54f/dc0
名探偵かよ
784デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 16:59:48.42ID:K4D/35s4a
>>782
小1がやってもいいだろ
例えだよね?
785デフォルトの名無しさん (アウアウカー Sa55-d1iG)
2019/11/22(金) 17:00:31.99ID:K4D/35s4a
お前ら答えられないからって逃げすぎw
786デフォルトの名無しさん (ワッチョイ 132c-4eZD)
2019/11/22(金) 18:58:21.55ID:IgRfeEG+0
CreateObject("VBScript.RegExp")

VBScript のオブジェクトを作っているのだろ。
別のプロセスか、DLL から作っているのだろ

とても、スタックとは思えない
787デフォルトの名無しさん (オッペケ Src5-/8GO)
2019/11/22(金) 19:08:12.45ID:/fRhojahr
そもそも占有領域とはなにを指しているのか
VBAのローカル変数はスタックにとられる
それ以上はそのオブジェクト次第
788デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/23(土) 09:54:08.90ID:W8QCJ151x
>>773
VBScriptの正規表現オブジェクトはIE付属のエンジンだからヒープにインスタンス作成してるだろうし、参照カウンタ0になったら自動破棄されてるんじゃないの
このサブルーチンからの参照がなくなっても別の参照が発生してたらインスタンスは残るでしょ

だから、このサブルーチンが正常終了するかどうかとメモリリークが起きるかどうかは別問題だと思う
サブルーチン外に制御が渡った段階でこの正規表現オブジェクトがどこかのプロセスによって参照されていて、そっちの制御フローの中に猛烈なメモリ負荷が発生する処理が存在すれば、メモリリークの原因になりうる
execループで空文字をマッチさせていてindexが進まずに無限ループしたりとかね

それと、あなたの認識通り、End Subでスタック内のローカル変数のアドレス空間自体が解放されるので、End Subの直前にこの変数SEにNothingを代入する理由はない
モジュールレベルの変数やグローバル変数を使う場合は逆に、制御フロー上の要求としてサブルーチン終了時に参照アドレスをクリアしなければならない場合もある
789デフォルトの名無しさん (ワッチョイ c1da-pyDD)
2019/11/23(土) 10:41:17.70ID:oBrftrQi0
Windows10で、SetLayeredWindowAttributesのLWA_COLORKEYを正常動作させる方法ある?
Windows7でやる方法は知ってるので、7の場合の回答は不要。
790デフォルトの名無しさん (ワッチョイ d9bb-cCMV)
2019/11/23(土) 13:40:54.04ID:Rc1avnYX0
with cells(i,j)
.cut .offset(1,0)
.value=k
end with

cells(i,j)にkが入らず、cells(i+1,j)にkが入るんだけど仕様?
791デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/23(土) 13:47:27.73ID:W8QCJ151x
>>790
普通に

Cells(i, j).Value = k

では駄目なのか?
792デフォルトの名無しさん (ワッチョイ 117c-+Oop)
2019/11/23(土) 14:19:57.78ID:r/KLZ+570
>>790
cut貼り付けでセルそのものが移動してるから
793デフォルトの名無しさん (ワッチョイ 8901-hZ32)
2019/11/23(土) 14:44:54.38ID:2nUI7BT80
ストリートインハゲラクターはここに来ないの?
794デフォルトの名無しさん (スフッ Sd33-cCMV)
2019/11/23(土) 17:04:16.03ID:S321d+MCd
>>791
>>792
仕様なんですね
ありがとうございます
795デフォルトの名無しさん (ワッチョイ 117c-+Oop)
2019/11/23(土) 17:11:07.86ID:r/KLZ+570
仕様というか、代入先を自分で変えてることは伝わってるんだろうか
796デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/23(土) 19:56:27.67ID:mhmkRKEvx
>>790
仕様ではなくて君のコードの動作の問題
同じ綴りのオブジェクト式の記述をまとめる文法ルールとしてWithを理解するのは大きな間違い

Withで任意のセルを取得して和のセルに貼り付けたらEnd Withまでずっと貼り付けられた先のセルを参照する
その状態で.Valueに値を代入したら、当然貼り付けられたセルの値が変わる

With Cells(i, j)
.Cut .Offset(1,0)
End With
Cells(i, j).Value = k

とすれば何の問題もない
797デフォルトの名無しさん (ワッチョイ 1301-hZ32)
2019/11/23(土) 20:39:38.41ID:IdTl1qyV0
>>795
わかってて聞いてるんでしょ
わかってなきゃわざわざ「仕様?」なんて聞き方しないだろうし

With で参照してるセルを変更した時の挙動を書いてるドキュメントは見たことないから仕様かどうかはよくわからん
誰か見たことある人いる?
798デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/23(土) 22:14:08.35ID:mhmkRKEvx
アンカー間違えてた
>>796>>794宛ね
799デフォルトの名無しさん (ワッチョイ 7b68-QS5Z)
2019/11/23(土) 22:28:15.56ID:K0UQgc8i0
>>790
仕様
cut後もcells()で返ってくるオブジェクトは同じ
そういや上書きされるcells()はどうなるのか、と試してみたらnothingになっていた
この辺はExcelのカットアンドペーストなどでおなじみだけど、いざやってみると不思議な気分だ

Sub foo()
i = 2
j = 3
k = "k-"
Set before = Cells(3, 3)
With Cells(i, j)
.Cut .Offset(1, 0)
.Value = k
End With
Debug.Print before.Value
End Sub
800デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/23(土) 22:52:50.40ID:mhmkRKEvx
>>799
不思議でも何でもない
変数によるオブジェクト参照の仕組みをもっと正確に理解すべきだろ
カットは貼り付け先のセルの削除と貼り付け元のセルの埋め込みを伴う処理だぞ
貼り付けを行った段階で、変数のスタックに格納されていた貼り付け先のセルのポインタが無効になるので、貼り付け後に変数の中身を評価するとNothingになるだけ
セルの仕様ではなくオブジェクト参照の仕組みからして当然
801デフォルトの名無しさん (ワッチョイ d9bb-cCMV)
2019/11/24(日) 00:00:31.22ID:2ECmUh+O0
しかし、VBAをやり始めたら仕事がはかどるな
面倒くさい勤務表の処理もマクロで一発やからな
802デフォルトの名無しさん (ワッチョイ c1da-/L9V)
2019/11/24(日) 02:13:33.02ID:199iFod20
まるで働いているみたいな言い方だな
803デフォルトの名無しさん (アウアウウー Sa9d-5f43)
2019/11/24(日) 02:19:56.28ID:0nk530rxa
VBAで劇的に工数削減できるような単価の低そうな仕事をしているのなら、
今の仕事の効率化なんかよりプログラミングに習熟してITエンジニアに転職したほうが金を稼げるのではないだろうか
804デフォルトの名無しさん (ブーイモ MM8d-hgyP)
2019/11/24(日) 02:30:35.85ID:n7Fv0omHM
>>803
そのやりかたは?
フリーランサーになればたくさん稼げる?
在宅ワークも可?
805デフォルトの名無しさん (ワッチョイ 7990-/Q9f)
2019/11/24(日) 11:11:52.55ID:8CqNLf6R0
>>804
いかがでしたでしょうか?
806デフォルトの名無しさん (ワッチョイ 7b68-QS5Z)
2019/11/24(日) 11:24:51.53ID:h0SmVkt10
>>803>>804
ここで回答するのもアレだが
VBAは基本的に常駐で保守のゴツイ仕事のみ。仕事自体が少なく稼げない。稼ぐなら別のプログラム言語の方が良い。
在宅の案件は更に無い。ゼロと思ったほうが良い(web業者がついでにAccessのVBAをメンテする、といった事例は聞いたことがある)
807デフォルトの名無しさん (アウアウエー Sae3-a3+U)
2019/11/24(日) 11:58:45.04ID:ZJnm9CLXa
VBAはマクロ記録も出来るし、やりたいことをちょいググればいくらでもサンプルコード載ってるからね
808デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/24(日) 13:15:25.69ID:ok5C3nrlx
Excel VBA限定の話だろそれ
Outlook とかWordとかPPTのVBAだと途端に情報集めの難易度が上がる
Access VBAは衰退傾向だし
809デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/24(日) 15:48:03.50ID:cfSGuIz8d
>>789
動作しなくなったの?
あらためて試して無いから分からんけど。
810デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/24(日) 15:54:08.01ID:cfSGuIz8d
>>807
そういうレベルの話してるから安い話になるんじゃないの?

ググってすぐどうにかなることなんて殆ど無い。
というかググって答えが見つからないことは多い。
811デフォルトの名無しさん (ワッチョイ 9994-1Uwe)
2019/11/24(日) 16:27:31.40ID:IpSlmYmZ0
検索力の問題
812デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/24(日) 17:31:24.17ID:cfSGuIz8d
>>811
そんなレベルの低い話はしてないんだがw
813デフォルトの名無しさん (ワッチョイ 1342-iHas)
2019/11/24(日) 17:34:20.62ID:JpcuIalq0
困ったらググれ
814デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/24(日) 18:56:22.86ID:cfSGuIz8d
>>789
というか、それってExcelそのものに対して透明化したいって話?
それは某掲示板で話題になってWindows10から出来ないみたいな話を聞いたような。
815デフォルトの名無しさん (ワッチョイ c1da-pyDD)
2019/11/24(日) 18:58:17.94ID:C3DnnDsf0
>>809
正常動作しなくなったのは7の時点だけど、その時はAeroを切ってどうにか切り抜けた。
しかし10はどうしたものかなと。
LWA_ALPHAの方は全く問題ないんだけど。
複数のPCで確認したから、おま環ではないと思う。
816デフォルトの名無しさん (ワッチョイ c1da-pyDD)
2019/11/24(日) 19:01:21.70ID:C3DnnDsf0
>>814
透明化したいのはExcelそのもの。
結構便利なんだよ。
ウインドウを2枚重ねても、奥側のウインドウを操作できるから。
817デフォルトの名無しさん (ワッチョイ 7b68-QS5Z)
2019/11/24(日) 20:13:58.03ID:h0SmVkt10
使えなくなったのか
大昔ハマって透明アプリばっかり作ってた記憶
818デフォルトの名無しさん (ワッチョイ c1da-pyDD)
2019/11/24(日) 21:06:06.38ID:C3DnnDsf0
>>817
使えないっていうか、変な動作をするんだよ。
ThisWorkbook.Application.Hwndでハンドル取ってるのに、
なぜか最初に配置したコマンドボタンのキャプションだけが透過するとか。
819デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/24(日) 21:33:06.21ID:cfSGuIz8d
>>816
透過はするけど透明にならないんだろ。
無理矢理やる方法は思い付いたけど試して無い。
820デフォルトの名無しさん (ワッチョイ 8901-hZ32)
2019/11/24(日) 21:55:17.62ID:HD00MhY50
ストリートインハゲラクター
821デフォルトの名無しさん (ワッチョイ 9159-jtw9)
2019/11/25(月) 01:13:03.20ID:eciN8Z7y0
透過するアプリがあったなあ昔、なんだっけ。
822デフォルトの名無しさん (ワッチョイ c1da-/L9V)
2019/11/25(月) 03:00:00.82ID:N/R5jHCP0
透明じゃ見えないよ
823デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/25(月) 08:39:02.81ID:dg2mzwJYd
ググったらサンプルコードが見つかるんじゃなかったのか?
824デフォルトの名無しさん (スプッッ Sd73-MY8M)
2019/11/25(月) 11:42:30.29ID:R7yXiHMCd
初歩的な質問ですみません
標準モジュールとユーザーフォームでプログラムを書いています
1つのモジュール内にプロシージャが沢山あり、読みにくくなってしまいました
本を読むとクラスモジュールでプログラムが読みやすくなると書いてありました
どのような時にクラスモジュールを使ったらプログラムは読みやすく出来ますか?
サブルーチンやForNext,if等の繰り返し使うものはクラスモジュールを使った方がいいでしょうか?
825デフォルトの名無しさん (ワッチョイ 518e-6LQQ)
2019/11/25(月) 11:52:41.48ID:aBzrxBdk0
>>824
そんなことをここで聞くような人には無理
826デフォルトの名無しさん (スプッッ Sd73-MY8M)
2019/11/25(月) 14:15:33.91ID:R7yXiHMCd
>>825
わかりました
もっと勉強してきます
失礼しました
827デフォルトの名無しさん (スフッ Sd33-mWXg)
2019/11/25(月) 14:41:38.68ID:Md9nMpL2d
ぶしつけで恐縮ですが、シート内の改行を一気に削除する方法を教えていただけないでしょうか。

cellsで指定してreplaceメソッドってやってもできないので、誰かよろしくお願い申し上げます。
828デフォルトの名無しさん (ワッチョイ c1da-/L9V)
2019/11/25(月) 15:12:03.96ID:N/R5jHCP0
新しいシート作って改行をl削除したデータをコピーすればいいんじゃないかな
829デフォルトの名無しさん (ワントンキン MMd3-Na0O)
2019/11/25(月) 15:16:08.90ID:FfR4EE1kM
Dim R As Range
For Each R In ActiveSheet.UsedRange
R = Replace(R, vbCr, "")
R = Replace(R, vbLf, "")
Next

あるいは

Cells.Replace What:=vbCr, Replacement:=""
Cells.Replace What:=vbLf, Replacement:=""
830デフォルトの名無しさん (アウアウカー Sa55-DMja)
2019/11/25(月) 15:30:30.80ID:Q3qCCewla
>>827
VBAスレなんで余談だけど
VBAでやるんなら>>829
手動なら検索窓に「ctrl+J」を入れて全て置換って方法もある
831デフォルトの名無しさん (ワントンキン MMd3-Na0O)
2019/11/25(月) 15:42:49.49ID:FfR4EE1kM
いちおう説明
excel内の改行コードはLFが基本らしいんだけど
マクロ使ったりでCRLFも入力出来るらしい
なのでCRとLFで分けて処理させてみた
832デフォルトの名無しさん (スッップ Sd33-Q8jM)
2019/11/25(月) 16:52:28.97ID:dg2mzwJYd
結局>>789はどうにもならんのか?
833デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/25(月) 17:03:29.94ID:Wzgj59oVx
>>824
クラスモジュールというのはユーザーが独自にメソッドやプロパティ、イベントを定義して使えるオブジェクトのことで、本質的にはユーザーフォームと変わらない設計とコーディングに結構手間がかかる
オブジェクト化によるカプセル化がどうしても必要なら試してもいいが、肥大化したモジュールのコードの可読性改善くらいの目的であればやらない方がいいかもしれない
クラス内に定義された関数を呼び出すにも、そのクラスの型をもつ変数を宣言してインスタンスを生成してメソッドを呼び出なければならなくなるのでね

モジュールがごちゃごちゃして嫌なら、モジュールに記載している関数を機能カテゴリに分類して、各機能カテゴリごとモジュールを分ければいいんじゃないのかな
文字列操作系、メール送信機能系、メッセージダイアログ系、みたいな感じの切り分けで
834デフォルトの名無しさん (ワッチョイ 7145-MY8M)
2019/11/25(月) 18:09:55.21ID:H9kNla+G0
>>833
ありがとうございます
おっしゃる通りで今問題なく動くプログラムをわざわざ変える必要は無いですね
まずはモジュールを分けるところから始めてみます
今後プログラムを作る際の参考にさせていただきます
835デフォルトの名無しさん (ワッチョイ 8901-hZ32)
2019/11/25(月) 19:07:37.29ID:6cilP10x0
グラサンのハゲはここにこないの?
836デフォルトの名無しさん (ワッチョイ 7bf7-r64g)
2019/11/25(月) 19:23:35.97ID:9hpYEcN60
シートやセルと変数の定義が重複するようなときに一カ所まとめられて便利
837デフォルトの名無しさん (ワッチョイ 134f-/upO)
2019/11/26(火) 07:21:06.34ID:V8F4+JUa0
>>788
ヒープエリアに展開されるのはその通りだけど
VBAにガベージコレクションの概念は無いよ
838デフォルトの名無しさん (ドコグロ MM63-hZ32)
2019/11/26(火) 08:19:11.49ID:6EvauiRdM
>>837
なにをガベージコレクションと言ってるのかわからんけど、VBAはCOM扱ってるから参照カウンタは使ってるよ
まあCOMをVBAの機能と言うかについてはいろんな意見があるだろうけど
839デフォルトの名無しさん (アウアウウー Sa9d-rqK9)
2019/11/26(火) 18:13:05.92ID:lZztYBKEa
お前らの部屋もガーベージだらけ
840デフォルトの名無しさん (ワントンキン MMd3-Na0O)
2019/11/26(火) 19:01:16.26ID:cGr33es4M
ちゃんとコレクションしてるわ
841デフォルトの名無しさん (ワッチョイ 7b02-Ghh+)
2019/11/26(火) 19:11:03.72ID:s8aO6zrT0
ほこり被ってるけどな
842デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/26(火) 20:19:14.53ID:sWZAZ3HSx
>>837
参照追跡方式の本当のガベコレは利用できないけどCOM標準の参照カウンタ方式のリソース管理システムはバックグラウンドで使ってるだろ
循環参照が発生してるとリソース解放できないやつね
843デフォルトの名無しさん (ワッチョイ 8139-QS5Z)
2019/11/26(火) 20:33:43.32ID:+5U3MHb30
A列の値が「ア行」、B列の値が「あいうえお」のうちどれかであればC列を赤く塗り、
同じく「カ行」で「かきくけこ」のうちどれかであれば青く塗る、というような処理をしたくて
以下のようにしたところ一応うまくいったのですが、
「ア行 and あ」or「ア行 and い」or ……
というような複数条件の書き方はこれであっているのでしょうか?

If InStr(Range("A2").Value, "ア行") > 0 And InStr(Range("B2").Value, "あ") > 0
Or InStr(Range("B2").Value, "い") > 0 Or InStr(Range("B2").Value, "う") > 0
Or InStr(Range("B2").Value, "え") > 0 Or InStr(Range("B2").Value, "お") > 0 Then
Range("C2").Interior.Color = RGB(255, 0, 0)

ElseIf InStr(Range("A2").Value, "カ行") > 0 And InStr(Range("B2").Value, "か") > 0
Or InStr(Range("B2").Value, "き") > 0 Or InStr(Range("B2").Value, "く") > 0
Or InStr(Range("B2").Value, "け") > 0 Or InStr(Range("B2").Value, "こ") > 0 Then
Range("C2").Interior.Color = RGB(0, 0, 255)
844デフォルトの名無しさん (ワッチョイ 8901-hZ32)
2019/11/26(火) 20:46:08.04ID:eRvpjELG0
グラサンのハゲはここにこないのー?
845デフォルトの名無しさん (ワッチョイ 7bf7-r64g)
2019/11/26(火) 21:20:11.71ID:nfr+llLM0
>>843
間違ってる
AndとORは左側からの計算になるんで
false and false or true …がtrueになる
Or の連続部分を括弧で囲まないといけない
846デフォルトの名無しさん (ドコグロ MM63-hZ32)
2019/11/26(火) 21:29:30.19ID:6EvauiRdM
>>843
> 「ア行 and あ」or「ア行 and い」or ……
> というような複数条件の書き方はこれであっているのでしょうか?
ダメ
AndよりOrの方が優先順位が低いので
InStr(Range("A2").Value, "ア行") > 0
And InStr(Range("B2").Value, "あ") > 0
Or InStr(Range("B2").Value, "い") > 0
Or InStr(Range("B2").Value, "う") > 0
Or InStr(Range("B2").Value, "え") > 0
Or InStr(Range("B2").Value, "お") > 0

(InStr(Range("A2").Value, "ア行") > 0 And InStr(Range("B2").Value, "あ") > 0)
Or InStr(Range("B2").Value, "い") > 0
Or InStr(Range("B2").Value, "う") > 0
Or InStr(Range("B2").Value, "え") > 0
Or InStr(Range("B2").Value, "お") > 0
のように解釈される
なのでA2が "ア行" でなくてもB2が "い" だと成立しちゃう
詳しくは
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-precedence
を見て
847デフォルトの名無しさん (ドコグロ MM63-hZ32)
2019/11/26(火) 21:38:29.33ID:6EvauiRdM
>>843
そもそも
> A列の値が「ア行」
と言うなら
Range("A2").Value = "ア行"
と書けばいい
InStr(Range("A2").Value, "ア行") > 0
だとA2が "マレーシア行きのバスはここから出ます" でも成立しちゃうけどそれはいいのか?
848デフォルトの名無しさん (ワッチョイ 8139-QS5Z)
2019/11/26(火) 21:41:08.57ID:+5U3MHb30
あらそうだったんですね。ということは

InStr(Range("A2").Value, "ア行") > 0
And (InStr(Range("B2").Value, "あ") > 0 Or InStr(Range("B2").Value, "お") > 0) Then

という感じにすればいいんでしょうか?
849デフォルトの名無しさん (ワッチョイ 7bf7-r64g)
2019/11/26(火) 21:43:24.14ID:nfr+llLM0
>>845の左順って間違いだったは
変更はそれでOK
850デフォルトの名無しさん (ワッチョイ 8139-QS5Z)
2019/11/26(火) 21:46:05.70ID:+5U3MHb30
ああなるほど。文言は固定でかぶってる言葉がなかったので大丈夫だったんだと思います
すでにあった文言の組み合わせの違うVBAをいじったもんですからそれを大枠はそれをそのまま
使ったんですけどそう言われればそうですね
851デフォルトの名無しさん (ワッチョイ 8139-QS5Z)
2019/11/26(火) 21:50:37.69ID:+5U3MHb30
If Range("A2").Value = "ア行"
And (InStr(Range("B2").Value, "あ") > 0 Or InStr(Range("B2").Value, "お") > 0) Then
Elseif Range("A2").Value = "カ行"
And (InStr(Range("B2").Value, "か") > 0 Or InStr(Range("B2").Value, "こ") > 0) Then

こうでしょうか?
852デフォルトの名無しさん (ワッチョイ 134b-Na0O)
2019/11/26(火) 21:55:48.15ID:dLRQEMpj0
もいちょい頑張って正規表現使ったらいいんじゃないでしょうか
853デフォルトの名無しさん (ワッチョイ 8139-QS5Z)
2019/11/26(火) 22:05:12.70ID:+5U3MHb30
正規表現だと
If Range("A2").Value = "ア行"
And (Range("B2").Value Like "[あ, い, う, え, お]" Then
これであってますか?
854デフォルトの名無しさん (ワッチョイ 7bf7-r64g)
2019/11/26(火) 22:24:52.56ID:nfr+llLM0
>>853
厳密には"[あ-お]"または"[あいうえお]"
それだと,でも反応する
855デフォルトの名無しさん (ワッチョイ 7b68-QS5Z)
2019/11/26(火) 22:25:20.59ID:upmpwVtz0
正規表現はRegExp使う奴だよ
856デフォルトの名無しさん (ワッチョイ 8139-QS5Z)
2019/11/26(火) 22:34:52.14ID:+5U3MHb30
簡略化するためにあいうえおを使いましたが、実際は2〜10文字程度の文字列なので、
And (Range("B2").Value Like "東京|大阪|名古屋" Then
こうすればいいのかな?
857デフォルトの名無しさん (ワッチョイ 7bf7-r64g)
2019/11/26(火) 22:41:27.30ID:nfr+llLM0
>>856
| はRegExp使わないとムリだね
858デフォルトの名無しさん (ワッチョイ 8139-QS5Z)
2019/11/26(火) 22:46:43.63ID:+5U3MHb30
確かにただ | を使っただけでは反応しませんね
とりあえずOrいっぱい使って直します、ありがとうございました
859デフォルトの名無しさん (アークセー Sxc5-dWLu)
2019/11/26(火) 22:50:11.95ID:DKfMBfAux
TestメソッドがTrueを返してきたら処理するって形にすればいい
860デフォルトの名無しさん (ワッチョイ 117c-+Oop)
2019/11/26(火) 22:55:07.89ID:DNirBk9p0
>>856
いちいち聞く前に試した方が早いよ
861デフォルトの名無しさん (アウアウウー Sa9d-oGMk)
2019/11/27(水) 06:59:40.83ID:HXLhDNyDa
質問スレなんだから構わないだろ
気に入らないなら無視しとけアホ
862デフォルトの名無しさん (アウアウクー MM45-PQyj)
2019/11/27(水) 15:37:51.09ID:YOYInDtKM
他人が作ったマクロなんて読みづらいに決まってんじゃん…
今更グダグダ言ってもあとの祭りさ。
863デフォルトの名無しさん (ワッチョイ 530e-iHas)
2019/11/27(水) 15:57:59.39ID:75s4sS5d0
自分が作ったマクロもだぞ
数年前どころか一ヶ月もするとわからなくて四苦八苦することがある
864デフォルトの名無しさん (ワッチョイ 7b02-Ghh+)
2019/11/27(水) 16:57:52.22ID:aKqeYuzt0
過去のソースは別人が書いたと思って
865デフォルトの名無しさん (アウアウエー Sae3-X/je)
2019/11/27(水) 18:34:34.70ID:Cbbx0Ne3a
コードよりメモの方が長い
866デフォルトの名無しさん (ドコグロ MM63-hZ32)
2019/11/27(水) 19:32:47.73ID:/ZvfNNOFM
1週間後の自分は既に他人
867デフォルトの名無しさん (ワッチョイ 81ce-/L9V)
2019/11/27(水) 19:44:22.70ID:zplzdTf80
プログラミングの実習で教授が言ってたわ
明日の自分は他人だから、いつでも他人が見てもわかるように書けって
868デフォルトの名無しさん (アウアウウー Sa9d-rqK9)
2019/11/27(水) 19:53:39.35ID:stsrz9x1a
昨日のことも覚えてない
869◆QZaw55cn4c (ワッチョイ d347-Vctl)
2019/11/27(水) 20:15:43.70ID:N9ggbkQ10
>>868
昨日の昼飯がなにか?なんて思い出せなくなりました…
870デフォルトの名無しさん (ワッチョイ 69f1-hgyP)
2019/11/27(水) 20:35:10.07ID:fWLksagp0
>>869
ボケがはじまっているのでわ?
アルツハイマーだとやっかいですよ
871◆QZaw55cn4c (ワッチョイ d347-Vctl)
2019/11/27(水) 20:39:12.17ID:N9ggbkQ10
>>870
ビタミン剤をしこたま飲んでるんですけど、やっぱりだめですかね…
872デフォルトの名無しさん (ワッチョイ 1301-7uad)
2019/11/27(水) 20:47:12.82ID:Bgz7f5eR0
>>867
集中してるとそこまで対処してるか!みたいなのが書ける時があって
後から見てなんでこんなのあるんだ?って思うことがある
同じことやろうと思っても出来なかったり
だから自分に対してのコメント必須だわ
873デフォルトの名無しさん (ワッチョイ 69d0-BEIG)
2019/11/27(水) 21:24:50.75ID:RNITUjXe0
昨日の自分は今日の敵
今日の自分は明日の(自分にとっての)敵
874デフォルトの名無しさん (ワッチョイ c1da-pyDD)
2019/11/27(水) 21:25:04.01ID:Htaq5k6U0
>>819
>>832
もうちょっと調べてみたが、
種類に関係なく、最初に配置したオブジェクトだけが透過することがわかった。
しかも、コマンドボタンは常時透過するが、
テキストボックスとラベルは、アクティブになっている時だけ透過するっていう。
だから、どでかいコマンドボタンに特大フォントで■(四角)を書くとか、
本当に無理矢理やろうと思えば出来るんだろうけど、それはちょっとねぇ・・・。
875デフォルトの名無しさん (ワッチョイ b1f1-uW/g)
2019/11/28(木) 00:11:11.99ID:SmApZ4N10
VBAでChromeのタブブラウザを思い通りに操作することってできます?
IEのタブブラウザも思い通りに操作する方法も知りたいけど。
876デフォルトの名無しさん (ワッチョイ 9279-luhV)
2019/11/28(木) 01:30:16.44ID:65DPFBPU0
Seleniumでもタブ操作は無理だから無理なんじゃねーの
877デフォルトの名無しさん (ワッチョイ 922c-Ql8R)
2019/11/28(木) 01:58:43.77ID:WsOSEkue0
Ruby で、Selenium Webdriver を使っているけど、タブ移動は出来る!

url_0 = "URL 0"
url_1 = "URL 1"

driver.navigate.to url_0 # url_0 を開く

driver.execute_script( "window.open()" ) # 新しいタブを開く
driver.switch_to.window( driver.window_handles.last ) # 新しいタブへ移動する
driver.navigate.to url_1 # url_1 を開く

all_handles = driver.window_handles # すべてのタブ
driver.switch_to.window( all_handles[ 0 ] ) # url_0 へ移動する
878877 (ワッチョイ 922c-Ql8R)
2019/11/28(木) 02:00:57.37ID:WsOSEkue0
driver.execute_script( "window.open()" ) # 新しいタブを開く

driver.execute_script で、JavaScript のソースコードを書ける
879デフォルトの名無しさん (スッップ Sdb2-iiDQ)
2019/11/29(金) 13:28:48.35ID:o1brOXQcd
>>874
以前の挙動ってセル罫線は見えるけどセル自体は透過して、下への入力が出来るというものだった記憶があるんだけど、そういう動作を望んでるってことだよね。
単純にセル範囲全体、もしくは部分を完全透過するって意味じゃ無いよね。
セル範囲、もしくは部分を完全透過して下へ入力出来るっていうのなら簡単に実現出来ると思う。
試して無いけど。
880デフォルトの名無しさん (ワッチョイ adda-WKXI)
2019/11/29(金) 19:37:43.44ID:Y7Z9cnLQ0
>>879
そう。
SetLayeredWindowAttributesではなく、違う発想でやるってこと?
881デフォルトの名無しさん (スッップ Sdb2-iiDQ)
2019/11/29(金) 21:00:27.22ID:o1brOXQcd
>>880
SetLayeredWindowAttributesは多分無理だと思う。
使ったことないけどUpdateLayeredWindowも同じかな?

この種のAPIは諦めて、リージョン使ってウィンドウの形状をくり抜いた形に変形する方法を使って出来たけど、色指定とかも出来ないし、くり抜いた部分は問答無用で透過する。
当然、罫線も透過する。
それからブックのウィンドウを移動すると元に戻る。
こっちはサブクラスでどうにか出来なかったかな。

くり抜く部分は右端列、下端行の見切れる所を正確に取得するのが面倒くさい。
指定セル範囲なら簡単なんだけど。
882デフォルトの名無しさん (スッップ Sdb2-iiDQ)
2019/11/29(金) 21:05:43.61ID:o1brOXQcd
元々、無理矢理やろうとしてたのは半透明にしてその描画をメモリに取得してから完全透明にして、デスクトップに取得した描画を書き込むことを考えたけど、再描画で無茶苦茶チラつきそうで断念した。
883デフォルトの名無しさん (ワッチョイ 8101-MhVQ)
2019/11/29(金) 21:42:27.36ID:fEFTOoHB0
北海道のハゲはここにこないのー?
884デフォルトの名無しさん (スッップ Sdb2-iiDQ)
2019/11/29(金) 23:10:37.96ID:o1brOXQcd
ググレばサンプルや答えが見つかるとか言ってた奴がいたけど、ググってどうにかなるようなレベルの低いものは、問題にすらならないわけでね。
わざわざ覚えるようなことをしてないだけでググレば答えが見つかるのが分かってるんだよ。

一方、問題になるようなレベルの高いものはググっても答えが見つかることは殆ど無いわけだ。
885デフォルトの名無しさん (ワッチョイ 655f-abYQ)
2019/11/30(土) 16:10:24.85ID:gvdsBQuZ0
最近独学ではじめたんだがググっても出ないから質問させてくれ
if の条件式をセルから読み取ることできない?
例えば
セルA1に1+1=2って入力してあって
VBAで
if cells(1,1).value then
end if
的なことを実行したいんだが・・・
886デフォルトの名無しさん (ワッチョイ adda-WKXI)
2019/11/30(土) 16:18:47.86ID:zymER4tP0
イミワカラン。
=1+1=2ならまだわかるが。
887デフォルトの名無しさん (ワッチョイ b1f1-uW/g)
2019/11/30(土) 16:26:59.80ID:PE5ncLuo0
セルA2には1+1=3って入力してあるんです
888デフォルトの名無しさん (ブーイモ MMa6-xiND)
2019/11/30(土) 16:42:55.04ID:CChXYwU6M
if Application.Evaluate(cells(1,1).value) then
end if
は?
889デフォルトの名無しさん (ワッチョイ 655f-abYQ)
2019/11/30(土) 17:14:03.21ID:gvdsBQuZ0
>>886
すまん例がわるかった
セルになんでもいいから条件式が入力されてて
それをVBAのif文で読み取りたい

>>888
ありがとうございます。やってみます。
890デフォルトの名無しさん (ワッチョイ 0dce-3RYV)
2019/11/30(土) 18:09:08.07ID:5XJ0vNla0
>>889
数式の結果が欲しいだけなら
Cells(R, C).Value
891デフォルトの名無しさん (ワッチョイ b57c-EcXK)
2019/11/30(土) 18:17:54.58ID:c6PsAIQc0
>>885
そのコードで読み取れるが、=1+1=2と入れてるなら常にTrueにしかならないと思うぞ
892デフォルトの名無しさん (ワッチョイ f602-FWG3)
2019/11/30(土) 18:52:44.66ID:Vhhj6JxE0
コードで条件指定するんじゃなくて
セルに条件書いてそれで判定したいって事だよね
893デフォルトの名無しさん (ワッチョイ 655f-abYQ)
2019/11/30(土) 18:58:56.97ID:gvdsBQuZ0
>>892
そういうこと
条件の例が悪すぎだった
894デフォルトの名無しさん (スプッッ Sd12-abYQ)
2019/11/30(土) 19:00:48.42ID:vHVqnqrEd
文字列(1+2)*3を計算して数値にしてくれる方法ないかね
895デフォルトの名無しさん (ワッチョイ b57c-EcXK)
2019/11/30(土) 19:15:08.08ID:c6PsAIQc0
>>894
試してないけどevaluateで出来るんじゃないか?
896デフォルトの名無しさん (ワッチョイ 0dce-3RYV)
2019/11/30(土) 19:34:42.91ID:5XJ0vNla0
セルに数式として入れる
897デフォルトの名無しさん (エムゾネ FFb2-b5WD)
2019/11/30(土) 21:28:15.08ID:lXL2/s51F
Cells(1,1).Textでは数式読み取れなかったっけ
898デフォルトの名無しさん (ワッチョイ adda-3RYV)
2019/11/30(土) 21:30:46.92ID:4jVQowz00
>>894
そのくらい暗算すればいいじゃん
899デフォルトの名無しさん (ワッチョイ b57c-EcXK)
2019/11/30(土) 21:37:32.50ID:c6PsAIQc0
>>897
表示されてるものを表示形式通りに取得するやつ
900デフォルトの名無しさん (ワッチョイ adda-3RYV)
2019/11/30(土) 21:54:44.62ID:4jVQowz00
Range("A1").Formula = "=(1+2)*3"
901デフォルトの名無しさん (ワッチョイ 0920-tQqL)
2019/12/01(日) 01:14:32.95ID:hVa/XxLC0
転記マクロを作っていて、AのブックからBのブックに転記をしようと考えているのですが
Aの転記する部分を一旦構造体に全部取り込んでしまってからBブックを開いて転記する方法と
AとBのブックをその都度比較して転記するかで悩んでいます
どっちの方がいいんでしょうか?
902デフォルトの名無しさん (ブーイモ MMd5-EEfp)
2019/12/01(日) 01:25:45.07ID:xsf905SiM
前者でいいよ。
903デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 01:32:52.78ID:Mv7XM2680
オブジェ.pastespecial(xlpaste〇〇)
オブジェ.pastespecial paste := xlpaste〇〇

これ何が違うの?
前者は戻り値はカッコをつけるっていうルールに従ってなくね?
904デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 06:15:52.01ID:qadFHjVDx
>>903
前者はメソッドが返す戻り値を取得するために関数としてメソッドを使用している
文法上、引数指定の箇所で括弧が必要

後者はメソッドをコールしてそのまま次の処理に制御を渡している
引数指定の箇所には文法上括弧が不要
905デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 06:39:57.40ID:Mv7XM2680
>>904
関数とメゾットの違いって何?
pastespecialってメゾットじゃないの?
906デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 06:49:15.69ID:Mv7XM2680
pastespecial xlpaste〇〇

これでも行けた…
pastespecialメゾットの戻り値ってなんだ?
x = オブジェ.pastespecial(xlpaste〇〇)

こんなの使うときあるの?
pastespecialの戻り値を使う意味が全くわからない


If MsgBox("実行しますか?", vbYesNo) = vbNo Then
これは戻り値がTRUEかfalseだから意味がわかるけど
907デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 07:55:36.72ID:lg6qJlYj0
>>903
オブジェ→オブジェクト

Selection.PasteSpecial Paste:=xlPasteValues
Selection.PasteSpecial(xlPasteValues)
そういう文法。
前者のメリットは指定できる引数が大量にある時、一つだけ記述することができる上に見やすい
ただ、「:=」のコロンを見落としやすいのがネック
引数が一つだけの時は前者で書く理由はないと思う

>>905
メゾット→メソッド
メソッド=クラス内関数
ただ、vbaなんて全部applicationクラス(と思う)から、関数は全てメソッドに当たりそう
pastespecialはメソッドで間違いない

>>906
>こんなの使うときあるの?
>pastespecialの戻り値を使う意味が全くわからない
そもそも使わないから返り値なんてなんでも良い
俺も使った事無いけど、あえて返すとすればペーストの失敗か成功なのは間違いないだろう
908デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:06:02.34ID:qadFHjVDx
>>905
メゾットではなくメソッド(Method)ね
PasteSpecialはメソッドだよ

関数の定義は曖昧だが、ここでは制御と戻り値を返す命令文の意味で使っている
一方メソッドはオブジェクト外からアクセス可能になるようメンバとして実装された機能プログラムのことを指す
戻り値を返すものと返さないものの両方がある
909デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 08:12:27.61ID:Mv7XM2680
>>907
あんまわからないけど
endプロパティは
end(xlup)これ以外に書く方法ってある?
end shift :=xlupとかそんなのでもいけそうな感じするけど
910デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:14:33.55ID:qadFHjVDx
>>907
細かい話だが、VB6共通の標準関数やステートメント類、列挙定数はApplicationクラス配下のメンバではないはず
あと調べていけばApplicationクラスから独立しているクラスもあるかもしれない
プログラム本体をコードする言語ではなくマクロ言語なのでApplicationというカレントなインスタンスに依存しないクラスがあってもおかしくない
911デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 08:17:59.92ID:Mv7XM2680
初心者にメンバとかクラス外とか言われてもわからん
912デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 08:25:10.96ID:BdsW8ng60
>>903,906
引数の指定方法が、位置指定か名前付き引数指定かの違い
戻り値使わないときでも引数の指定に括弧を付けても問題ない

>>905
関数とメソッドの違いはあいまい
ヘルプ類見る限り、VBA組み込みのメソッドを関数と呼んでるっぽい
一般的にはそれ以外のオブジェクトのメソッドも関数と呼ばれたりする


PasteSpecialの戻り値は俺も使ったことないからよくわからんな
まあ戻り値があるからといって、必ず使わなければいけないというもんでもない
913デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:25:19.80ID:qadFHjVDx
>>911
上級者になりたいなら分からない言葉を自分で調べてキャッチアップする姿勢も必要
メンバとかは初心者向けの解説書やネット記事にも載ってる
914デフォルトの名無しさん (ワッチョイ adda-WKXI)
2019/12/01(日) 08:33:22.24ID:IUtc26dY0
PasteSpecialの戻り値が何なのか知らないけど、
範囲だったら使い道があるんじゃないの。
貼り付けた後に、そのまま書式を変更するとかさ。
915デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 08:37:40.53ID:Mv7XM2680
>>913
メンバとオブジェクトの違いって何?
916デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 08:37:49.15ID:BdsW8ng60
>>909
名前付き引数で指定するなら
.End(Direction:=xlUp)
って書ける
917デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 08:39:31.79ID:Mv7XM2680
>>916
なんでカッコがいるんだ…
end direction :=xlupじゃダメなのか…
こういうのって気にする人いる?
エラー出たらかっこつけるとかメソット、プロパティの引数指定にはとりあえずかっこつけるとかしてる?
918デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 08:48:55.22ID:lg6qJlYj0
>>909>>917
今回はプロパティ。さっきのはメソッド
vbaは見た目が一緒だから死ぬほどややこしいけど、まぁいつも通りに書いてればいいよ
俺もendはメソッドと思ってたけど問題なかったし

>>910
そうそう、その辺り考え出すとまぁ例外もあるよな〜って思ってたけどアホらしくなって考えるのを止めた

>>911
このレベルの事を聞きたいなら最低限クラスは覚えないとついていけないぞ
ただそれを理解すれば一気にレベルアップする
919デフォルトの名無しさん (ワッチョイ adda-WKXI)
2019/12/01(日) 08:53:45.63ID:IUtc26dY0
実際、クラスを自作すると、プロパティとメソッドを同じように使うことも出来るから、
どっちでやりゃあいいんだ? ってなるときはある。
920デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:57:20.31ID:qadFHjVDx
>>917
自分で調べるといいよ
921デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:02:35.06ID:qadFHjVDx
VBAのプロパティのアクセサやセッターも実体はただのプロジージャだからね
クラス外から見たらただの関数でしかない
922デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 09:04:09.45ID:lg6qJlYj0
>>921
そこら変がちょっとキモイよなー
完全に挙動が一致してればいいんだけど、見た目が同じで処理が分かれるとなんだこれってなる
923デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:04:20.04ID:qadFHjVDx
>>915
RangeオブジェクトとPasteSpecialメソッドの違いを考えたらわかる
924デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 09:04:29.40ID:Mv7XM2680
なんかイマイチな答えしかこないな

俺は、プロパティ、メソッドで()がつく場合とつかない場合の違いは何?
全部()つけるでいいの?どう意識してるの?ってきいてる

これに対してクラスガーとか言われてもわからん
925デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 09:04:33.88ID:BdsW8ng60
>>917
プロパティの引数の括弧は省略できなかったと思う
メソッド(関数)呼び出しで、戻り値を使わない場合は括弧がなくてもいい

この辺は、大昔の文法との見た目を合わせるための仕様
慣れれば自然と使い分けれるようになるから頑張れ
926デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 09:05:35.25ID:Mv7XM2680
>>923
RANGEもコレクションだろ
RANGE(a1)でメンバーだろ
927デフォルトの名無しさん (ワッチョイ 8101-MhVQ)
2019/12/01(日) 09:05:40.19ID:J+qwPBxd0
北海道のハゲはここにこないのー?
928デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 09:07:25.33ID:BdsW8ng60
>>924
ああ、もちろん引数指定は全部括弧つけるって自分ルールでも問題ない

正直自分でもこのへんの使い分けは感覚で、明確な基準が説明できん
929デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 09:09:06.82ID:Mv7XM2680
>>928
君はどうしてるの?
930デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 09:20:24.90ID:BdsW8ng60
>>929
俺は
名前付き引数は使わない
括弧を省略できるときは省略する

基本はこんな感じ
でもそう書かないときもある
あと複数人でソース見るときは事前にルール決めることもある
931デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 09:27:30.25ID:Mv7XM2680
>>930
なるほど!
名前付き引数を使わないときや戻り値を使うときには()がいる
名前付き引数を使うときは:=で()不要
この認識でいい?
932デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:30:09.60ID:qadFHjVDx
>>926
全然違う
RangeクラスとRangeプロパティを混同してはいけない

Range("A1")の式はWorksheetクラスのメンバのRangeプロパティを引数つきで呼び出している
このプロパティ式で参照を取得しているのが、Excelのオブジェクトモデルで定義されたRangeクラスの実体(インスタンス)、つまりA1セルになる
要するに、Range("A1").Valueと書いた場合、.Value以下がRangeオブジェクトのメンバになる

Rangeクラスがセル範囲のコレクションとして自己再帰的に実装されているのは確かだけどね
933デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 09:34:33.47ID:lg6qJlYj0
>>929
俺は
名前付き引数は使わない
括弧はなるだけ省略しない

かな。括弧なしで空白スペースは見辛い
934デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 09:46:42.50ID:BdsW8ng60
>>931
名前付き引数と括弧の省略は別
戻り値使うなら名前付き引数でも括弧は必要
935デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 09:47:10.20ID:Mv7XM2680
>>932
中級者ならわかるけど
初心者にはまったくわからんな
そこらへんの文法を初心者向けに解説してるサイトある?
936デフォルトの名無しさん (ワッチョイ f6f7-4hBt)
2019/12/01(日) 09:52:34.84ID:bUbToLVg0
カッコ有無でエラー出るときあるの勘弁してほしいわ
937デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:52:45.12ID:qadFHjVDx
>>931
戻り値を使う場合には()が必須、
名前付き引数を使おうが使うまいが()の要否には影響しない、
が正解
括弧つけてても名前付き引数の指定はできるので
938デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 10:01:28.01ID:lg6qJlYj0
更にcallの絡みもある
939デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:05:48.08ID:qadFHjVDx
>>935
緑川吉行っていうOffice/VBA界の有名人が初心者向けに書いた記事
https://allabout.co.jp/gm/gc/297719/

これはコンパクトで分かりやすい。ただし初心者向けにわざとSheetsをオブジェクト名とかコレクション名とか言っているのは問題がある

正確な知識を得るならこっち

インストラクターのネタ帳 -
「オブジェクト名.プロパティ」という解説はウソですよ
https://www.relief.jp/docs/excel-vba-that-is-not-object-name.html
940デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:12:50.14ID:qadFHjVDx
>>938
Callの引数として引数付き関数を呼び出す場合、呼び出される側の引数を特定して先に評価してCallに渡さなきゃいけないから括弧必須なんだよな
しかも戻り値が取れないという
941デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 10:18:48.73ID:lg6qJlYj0
>>939
>「オブジェクト名.プロパティ」という解説はウソですよ
あーそういやそうだな。vbaは色々省略できるから勘違いしていた
new rangeは出来ないわな
942デフォルトの名無しさん (ワッチョイ b1f1-uW/g)
2019/12/01(日) 10:21:01.02ID:19U1wNi50
>>939
どう間違ってるのですか?
943デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:21:51.97ID:qadFHjVDx
>>942
記事を読めば分かる
944デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:25:54.76ID:qadFHjVDx
>>941
組み込みオブジェクトはそもそも仕様としてNewできなさそうだけどな
要は As ActiveCell とか As Cells とかいう型指定が出来ないってことだわ、そういうクラスが存在しないわけだから
945デフォルトの名無しさん (スップ Sd12-a1aH)
2019/12/01(日) 11:08:22.23ID:tARyXBCrd
NEWと言えば何でintegerとかstringは宣言した段階で使えるのに
オブジェクト型はインスタンス化しないと使えんないの?
946デフォルトの名無しさん (ドコグロ MM9a-e3ak)
2019/12/01(日) 11:19:32.90ID:SqfEoEmMM
面倒だから
integerは値型だからとかもっともらしい説明を付けることもできるが、それは結果論に過ぎない
947デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 11:27:41.76ID:lg6qJlYj0
インスタンスという概念が無いとそれが新規のオブジェクトなのか既存のオブジェクトかの見分けが付かないよ
他の言語だとstaticとかインスタンス化せずに使えるクラスもあるけどね
948デフォルトの名無しさん (スップ Sd12-a1aH)
2019/12/01(日) 11:52:45.15ID:tARyXBCrd
インスタンス化は実体化するため=メモリ領域確保するためって解釈だけど
integerだろうがstringだろうがメモリ確保してるわけだし

>>947
dim x as classtest
dim y as classtest
みたいなので見分けってつかないの?
949デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 12:08:59.14ID:qadFHjVDx
正確に言うと値の代入もLetステートメントで行うのがBasic系言語の本来の姿
それを規約上で略記できるようにしているにすぎない
逆にSetステートメントは言語設計上、変数用に確保されたスタックメモリに格納される値がヒープへの参照ポインタであることを示す役割を持っているものと思われる
Variant型変数にオブジェクトを代入するときもこのSetがあるおかげで、スタックの値を参照アドレスとして解釈できるようになっているはず
950デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 12:55:42.14ID:lg6qJlYj0
>>948
サチコ、それインスタンス化や
951デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 12:56:49.87ID:lg6qJlYj0
>>949
そう、setは文法上無いと何かとバッティングしたはず。だからどうしても必要なんだけど、
何だっけな、何でもいいや
952デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 14:45:17.26ID:qadFHjVDx
>>951
Letとのバッティングだろう
推測だが、VB6/VBAのコンパイラは、代入演算子と等価演算子がともに'='であることを前提とした仕様になっているんだと思う
プリミティブ型の値の代入はスタックの値のコピーに他ならないので、代入演算子を等価演算子と混同しても論理矛盾が起きない

オブジェクトの場合はそうはいかないので、オブジェクト変数として型宣言した変数へのインスタンス代入の際にはSetの識別子付与を強制するようにしてるんじゃなかろうか

VB.NETではSetが要らなくなってるからコンパイラの仕様だよなこれは
953デフォルトの名無しさん (ワッチョイ 9279-luhV)
2019/12/01(日) 15:01:32.65ID:pJZuHPp00
参照カウント型GCの都合だよ
Setで左辺のオブジェクトの参照カウントが+1されて変数に束縛される
左辺がNothingだったら束縛していたオブジェクト参照カウントを-1する
変数がemptyやNothingだったら何もしない
見た目以上に重い代入処理
関数や手続きの戻りまで行ったら全てのローカル変数に対してSet 変数 = Nothing相当の処理をする
だから関数の最後でNothingの代入は不要
ただし
954デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 15:36:05.55ID:qadFHjVDx
>>953
知らなかった、ありがとう
代入値の評価をして変数スコープ内で参照カウンタを管理するためのステートメントなのか
確かにそれだとLetと違って省略不可だな
955デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 15:43:44.55ID:BdsW8ng60
>>951
Setが省略できないのはデフォルトプロパティとの絡み
SetもLetもないと、デフォルトプロパティへの代入なのかインスタンスそのものの代入なのか区別がつかないから
文法解釈の問題で、GCや参照カウンタの問題ではないよ

>>952
VB.Netではデフォルトプロパティという概念を変えて
一部条件以外でのデフォルトプロパティの省略を禁止した
コンパイラは文法を解釈してるわけで、言語仕様の問題

ちなみに=が等価演算子か比較演算子かの解釈に、値型か参照型の区別は関係ない
VB.Netがそうだろ
956デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 15:47:47.95ID:qadFHjVDx
>>955
なるほどそういうことか
ありがとう納得した
ここは勉強になるな
957デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 15:49:14.68ID:lg6qJlYj0
>>955
あーそれだ、ありがとう
setが無いと、
foo = cells(1,1)


set foo = cells(1,1)
なのか
foo = cells(1,1).value
なのか、
見分けが付かないって事だね
958デフォルトの名無しさん (ワッチョイ 122f-Ql8R)
2019/12/01(日) 16:05:54.42ID:BdsW8ng60
>>942
ちょっとリンク先見てみたけど、微妙な説明してるなぁ
混乱する一番の原因は、
オブジェクトを返すプロパティには、そのオブジェクトの型と同じ名前を使う
っていう指針があるから

Dim r As Range
のRangeは型名(=オブジェクト名)

Set r = ActiveSheet.Range("A1")
のRangeは文法的にはWorksheetオブジェクトのRangeプロパティ
RangeプロパティはRange型のインスタンスを返す

ActiveSheetなんてオブジェクトはないが、これは
Set r = Application.ActiveSheet.Range("A1")
の省略形とみなされるので、ApplicationオブジェクトのActiveSheetプロパティだと解釈される
ActiveSheetプロパティが返しているものがWorksheetオブジェクト(のインスタンス)

Worksheet型じゃなくてSheet型だろとかいう突っ込みとか
Rangeのデフォルトプロパティだろとかいう突っ込みは勘弁な
959デフォルトの名無しさん (ワッチョイ 9201-MhVQ)
2019/12/01(日) 18:07:13.10ID:Enyr5Fgf0
>>958
> 混乱する一番の原因は、
> オブジェクトを返すプロパティには、そのオブジェクトの型と同じ名前を使う
> っていう指針があるから
違うよ
オブジェクトなんて曖昧な用語を使うから混乱するの
型(クラス)と実体(インスタンス)をきちんと区別すればいいだけ
960デフォルトの名無しさん (ワッチョイ 3275-R3ru)
2019/12/01(日) 19:22:42.00ID:y7nKgQdu0
Select CaseステートメントでLong型変数の判定がおかしいのですがなぜですか?
@では5000未満と判定されているのに、Aではきちんと12500と判定されます

Excel VBA 質問スレ Part63 	->画像>2枚
https://pastebin.com/LvSb9cmT
961デフォルトの名無しさん (ワッチョイ 3275-R3ru)
2019/12/01(日) 19:27:45.01ID:y7nKgQdu0
自決しました
String型で値渡ししてました…
962デフォルトの名無しさん (ワッチョイ 69f0-a1aH)
2019/12/01(日) 19:43:10.04ID:oxdJbHeB0
値型はNewしないで参照型はNewするというルールに従うと
別言語でStringは参照型なのに何でNewしなくていいのかと悩んだな
結局参照型でもNewしなくていい場合があるってスルーするのが一番だけど
963デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 19:55:09.73ID:lg6qJlYj0
stringは今となっては値として何も考えずに使えるよね
昔は配列だの何だの意外とめんどくさかった。更に文字コードやなんやでそれはもう
https://docs.microsoft.com/ja-jp/dotnet/api/system.string?redirectedfrom=MSDN&;view=netframework-4.8#constructors
964デフォルトの名無しさん (ワッチョイ a9b3-nvwQ)
2019/12/01(日) 20:17:07.69ID:Ta8YhOMq0
え、プロパティの引数って絶対に()つけないといけないの?
そこら辺の文法が謎だわ
本でも説明されてないし
ネットで検索しまくってもプロパティの引数には()をつけろなんて書いてないし
どこでそんな知識仕入れてきたの?
965デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 20:27:51.07ID:lg6qJlYj0
そもそもプロパティに引数ってのがよーわからん
getterなんだろうけど
966デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 20:35:21.31ID:Mv7XM2680
>>965
endとかだよ
967デフォルトの名無しさん (ワッチョイ b1d0-o7DB)
2019/12/01(日) 20:44:53.15ID:wgaB7PE60
ActiveSheet.Range("A1") = "TEST"
とか
str = ActiveSheet.Range("A1")
とかの()内のことを言っているんだろうか?
968デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 21:06:45.20ID:qadFHjVDx
>>964
RangeクラスのValueプロパティのアクセサは引数いらないよね
アクセス時に引数を要求されるプロパティとそうじゃないプロパティがあるだけ
969デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 21:14:55.98ID:Mv7XM2680
>>968
プロパティの引数に()いるの?に対してその答えはおかしい
970デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 21:23:50.92ID:qadFHjVDx
>>969
ひょっとしてまだメソッド/プロパティの引数指定の丸括弧記法の話をしていたのか?メゾット君
プロパティのアクセサの引数指定は丸括弧必須
戻り値を取得するための命令だから当たり前
971デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 21:51:43.86ID:lg6qJlYj0
>>966
いや、うん。そこじゃないんだ
普通に考えると「プロパティに引数がいるの?」なんだ
プロパティに引数は普通は不要。プロパティは「セルの内容」「列幅」など、取り出すだけのもの
プロパティてのは大体「設定]的な意味

vbaはかなり古く誕生した言語な割に大変長寿で、かなりおかしなことになっているってのはあるけども

>>958に集約されている
972デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 22:00:59.47ID:qadFHjVDx
>>971
クラス側で保持するプロパティという概念自体には引数という観念が成立しないのはその通り
でもこの人が言ってるのは多分プロパティの受け渡しに使うアクセサの引数のことだと思う
973デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 22:13:02.79ID:Mv7XM2680
>>971
設定に引数がなんで必要ないの??
974デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 22:16:58.66ID:Mv7XM2680
アクセサ VBA

はい、なんもヒットしません
初心者に解説する場合、専門用語を使うってどうなの?
975デフォルトの名無しさん (ワッチョイ 9201-MhVQ)
2019/12/01(日) 22:25:27.99ID:Enyr5Fgf0
プロパティに引数持てる言語はVB系の言語しかないのでそういうもんだと思うしかないような気がする
976デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/01(日) 22:28:21.62ID:Mv7XM2680
プロパティに引数もてるとか持てないとかはっきりしろよ…
977デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 22:29:04.82ID:lg6qJlYj0
>>972
おう、これは本気で行くしか無いぞ
>>973
そうじゃなくて、逆なんだ。vbaにはわざわざ引数が用意されている

プロパティの場合、引数じゃなく代入で済ませる方が自然なんだ

cells(1,1),value = "これを設定する"
A1に"これを設定する"という文字列が入る
この場合、プロパティに引数は使われていない。プロパティに直接代入している

本来ならこう書くべきだ
cells(1,1),value.setter("これを設定する")

この辺りはずっとsetter/getterを用意しようぜって流れが主流になった
978デフォルトの名無しさん (ワッチョイ 9279-luhV)
2019/12/01(日) 22:32:32.45ID:pJZuHPp00
Range COMオブジェクト デフォルトプロパティ
でぐぐると良いかも
979デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 22:52:46.61ID:qadFHjVDx
>>974
VBA アクセサで普通にヒットするぞ
980デフォルトの名無しさん (ワッチョイ b1f1-uW/g)
2019/12/01(日) 23:25:29.33ID:19U1wNi50
>>979
「汗臭」で検索してないか?
981デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/01(日) 23:43:26.99ID:lg6qJlYj0
>>980
君は生きている価値もないかな、と感じた
自分の存在価値を下げるような発言は謹んだ方が良いと思うよ
982デフォルトの名無しさん (ワッチョイ b1f1-uW/g)
2019/12/01(日) 23:46:59.48ID:19U1wNi50
>>981
なんだとこのツルッパゲ!
983デフォルトの名無しさん (ワッチョイ 8101-MhVQ)
2019/12/01(日) 23:49:23.02ID:J+qwPBxd0
グラサンのハゲはここにこないのー?
984デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/02(月) 06:20:27.87ID:jajTU6Llx
このあたりの話は自分でクラスを作ったことがなければ分からないと思う
ともあれ、質問者の意図は引数付きのプロパティ式で丸括弧を省略できるかどうかという話なんだろうから、出来ないという結論で締めて終わり
要するにRange("A1")をRange "A1" とは書けない
これだとRangeという名前のSubプロジージャに引数"A1"を与えるという全くデタラメな構文になる
985デフォルトの名無しさん (アウアウウー Sacd-W09L)
2019/12/02(月) 10:25:16.60ID:9b18ESq8a
hage("A1")
986デフォルトの名無しさん (ワッチョイ b1f1-uW/g)
2019/12/02(月) 12:07:45.41ID:b+6W/5Or0
Tsuruppage("A1")
987デフォルトの名無しさん (スッップ Sdb2-iiDQ)
2019/12/02(月) 12:58:25.24ID:bEJSdplkd
初心者にとって感覚的に分かりやすいのは戻りを使う場合はカッコを使う。
戻りを使わない場合はカッコを使わない。
Call文だけ例外でカッコを使う。

で良いんじゃね?
988デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/02(月) 20:27:37.88ID:HFZWrDUD0
>>987
end(xlup)
戻り値ってなんだ?
989デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/02(月) 20:40:04.97ID:4BXx3P/Mx
>>988
返り値は連続領域の下端のセルを表すRangeオブジェクトだよ
Microsoftの公式のリファレンスくらい読んだら?
990デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/02(月) 20:41:20.57ID:4BXx3P/Mx
>>988
間違えた、xlupなら上端のセルだな
とにかく仕様理解のためには公式リファレンスに勝るものはないから返り値くらいはちゃんと調べたらいい
991デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/02(月) 21:03:22.49ID:HFZWrDUD0
>>990
ENDの()のどこが戻り値なのかきいてんだよ…
ガイジかよ
992デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/02(月) 21:21:14.86ID:4BXx3P/Mx
>>991
戻り値の意味が分かってなくて草
Expression.End(Destination)っていう構文全体が戻り値を指し示してるんだが
993デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/02(月) 21:52:36.19ID:HFZWrDUD0
Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlInsideHorizontal

わかりやすくな
プログラム初心者でもわかるように解説しろ
ボーダーには()でラインスタイルには=
どちらもプロパティなはず
なんで?
どれがなにの戻り値なの?ってのを
主語がなかったりテキトーなカタカナでごまかしてるのおおすぎ
994デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/02(月) 22:05:27.19ID:gEmwbuWH0
日本語崩壊してて草
995デフォルトの名無しさん (ワッチョイ 8101-MhVQ)
2019/12/02(月) 22:05:27.56ID:h5Kj2a0d0
北海道でスーパーハゲをしてるグラサンのおっさんこないのー?
996デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/02(月) 22:13:40.36ID:4BXx3P/Mx
LineStyleプロパティは引数の指定を要求されないプロパティだから()による引数指定は要らない

かつ、Linestyleプロパティは値の読み取りの他に値の設定も可能なプロパティなので、代入演算子の = でxlLineStyle列挙体の定数を設定することにより、罫線の書式を設定できる

プロパティだから()が必要なんだとか=が必要なんだとかっていう単純な捉え方は理解の妨げになるからやめた方がよい

引数による要素の指定を要求/許容しているのか、値の読み取りだけでなく値の設定も出来るのかといった個々のプロパティの仕様の違いにより、式の書き方が変わるだけ
997デフォルトの名無しさん (ワッチョイ f668-3RYV)
2019/12/02(月) 22:16:41.89ID:gEmwbuWH0
ってかこの一連の問題、すげー難しいよ
初心者を自覚してるならあまり深く考えないほうが良いと思う
得るものは少ない、ぱっと書き方だけ覚えてどんどん次へ進んだほうがいいような
998デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/02(月) 22:17:27.68ID:4BXx3P/Mx
WorksheetオブジェクトのCellsプロパティなどは引数なしでも引数ありでも使用できるし、=で値も設定できる
()の要不要とか=を用いた代入の可否なんてプロパティの仕様によるとしか
999デフォルトの名無しさん (ワッチョイ f602-FWG3)
2019/12/02(月) 22:20:20.67ID:ONNaKUnx0
>>993
こう説明したらわかる?

Cellsの戻り値に対して.Borders〜〜って事
Borders(xlDiagonalDown)の.LineStyleに対して = xlInsideHorizontalって事
1000デフォルトの名無しさん (ワッチョイ a901-SL5O)
2019/12/02(月) 22:20:29.46ID:HFZWrDUD0
>>996
引数の要求をされないプロパティ??
linestyleだけではエラーになるのでは?
レンジのラインスタイルです!だけは意味不明でしょ

値の設定?読み取り?
設定 罫線を引く?
読み取り ???
つまりどういうこと?

定数を設定??
bordersの引数も定数では?
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 2時間 45分 30秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

ニュース



lud20250305101016nca
このスレへの固定リンク: http://5chb.net/r/tech/1568630099/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Excel VBA 質問スレ Part63 ->画像>2枚 」を見た人も見ています:
Excel VBA 質問スレ Part80(ワッチョイあり)
Counter-Strike: Global Offensive 質問スレ Part3
+ JavaScript & jQuery 質問用スレッド vol.8 +
【BlackDesert】黒い砂漠質問スレPart38
【BlackDesert】黒い砂漠質問スレPart45
シノアリス質問スレ【SINoALICE】 Part4
【BlackDesert】黒い砂漠 質問スレ Part29
【BlackDesert】黒い砂漠 質問スレ Part30
【BlacKDesert】黒い砂漠PC版 質問スレpart79
【Dead by Daylight】PC版質問スレ【DbD】 part28
【Switch】Xenoblade2 質問スレpart7【モノリス】
【BlackDesert】黒い砂漠 質問スレ Part14 [無断転載禁止]
【D2R】Diablo 2 Resurrected 質問スレ Part5【リマスター】
Cubaseシリーズ 初心者質問スレ Part21
【シャドウバース】shadowverseデッキ診断・質問スレ part11
【iOS/Android/PC】ウマ娘 プリティーダービー 質問スレ Part22
【iOS/Android/PC】ウマ娘 プリティーダービー 質問スレ Part2
【TESO】The Elder Scrolls Online 質問スレ Part43
Fate/Grand Order どんな質問にも全力で優しく答えるスレ Lv.5 c2ch.net
KAROS ONLINE 質問スレッド Part4
Blender 初心者質問スレッド Part39
Blender 初心者質問スレッド Part29
セキュリティ初心者質問スレッドpart132
Mozilla Firefox質問スレッド Part189
5chブラウザ「ChMate」質問スレ Part74
5chブラウザ「ChMate」質問スレ Part83
5chブラウザ「ChMate」質問スレ Part68
Mozilla Firefox質問スレッド Part176
5chブラウザ「ChMate」質問スレ Part73
5chブラウザ「ChMate」質問スレ Part68
5chブラウザ「ChMate」質問スレ Part60
【質問スレ】ESCAPE FROM TARKOV Part.5
5chブラウザ「ChMate」質問スレ Part54
5chブラウザ「ChMate」質問スレ Part53
セキュリティ初心者質問スレッド Part141
【MobA】vainglory初心者質問スレ ★Tier3
【MobA】vainglory初心者質問スレ ★Tier9
【MobA】vainglory初心者質問スレ ★Tier12
【初心者】ダイエット質問・相談スレPart215
【初心者】ダイエット質問・相談スレPart231
【初心者】ダイエットの質問・相談スレPart189
【初心者】ダイエット質問・相談スレPart224
iPhone 質問スレッド part57 【本文引用禁止・ワッチョイ有】
【プリコネ】プリンセスコネクト! Re:Dive質問スレ Part11
【PS4/XB1】SEKIRO:SHADOWS DIE TWICE 質問スレ Part4【隻狼】
Fate/Grand Order 質問スレ Lv.28
Fate/Grand Order 質問スレ Lv.29
Fate/Grand Order 質問スレ Lv.19
PCゲーム雑談・質問スレツド Part 2
【FM】Football Manager 質問スレ 36
Mozilla Thunderbird 質問スレッド 28
【FM】Football Manager 質問スレ 35
【海外通販】AliExpress初心者質問スレ 15
【海外通販】AliExpress初心者質問スレ 20
【PoE】 Path of Exile 質問スレ part43
【PoE】 Path of Exile 質問スレ part18
Jane Styleの質問に誰かが答えるスレ Part21
【PoE】 Path of Exile 質問スレ part20
【PSO2】PHANTASY STAR ONLINE2 質問スレ1
Jane Styleの質問に誰かが答えるスレ Part55
【PSO2】PHANTASY STAR ONLINE2 質問スレ71
【LoL】League of Legends 質問スレ Part64
【LoL】League of Legends 質問スレ Part67
Hearthstone: Heroes of Warcraft 質問スレ part40
Fate/Grand Order どんな質問にも全力で優しく答えるスレ Lv.1
20:10:18 up 50 days, 21:13, 0 users, load average: 50.98, 70.58, 77.21

in 2.5148420333862 sec @1.6769280433655@0b7 on 030510