Excel VBA 質問スレ Part68at TECH
Excel VBA 質問スレ Part68 - 暇つぶし2ch75:デフォルトの名無しさん
20/09/05 16:25:38.15 STsU3nz1r.net
>>64
インデックスじゃないの?

76:デフォルトの名無しさん
20/09/05 16:34:57.30 BMRcPhN/d.net
>>74
列がわかったなら行もわかるはずだが…

77:デフォルトの名無しさん
20/09/05 17:24:34.57 wG6iKMy+0.net
>>74
そろそろ消えろ

78:デフォルトの名無しさん
20/09/05 17:30:09.65 k1PkCOGDM.net
>>74
相対(a2,行,列)
0の場合は省略可なので
相対(a2,行)とか相対(a2,,列)でもいい

79:デフォルトの名無しさん (スフッ Sd7f-7sgX)
20/09/05 17:54:39 HmyJ6FBVd.net
>>78
それはvbaのoffsetの構文であって設問の問題文とは関係ないな

80:デフォルトの名無しさん
20/09/05 18:10:48.71 BBnzOe5t0.net
>>62
の質問内容がひどすぎて
誰もくいつかないなw

81:デフォルトの名無しさん
20/09/05 18:23:56.02 eBP4WmWUa.net
お金が発生するわけでもないし

82:63 (ワッチョイ 0701-zmOT)
20/09/05 18:58:31 ZUfl2WLX0.net
>>78
ありがとうございます。
とても助かりました。

83:デフォルトの名無しさん
20/09/05 20:42:59.70 XhaSpdgL0.net
>>62
Range(Rows(Range("A1").Value), Rows(Range("B1").Value)).Rows.Hidden = True

84:デフォルトの名無しさん
20/09/06 09:47:35.66 cKQMszzk0.net
>>57
値で貼り付けるなら、後から
.NumberFormatLocal = "yyyy/m/d h:mm;@"

85:デフォルトの名無しさん
20/09/06 09:49:52.25 cKQMszzk0.net
>>63
答えは簡単だが、質問が難しすぎる。

86:63
20/09/06 14:01:01.76 spMqG8Fw0.net
>>85
上手く質問できなくて申し訳ありません。
全体的な単語の一つ一つの意味が知りたかったのです。
お手隙ならばで構わないのですが、
URLリンク(www.fe-siken.com)
この問題の設問3の重みパラメータというのがどう作用して出力Zの値になるのか教えて頂けないでしょうか。

87:63
20/09/06 14:02:20.47 spMqG8Fw0.net
あ、すみません。問題よく読んでませんでした。
これについてはレス直後理解しました。
ごめんなさい( ;ᯅ; )

88:63
20/09/06 14:27:55.58 spMqG8Fw0.net
URLリンク(www.fe-siken.com)
この設問1の答えなんですが、この文でどうして結合とか保護者の氏名と住所を抽出するのですか?

89:デフォルトの名無しさん
20/09/06 14:33:06.47 PpfBKGYq0.net
>>84
これで出来ました
ありがとうありがとうありがとううううううううーー

90:デフォルトの名無しさん (ワッチョイ 7f8e-+abr)
20/09/06 18:43:46 Mql9n0EK0.net
>>88
死ね

91:デフォルトの名無しさん
20/09/07 05:30:38.87 OoqPbQfP0.net
>>90
お前が死ね
ゴミ山猿の屑野郎

92:デフォルトの名無しさん (ワントンキン MMab-AmFM)
20/09/07 12:55:41 ZbJzmFKoM.net
>>91
内容も読まずに書くなよクズ。SQLのことだろうが。

93:デフォルトの名無しさん
20/09/07 18:18:17.86 R5ozSk7c0.net
ここで質問したらダメだったみたいですね
該当スレとかあるのでしょうか

94:デフォルトの名無しさん
20/09/07 18:26:10.30 aZP2Fcscd.net
>>93
スレリンク(welfare板)

95:デフォルトの名無しさん
20/09/07 18:43:17.53 K46ocmR8a.net
>>88
これをどこで聞けばいいのかもわからなかったらFE受かるの難しいよ…

96:デフォルトの名無しさん
20/09/07 20:07:21.03 Yu9E5X6OM.net
VBA勉強しはじめて、ようやくOutlook連携とかzip圧縮とかやり始めたんだけど
Excelそのものの操作に関する情報と比べて、参考に出来る情報の質も量もガクッと落ちた気がする
やっぱ話題のpythonに切替えたほうが悩まずやれるのだろうか

97:デフォルトの名無しさん
20/09/07 20:09:11.40 Yu9E5X6OM.net
質も量も、っていうのはノンプログラマーの自分が探せる範囲って意味です

98:デフォルトの名無しさん
20/09/07 20:22:49.70 sgrgY4Mk0.net
zip.exe叩けばええやろ

99:デフォルトの名無しさん (ワッチョイ 5f6d-4jJb)
20/09/07 20:51:37 /DR3/4oV0.net
目の前に答えが書いてあっても理解できない、答えだと気付けない
これが「馬鹿には無理」の意味

100:デフォルトの名無しさん (テテンテンテン MM8f-Ccsn)
20/09/07 21:00:18 Yu9E5X6OM.net
半年ROMって勉強します押忍押忍押忍

101:デフォルトの名無しさん
20/09/07 21:22:51.97 JIC+p5t3M.net
何をしたいかによるけど、Windowsの操作の自動化っていう範疇ならPowerShellおすすめ
Comオブジェクトも使えるよ

102:デフォルトの名無しさん
20/09/07 21:38:02.53 J1GBImUha.net
なにがおかしいの?
Sub func()
Dim url As String: url = "URLリンク(e-hentai.org)
Dim buffer As String: buffer = ""
Dim objLinks As Object
Dim objIE As InternetExplorer
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False
objIE.navigate (url)
Do While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Call WaitFor(3) ' wait for 3 seconds
objLinks = objIE.document.getElementsByClassName("gdtm").outerHTML
Cells(1, 1).Value = objLinks
objIE.Quit
Set objIE = Nothing
End Sub
Function WaitFor(ByVal second As Integer)
Dim futureTime As Date: futureTime = DateAdd("s", second, Now)
While Now < futureTime
DoEvents
Wend
End Function

103:デフォルトの名無しさん
20/09/07 22:46:01.59 qahfABoQ0.net
IEはもう無くなるよ

104:デフォルトの名無しさん
20/09/07 22:49:52.43 744b2nM10.net
>>102
Dim objLinks As String

105:デフォルトの名無しさん
20/09/07 22:54:20.72 VQNIMFGd0.net
>>103
IEの代替え何使ったらいいの?

106:デフォルトの名無しさん (ワッチョイ 27ce-n8ne)
20/09/07 23:07:32 744b2nM10.net
>>105
データをダウンロードするだけならブラウザを使わずに直接ネットアクセスした方が早くて簡単
色んな方法があるけどXMLHTTPとかWinHttpRequestとか調べてみ

107:デフォルトの名無しさん (ワッチョイ bfc9-XrX+)
20/09/07 23:17:00 VQNIMFGd0.net
>>106
ありがとうございます


'JavaScriptを実行しFormを送る処理
objIE.Navigate "JavaScript:doAction('/文字列')"

みたいなことしないとアクセスできないサイトのデータが取得したいのですが
他に方法ありますか?

108:デフォルトの名無しさん (ワッチョイ e7e6-n8ne)
20/09/07 23:22:23 sgrgY4Mk0.net
JavaScriptを読んで何やってるか調べろ

109:デフォルトの名無しさん
20/09/07 23:49:39.86 744b2nM10.net
>>107
Form送信は単純なHTTPアクセスで代替できるケースが多いから、これもブラウザを使う必要はない
てか、WEBの構造はVBA関係ないし

110:デフォルトの名無しさん
20/09/07 23:56:10.64 UwONkXQv0.net
エクセル2010です。
上書き保存時にすべてのシートでA1セルを選択するようにしたいのですが、
Ctrl+S時とボタンのクリックイベントで挙動が違うことにハマってます。
1枚目シートにactiveXコントロールのボタンを配置し、VBAの構成は以下です。
1. シートモジュール : ボタンのクリックイベントにThisworkbook.saveだけを書いています。
2. ThisWorkbookモジュール : beforeSaveイベントで3を呼び出し。
3. 標準モジュール : 全シートのA1セルを選択するSubプロシージャ。ForEachでまわすだけ。
Ctrl+Sの際は2→3でうまくいきます。
ボタン押下の場合は、1→2→3と流れてはいるものの、なぜか各シートがactivateされなず、activeSheet.Range("A1").Selectが働きません。
1のクリックイベントから直接3を呼び出すのは、うまく行きます。
何故このような挙動になるのか分からず数日ハマってます。
どなたか、ご教示よろしくお願いします。

111:デフォルトの名無しさん
20/09/08 02:03:49.70 weDKADyMM.net
>>110
for i= activeworkbook.worksheets.count to 1 step -1
apprication.goto activeworkbook.worksheets(i).range("a1")
next i
activeworkbook.save
スマホ打ちだから綴りミスはあるかも

112:デフォルトの名無しさん
20/09/08 07:47:00.42 vMdvrooDa.net
>>110
For eachで全シート回してるならActivateしなくても、
sh.Range("A1")で行けないか?

113:デフォルトの名無しさん
20/09/08 07:48:01.88 vMdvrooDa.net
>>112
間違えたsh.Range("A1").Selectだわ

114:デフォルトの名無しさん (ワッチョイ 27da-XrX+)
20/09/08 10:40:31 C66iYfBu0.net
>>110
働かないという場合の原因で以下のことを調べてみ

1.実は働いていたがその後に別の動作をしたため働いていないように見える
2.働こうとしたが、なんらかの異常が出て失敗している
3.その処理が実行されていない(on errorやifの条件、イベント発生していないなど)

115:デフォルトの名無しさん
20/09/08 11:03:00.55 0vfIbeP00.net
>>105
漏れは、yahoo のログインとか、
Ruby, Selenium Webdriver で、ブラウザを自動操作してる
単純なダウンロード・スクレイピングなら、RubyのNokogiri。
外部コマンドなら、curl, wget

116:デフォルトの名無しさん (ラクッペペ MM8f-dQ4P)
20/09/08 11:52:57 POT3YWITM.net
Application.EnableEvents=Falseしてるとか?

117:デフォルトの名無しさん
20/09/08 16:58:59.99 qXkQmTRa0.net
“>-1”&i
て書いたときに >-2, >-3... っていうふうに比較値が意図せず負に進むんだけど正の値に足したい場合ってどうすれば良いでしょうか。

118:デフォルトの名無しさん
20/09/08 18:39:01.86 p9XW8v7Na.net
>>117
VBAの挙動の問題
-を文字列、1を数値として認識してる
そもそも、-1をダブルクォーテーションで括ってるのは文字列として-1を認識させたい時のみにするのが基本
なので、ダブルクォーテーションを取ってやれば意図通り動くはず

119:デフォルトの名無しさん
20/09/08 19:07:42.80 Pjd0b/NhM.net
へー、そんな挙動するんだ。知らなかった
>-11
>-12
>-13
になると思ってたよ

120:デフォルトの名無しさん
20/09/08 19:08:20.88 E23V8S4o0.net
>>113
activeじゃないシートはselectできないと思うが

121:デフォルトの名無しさん
20/09/08 19:10:47.69 E23V8S4o0.net
>>110
Forの中身が間違ってるとか別のブックを見てるとか
ほんとに選択したいシートが選択されてるか確認した?

122:デフォルトの名無しさん
20/09/08 20:06:33.41 qXkQmTRa0.net
>>118
クォーテーション外してやってみたけど上手くいかないです...
初心者なんで拙いですが、一応自分で書いたものをのせます。
既出のデータを整理して2次元チャートを作成する目的です。
Dim cnt As Integer
Dim x As Long
Dim y As Long
x = 0
y = 0
For x = 0 To 10
For y = 0 To 10
cnt = WorksheetFunction.CountIfs(Range("B2", Range("B2").End(xlDown)) "<=" 0 + x, Range("B2", Range("B2").End(xlDown)) ">= -1" & x, Range("C2", Range("C2").End(xlDown)) "<= 0" & y, Range("C2", Range("C2").End(xlDown)) ">= -1" & y)
Cells(x , y) = cnt
Next y
Next x

123:デフォルトの名無しさん
20/09/08 20:34:38.38 E23V8S4o0.net
いつも人任せだな…
そのcountifの引数の中身が自分の意図した内容かなんで確認しないの?

124:デフォルトの名無しさん (ワッチョイ 5fb5-/qgI)
20/09/08 21:43:07 MiWYYVaX0.net
もう30過ぎて勉強もなぁ…って手が進まない
VBAを知識をパンパンに詰め込んでああこれねって感じでカタカタと打ち込んでプロシージャ作りたいもんだわ

125:デフォルトの名無しさん (ワッチョイ e77c-ALHH)
20/09/08 21:57:43 E23V8S4o0.net
考えることを人に丸投げしてるだけで勉強は関係がない

126:デフォルトの名無しさん (ワッチョイ 5fb5-/qgI)
20/09/08 22:00:12 MiWYYVaX0.net
人に丸投げというかネットで拾ったものの組み合わせでいつも何とかしてしまう
知識がほとんど入らない
異動希望出してるしなぁ

127:デフォルトの名無しさん
20/09/08 22:06:16.19 aT8iqlgZ0.net
エクセルの指定列から3列コピーしてその4列目に挿入して貼り付けた後セルに入ってる値を消すコードをRangeじゃなくてCellsでやりたいです。
clmtar=10
10~13列をコピー
14列目に挿入
14~17列目のセルの値クリア。

128:デフォルトの名無しさん
20/09/08 22:11:08.52 +kf0/gdp0.net
>>127
コピー後の値を消すの?
元通りになるだけだと思うけど

129:デフォルトの名無しさん
20/09/08 22:29:42.46 C66iYfBu0.net
>>126
愚痴る暇があったら入門書かって1ページでもいいから読んでろ

130:デフォルトの名無しさん
20/09/08 22:34:56.39 MiWYYVaX0.net
>>129
すんません…なんか職場でおばちゃんがあれも作ってとか調子こいてるだけで
こりゃまた愚痴だわ
これぞ!っていう入門書ありますかね
イチからガチで鍛えてみるかな

131:デフォルトの名無しさん
20/09/08 22:36:08.93 8mxHLcBxa.net
>>126
なんとかできてるならそれも実力のうちなのだと思うよ
楽しい、自分ならこうしてみたい、こうしたらどうなるのだろう
とかがないならそこまでだけど

132:デフォルトの名無しさん
20/09/08 22:40:05.68 MiWYYVaX0.net
ネットで検索
プロシージャを組み合わせたり簡単なところをイジる
出きたと思ったら会社のメルアドにプロシージャ貼り付けたテキスト送る
会社で組み合わせる
UserFormのボタンに割り当て
これでごまかしつつやってきた
圧倒的な知識が欲しいなぁと

133:デフォルトの名無しさん
20/09/08 22:47:12.09 C66iYfBu0.net
>>130
それすら他人に頼るようじゃいつまでたっても進まない

134:デフォルトの名無しさん
20/09/08 22:50:54.91 E23V8S4o0.net
今までどおり困ったら初心者ですとか勉強中ですとかで知識ないアピールで人にやらせて突っ込まれたら謎の正当化とどうでもいい言い訳で誤魔化してやっていくんだろうな

135:デフォルトの名無しさん
20/09/08 22:52:28.72 MiWYYVaX0.net
ネットで調べてなんとかなってしまう時代のせいだよね
俺は悪くない

136:デフォルトの名無しさん (アウアウウー Sa8b-yCsQ)
20/09/08 23:27:06 HhRrDF1oa.net
そういう人が増えてきたからあんまり教えないようにしてる

137:デフォルトの名無しさん
20/09/09 00:19:56.45 akgtbWjMM.net
ゆとり世代の特徴だぞ

138:110
20/09/09 00:23:30.44 Lvk20igu0.net
>110です。
書き込み後にいろいろググったところ、いくつかのサイトで
コードからの保存はbeforeSaveイベントが正常に働かない旨の記載がありました。
今回の事象もこれに当たるのかなと考えています。
そんな訳で、ボタンでの保存はenableEventsをfalseにして別処理にしました。
回答くださった皆様、ありがとうございました。

139:デフォルトの名無しさん (ワッチョイ eab5-mjPJ)
20/09/09 00:53:57 0o8c0VF10.net
別にここで聞いても答えなんて返ってこないし期待してないのでご安心を

140:デフォルトの名無しさん (ワッチョイ 39e6-Pwf7)
20/09/09 01:12:42 VoppH/up0.net
足し算がわかりませんとか言われても入門書でも読めとしか言えないよな

141:デフォルトの名無しさん
20/09/09 04:06:45.89 Y+JI74HRa.net
入門書読めと言うとどの入門書がいいか聞いてくるよ

142:デフォルトの名無しさん
20/09/09 08:19:04.77 z9RILJ2v0.net
入門書を紹介すると今度はどこで買えばいいか聞いてくるよ

143:デフォルトの名無しさん
20/09/09 09:27:32.52 8tppu1V70.net
通販で買えって言うとお金がないって言ってくるよ

144:デフォルトの名無しさん
20/09/09 09:43:27.85 9AZapVJXM.net
お金あげると姿をくらますよ

145:デフォルトの名無しさん (ワッチョイ 397c-bL/7)
20/09/09 10:03:14 I5K9tGVf0.net
しかも捨て台詞付きで

146:デフォルトの名無しさん
20/09/09 10:37:20.74 KbsHkxtjM.net
すみません。ちょっと長くなってしまうのですがTreeViewをいじっているうちに分からない事があったので教えて下さい。
TreeViewの子ノードをD&Dでリストボックスにコピーする動作を作っていたのですが、ドラッグ開始時点のSelectedItemを取得しようとすると1度子ノードをクリックした上でD&Dを行う必要がありました。
その為、既定引数のⅹPOS,yPOSを使ってHitTestをSelectedItemに代入しようとしました。
しかしそれが上手く動作せず色々調べた結果、
xとyに*15をすると言う記述を見つけ試してみたところ、思い通りの動作を得られました。
しかしながらこの15はなんの15なんだ。他の環境ではこの数値は変わるのか。変わるならば何を元に算出すれば良いのだろうか。
という疑問が浮かびました。
お手数をお掛け致しますがお分かりになる方がいらっしゃいましたらご教授頂けませんでしょうか。

147:デフォルトの名無しさん (ワッチョイ 6a2f-sa+Q)
20/09/09 14:26:55 dKuEV/F30.net
まずその15をかけるってどこに書いてあったんだよ

148:デフォルトの名無しさん (アウアウカー Sa55-hUiG)
20/09/09 16:31:31 0Qh2iKtEa.net
Windows標準のシステム解像度だとピクセルとTwipsの比率が1:15だからってスタックオーバーフローに書いてあった


149:



150:デフォルトの名無しさん (ラクッペペ MM3e-AH3D)
20/09/09 17:07:35 cdbk3sfrM.net
c言語のdefineに相当する文法は無いですか?
constだと違和感がありますので

151:デフォルトの名無しさん (ブーイモ MM8e-+eY2)
20/09/09 17:36:02 KbsHkxtjM.net
>>148
助かります
ありがとうございました

という事は使用環境次第では正常に動作しない場合も有り得るって事なのですね。対策を検討してみます。

152:デフォルトの名無しさん
20/09/09 17:50:55.91 jCqtOC3ba.net
>>149
どこに違和感があるのかを言わないと案を出せません

153:デフォルトの名無しさん (ワッチョイ 2a1f-ah1O)
20/09/09 20:59:39 ynJDkc680.net
>>128
コピー後挿入したら隣に3列追加されてセルの長さもコピーした3列と同じになりますよね?

154:デフォルトの名無しさん (ワッチョイ 397c-bL/7)
20/09/09 21:05:53 I5K9tGVf0.net
列幅をコピーすればいいのでは…

155:デフォルトの名無しさん (ワッチョイ 3d3d-PnJR)
20/09/09 21:18:50 Uey8EdNp0.net
>>152
幅を一緒にしたいなら最初からそう書けば良かったのに

156:デフォルトの名無しさん (ワッチョイ a95f-Sism)
20/09/10 00:02:31 a+RPoaYl0.net
>>149
あなたが思っているC言語のdefineの使い方は、コンパイラが置換するもので、定数の概念とは少し違いますよ?

157:デフォルトの名無しさん
20/09/10 00:04:04.82 a+RPoaYl0.net
>>152
そもそも列の挿入操作が必須なのか?

158:デフォルトの名無しさん
20/09/10 00:05:42.63 a+RPoaYl0.net
列の挿入なんてあちこちに影響するから、やりたがる理由がわからない。

159:デフォルトの名無しさん (アウアウウー Sa21-zN8f)
20/09/10 01:40:18 JZj4+m/Aa.net
条件付き書式が壊れたりすると面倒

160:デフォルトの名無しさん (ワッチョイ a95f-Sism)
20/09/10 02:24:17 a+RPoaYl0.net
自分の操作と同じ手順を踏みたいだけなんだろうね

プログラマではない素人感覚

161:デフォルトの名無しさん
20/09/10 04:18:44.38 026ADmyCa.net
test

162:デフォルトの名無しさん (ブーイモ MM8e-4twR)
20/09/10 07:50:51 T4cQI13RM.net
超初心者なんだけど
配列の中から指定値の近似値の座標を検索するのにいい感じの方法はないでしょうか
(以下、以上、完全一致全て含めての近似値)

163:デフォルトの名無しさん
20/09/10 08:50:52.35 l+lun8zfM.net
どうせ大した数じゃないんだろ
総なめしろよ

164:デフォルトの名無しさん
20/09/10 09:29:12.78 rdKJuFJTa.net
>>161
for eachで比較対象値と指定値を全て比較して、結果出力してその中でMIN関数使えば

165:デフォルトの名無しさん
20/09/10 10:03:54.29 QatXFD490.net
>>161
前もってソートした配列作って二分探索か、
配列の値-指定値の絶対値が最小になる値を探す

166:デフォルトの名無しさん
20/09/10 10:32:25.89 vUgEJ8vWd.net
Min(Abs(配列-指定値))

167:デフォルトの名無しさん
20/09/10 12:18:21.67 tJgZROmkM.net
指定値と配列値の差分を絶対値にして比較した場合、
指定値が5だとして
配列  差分(ABS)
4     1
7     2
となり、最小の差分は1とわかる
座標を知りたいので指定値(5)-差分(1)=4となり、配列の中から4を検索して座標を調べればいいのかなって思ってたんだけど
絶対値で出てくると5-1か5+1どっちを検索すればいいか不明じゃないですか?
そこらへんを解決する方法があれば聞きたいです

168:デフォルトの名無しさん
20/09/10 12:33:38.92 l+lun8zfM.net
ひとつに絞りたいならお前がルールを決めればいい
お前に決定権がないなら保護者に聞け

169:デフォルトの名無しさん (ワッチョイ 7d01-pVuC)
20/09/10 12:50:19 /arv21np0.net
ExcelVBAのフレームワークってないんですか?

PHPやJavascriptはまずフレームワーク覚えるもんだと思うのですが
VBAだとそういうのが見当たらなくって・・・

170:デフォルトの名無しさん (ブーイモ MM81-m2CW)
20/09/10 12:52:37 sAyQhYLaM.net
見よう見まねで結構大掛かりなマクロを作った
情シスには程遠い事務の部署で
改善賞1万円
うーんもうちょい欲しかった

171:デフォルトの名無しさん (スフッ Sd0a-EJMP)
20/09/10 13:06:54 PB4qSPsyd.net
オフイスを便利に使うためのお手軽言語でフレームワークの勉強とかやってたら非効率な上に大したメリットもない

172:デフォルトの名無しさん
20/09/10 13:09:58.25 4uvZuCuyM.net
フレームワークという意味ではVBAそのものがVB6のOffice向けフレームワーク
さらに言えばExcel向けに特化したものがExcelVBA
他のOfficeソフトにもそれぞれのVBAがある

173:デフォルトの名無しさん
20/09/10 13:11:29.05 XKC0VKf0M.net
>>167
一つに絞りたいというか最も近しい値を知りたいのです
指定値が5のとき、配列が4と7なら4を、3と6なら6の座標を調べたい
1万行は超えるから総なめはちょっと…

174:デフォルトの名無しさん
20/09/10 13:21:59.05 4mlwjCSed.net
>>172
パソコンにとっては「たった」1万行だよ
総舐めが一番簡単だし、開発時間も含めれば一番早い

175:デフォルトの名無しさん
20/09/10 13:23:29.76 4mlwjCSed.net
総舐めでもここでグダグタ言ってる間に結果が出る

176:デフォルトの名無しさん
20/09/10 13:38:32.36 l+lun8zfM.net
>>172
は? 質問は4と-4だろ?
もう俺が決めてやるよ
-4にしろ、はい解決

177:デフォルトの名無しさん
20/09/10 13:41:25.58 Yq3PJL3D0.net
セルを弄くり回すとかじゃなくて配列のまま総舐めするなら1万行ぐらいすぐ終わるでしょう
指定した値aの近似値が欲しいなら
If a-x<=Array(i) And a+x>=Array(i) Then
とかで引っ掛かる奴を引っ張り出すなりなんなりすりゃあ良い

178:デフォルトの名無しさん
20/09/10 13:43:28.62 l+lun8zfM.net
あ、ごめん
俺が質問を勘違いしてたわ

179:デフォルトの名無しさん
20/09/10 13:48:20.19 Yq3PJL3D0.net
近似値の範囲が不定で最も近い値を探すって言うならRank関数とかLarge関数とかSmall関数使うのも手

180:デフォルトの名無しさん
20/09/10 13:50:34.65 l+lun8zfM.net
>>168
各オブジェクトに多数のイベントが設定されているでしょ
windowsのプログラミングはイベントドリブンが基本
ブックが開いた、ボタンが押された、マウスが動いたなどのイベントに対するコードを書いていけばアプリケーションが完成する

181:デフォルトの名無しさん (ワッチョイ 3dad-sCec)
20/09/10 18:35:00 VdzBOqiR0.net
すみません今宿題でこれやってるんですけど打ち込んでもなにも出ないのですがなぜでしょう

182:デフォルトの名無しさん (ワッチョイ 3dad-sCec)
20/09/10 18:36:01 VdzBOqiR0.net
URLリンク(i.imgur.com)
これです

183:デフォルトの名無しさん (ワッチョイ 6a42-vvkI)
20/09/10 19:09:29 yo745YZ80.net
打ち込んだだけで実行してないからじゃね

184:デフォルトの名無しさん
20/09/10 19:30:20.82 L0+T18/AM.net
どこに打ち込んだかも分からないしなんとも

185:デフォルトの名無しさん
20/09/10 19:46:53.46 cO3BfNoWM.net
汚えコードだな

186:デフォルトの名無しさん
20/09/10 19:55:23.47 T9YJeJvx0.net
>>166
コードが汚すぎる

187:デフォルトの名無しさん (ワッチョイ 11da-pVuC)
20/09/10 20:10:09 QatXFD490.net
>>181
セルの幅や高さは初期状態?

188:デフォルトの名無しさん (ワッチョイ 11da-pVuC)
20/09/10 20:12:24 QatXFD490.net
あ、なんでもない

189:デフォルトの名無しさん (ワッチョイ 11da-pVuC)
20/09/10 20:17:20 QatXFD490.net
普通に動いたんで入力ミスとか環境の問題かな

190:デフォルトの名無しさん
20/09/10 20:49:46.36 Rp5mNNXSd.net
パズルゲームを作ってます。
セルを奇数列から横2マス選択してドラッグさした場合に、移動先が同じ奇数列から始まる場所なら許可。偶数列から始まる場所に移動した場合は不可にして移動をキャンセルさせたいんですがどうしたら出来ますか?良いEVENT


191:ってあるんですかね?



192:デフォルトの名無しさん
20/09/10 21:52:44.31 WalExY5Hd.net
>>180
そのまま入力してちゃんと動いたから、問題文には間違いはない
URLリンク(i.imgur.com)
それにしても学校の宿題だとしたらひどすぎるな
先生がこんなに汚いコードしか書けないとか生徒がかわいそう

193:デフォルトの名無しさん
20/09/10 21:54:41.31 WalExY5Hd.net
ああ最後の方に入力ミスあったわごめん

194:デフォルトの名無しさん
20/09/10 21:56:12.36 WalExY5Hd.net
>>189
SelectionChange

195:デフォルトの名無しさん
20/09/10 21:56:18.66 a+RPoaYl0.net
>>181
コメント行の終わりにシングルクォーテーションが付いているのは初めて見たw
コメントというより、文字列リテラルに見えてくるw

196:デフォルトの名無しさん
20/09/10 21:57:24.01 b8lNN7jK0.net
>>190
こんな意図がこんなに読みづらいコード初めて見たわ

197:デフォルトの名無しさん
20/09/10 22:01:54.82 qPrgFXQ2a.net
>>181
先生変数宣言しないの?

198:デフォルトの名無しさん
20/09/10 22:06:42.97 YMu2GFxia.net
教師は必ずしもコード書いてた人じゃないししゃあないんちゃう

199:デフォルトの名無しさん
20/09/10 22:22:10.32 6Lj7sAI40.net
>>180
馬鹿過ぎる帰れ

200:デフォルトの名無しさん
20/09/10 22:28:05.12 WalExY5Hd.net
>>193
HTMLみたいにコメントが改行で終わるとは限らない言語はまれによくあるけどな
それよりもインデントの汚さと、Cellsのパラメータにx, yを使ってるあたりがめちゃくちゃ気になる

201:デフォルトの名無しさん
20/09/10 22:28:20.02 QatXFD490.net
Kirakira1 のコードにそっくりなのが検索で見るかるけど
そっちでは変数宣言しているw

202:デフォルトの名無しさん
20/09/10 22:31:17.53 /qwml5cpa.net
これか
URLリンク(my-tax-nology.com)
>>マクロ(Excel VBA)を使えば、簡単なアニメーションを作ることができます。
>>アニメーションを作っていると楽しいだけでなく、プログラミングのスキルアップに繋がります。
なるほど??

203:デフォルトの名無しさん
20/09/10 22:37:08.36 uWh6vQvPa.net
エクセルVBA は当分なくならないですかね

204:デフォルトの名無しさん
20/09/10 22:43:44.96 WalExY5Hd.net
>>200
VBAを教えてるサイトでコメントをシングルクォートで閉じたりカッコを全角で書くやつなんて世界に一人しかいない
本人ならDimやインデントはちゃんと書くはずだし、完全にパクリだな

205:デフォルトの名無しさん
20/09/10 22:59:03.63 VdzBOqiR0.net
180ですなんとかできました。ド素人なんで申し訳ない
このコードはそんなできのいいものじゃないんですか?
先生凄く威圧的でいつもそんなんもわからんのかみたいな喋り方なんすけど

206:デフォルトの名無しさん
20/09/10 23:10:15.32 8/CQSYne0.net
すまん
wsfやhtaでvbs書くとき 'コメント' って書くわ
エディタの色付けがjs用だから

207:デフォルトの名無しさん
20/09/10 23:26:05.51 8/CQSYne0.net
>>203
「なんで乱数を整数化するのにRoundを使ってしまったんですか?」って聞いてみて

208:デフォルトの名無しさん
20/09/10 23:27:44.84 a+RPoaYl0.net
他の言語でも行コメントで見出し風にするプロはそれなりにいる。
ただ、初心者に教える人間が行コメント構文を、ブロックコメント構文と同じ使い方をするのは、初心者を混乱させるだけで、何のメリットもない。

209:デフォルトの名無しさん
20/09/10 23:29:02.40 b8lNN7jK0.net
>>203
なんで変数宣言しないんですか?
なんでx1とかわかりづらい命名するんですか?
なんでx1とかを上書きするようなわかりづらい変数の使い方してるんですか?
インデントの使い方に意図はありますか?
6の意味が説明されないとわからないのは不親切ですね
などなど…色々質問してみたらいいよ

210:デフォルトの名無しさん
20/09/10 23:31:52.10 ewRWdYKCd.net
>>203
その先生は、少なくともVBAの知識だけは


211:大したことないことは誰が見てもわかる ほかの言語のエキスパートでVBAをバカにする人もいるけど、人に教えるんならちゃんとしろと思う >>199 よく見つけたな



212:デフォルトの名無しさん
20/09/10 23:31:53.48 a+RPoaYl0.net
>>205
それもなんか見ると気になるな。コードの順番も変だし、数値の精度やデータ型をわざとヘンテコにしているのかも謎。

213:デフォルトの名無しさん
20/09/10 23:33:45.89 ATM2a6JOd.net
>>205
Rndの定義から考えればIntを使うのが自然だけど、まあそこは100%間違いとは言い切れないからなあ

214:デフォルトの名無しさん
20/09/10 23:33:50.53 a+RPoaYl0.net
その先生だと6は数値ではなく数字です!
マジックナンバーって何と言いそうw

215:デフォルトの名無しさん
20/09/10 23:34:53.46 ATM2a6JOd.net
コードのおかしさは、その先生よりコピペ元のサイトの責任だろ

216:デフォルトの名無しさん
20/09/10 23:37:35.65 8/CQSYne0.net
>>212
ドコモロは黙っててくれないか

217:デフォルトの名無しさん
20/09/10 23:43:13.95 b8lNN7jK0.net
>>212
教える側の立場として教材として使うかどうか判断したんだから元のところに責任はねーだろ
なんか改悪もしてるし

218:デフォルトの名無しさん
20/09/10 23:50:48.35 Q3JELDTy0.net
ループの外でウエイトしてたら速すぎてキラキラしないんじゃ…。
紙に書いてある方。

219:デフォルトの名無しさん
20/09/10 23:52:06.33 2cDIJpauM.net
>>200
こいつもかなり怪しいな
i, jを宣言してないし、変数をゼロクリアしてるのも謎

220:デフォルトの名無しさん
20/09/10 23:53:08.37 /1fuNzSOa.net
>>215
確かに言われてみれば
キラキラの意味

221:デフォルトの名無しさん (ワッチョイ a95f-Sism)
20/09/11 01:20:18 66INGyZB0.net
>>216
本業が税理士なのに、詳しくもないことをひけらかすやつだから、税理士としてもいまひとつの癖のあるやつだと思う。

222:デフォルトの名無しさん (ワッチョイ a95f-Sism)
20/09/11 01:22:28 66INGyZB0.net
>>216 彼も他人のパクリなのかもね

223:デフォルトの名無しさん (ワントンキン MM7a-nV8z)
20/09/11 01:27:34 iTcJm+RBM.net
ゆとり世代の馬鹿に教えるゆとりかよ

224:デフォルトの名無しさん
20/09/11 08:33:42.89 L6SxevYWd.net
>>146
そいつはバグだと思うよ。
Mougで質問してた人がいて、俺も試したけどTreeViewでのD&Dで座標がバグってる。
で、15ってのはそのバグを何とか実情に合わせたものだと思う。
俺もその時似たようなことやって15っていう数字には覚えがある。

225:デフォルトの名無しさん
20/09/11 09:37:00.89 mn04Qg6+M.net
>>221
>>146 です。色々調べた結果、TreeViewのMouseMoveやMouseDownのイベントで渡される座標が他のフォームとは異なりピクセルで渡される事が原因でした。
なのでGetDesktopWindow,GetDC,GetDeviceCapを用いてDPIを取得し、
取得した値で1440(1440twips=1Inch)を割り、
その値をピクセル数に掛ける事でポイントでの換算に成功しました。
標準の設定ですとDPIが96になるそうなので1440/96で15、となるようです。

226:デフォルトの名無しさん
20/09/11 16:13:39.65 qEgHhc430.net
VB6だとScreen.TwipsPerPixelXってあったんだがなあ
VBAだとPointsToScreenPixelsXとかあるなと思ってみてみたけど、これ、つねに72DPIで計算するっぽいな

227:デフォルトの名無しさん
20/09/11 18:44:31.89 +9zmYtvxd.net
>>192
それだと1回めの選択範囲で動いて、移動したら動きますよね?
1回目の行や列を記憶させて2回目で比較する感じですか?

228:デフォルトの名無しさん
20/09/11 22:11:41.98 L6SxevYWd.net
>>222
>>223
うん、その辺みんな知ってるけどTreeViewの問題って違ってたと思うんだが。

229:デフォルトの名無しさん
20/09/12 08:12:41.83 cGm6fMBf0.net
動的配列に値を追加していきたいのですが要素番号を0ではなく1から始める方法はありませんか?

230:デフォルトの名無しさん
20/09/12 08:24:59.90 OyGZa+nz0.net
Sub testtttt()
Dim arr() As Variant
ReDim arr(1 To 1)
arr(1) = 10
ReDim Preserve arr(1 To 2)
arr(2) = 20
ReDim Preserve arr(1 To 3)
arr(3) = 30
MsgBox arr(1) & " " & arr(2) & " " & arr(3)
End Sub
ちょっとはぐぐれよな
URLリンク(www.relief.jp)

231:デフォルトの名無しさん
20/09/12 08:28:00.30 FkIM4E0+M.net
『[ VBA ]「Option Base 1」使うなよな!反論は聞かない!』

232:デフォルトの名無しさん
20/09/12 15:06:14.92 X8G1U5XY0.net
アレイリスト使うほうがかんたんじゃね?

233:デフォルトの名無しさん
20/09/12 20:26:44.99 +6u/uPRn0.net
先頭を1にするのはセンスないね

234:デフォルトの名無しさん
20/09/14 18:06:26.03 YLQY1Qz5r.net
i++とか+=使えないのマジで不便だな
前置インクリメントもできないし一行でもend ifとかloop書かなきゃいかんしめんどくさくね?
この言語もうちょい進化しないの?

235:デフォルトの名無しさん
20/09/14 18:10:50.73 CnoY9xmOM.net
1行でEnd If書きたくないならThenの後に半角スペースいれたら改行しないで処理書いてみ
++とかは禿同

236:デフォルトの名無しさん
20/09/14 18:13:56.53 YLQY1Qz5r.net
>>232
おおこんなことが、、、
ありがとう!

237:デフォルトの名無しさん
20/09/14 18:15:50.60 LbAMjRkX0.net
>>231
馬鹿は死ねよ

238:デフォルトの名無しさん
20/09/14 19:51:50.83 ZpzZ2vr50.net
ガイジ君ブチ切れw

239:デフォルトの名無しさん
20/09/14 19:57:09.34 lPVfhwtb0.net
ざわ・・ざわ・・

240:デフォルトの名無しさん
20/09/14 20:46:20.36 LbAMjRkX0.net
+=使えるだろうが

241:デフォルトの名無しさん
20/09/14 20:54:32.80 P2Bbq2Qk0.net
使えません

242:デフォルトの名無しさん
20/09/14 20:56:59.34 LbAMjRkX0.net
あー、VB.Netスレだと思ってた。スマン、死んでくる。

243:デフォルトの名無しさん
20/09/14 21:01:00.11 P2Bbq2Qk0.net
逝かないで

244:デフォルトの名無しさん
20/09/14 21:01:06.64 K/D9SivKp.net
制御構造は、キーワードの選び方がやや独特だけど、基本的なものについては、概ね他の言語と同等のことはできると思う。
どちらかというと、変数の宣言・定義が一緒にできないとか、配列・コレクションの要素参照が角括弧でなく丸括弧だとか、プロシージャ呼び出しの丸括弧の要否とかの方が不便さを感じるかな。まぁ、これらも慣れと言われればそれまでだが。

245:デフォルトの名無しさん
20/09/14 22:06:22.62 9LhT2bwK0.net
gotoとラベルでできるっちゃあできるけどcontinueとbreakが欲しい

246:デフォルトの名無しさん
20/09/14 22:20:37.59 8aASiVNY0.net
breakは、一応Exit ~が概ね対応しているのでは(While~Wendでは使えないけど)?
脱出するループを明示的に指定するので、breakより便利な場合もごくたまにある。もっとも、二重のForループから抜ける場合などは結局GoToに頼ることになるので中途半端ではあるけど。

247:デフォルトの名無しさん
20/09/14 23:27:12.72 EMg7ooaX0.net
俺もたまにラベルでcontinueするけどめちゃくちゃ見栄え悪くて嫌

248:デフォルトの名無しさん
20/09/15 08:35:58.25 Ny+/GOwEd.net
>>232
>>233
基本、それは使わないな。
読みやすさとか構造の分かり易さ優先。
勿論、時と場合による。

249:デフォルトの名無しさん
20/09/15 09:16:48.30 Ty4jOAMY0.net
ユーザーフォームの2つリストボックスで選択された値を変数に代入する方法を教えてください
■Module1
Public str As String
■ThisWorkbook
Sub tes1()
UserForm1.Show vbModeless
Range("A1").Value = str
End Sub
Sub tes2()
Range("A2").Value = str
End Sub

250:デフォルトの名無しさん
20/09/15 09:17:03.49 Ty4jOAMY0.net
■UserForm1
Private Sub UserForm_Initialize()
Dim r As Long
For r = Year(Date) - 1 To Year(Date) + 2
UserForm1.ListBox1.AddItem r & "年"
Next r
For r = 1 To 12
UserForm1.ListBox2.AddItem r & "月"
Next r
UserForm1.Show vbModeless
End Sub
Private Sub OKbtn_Click()
str = Replace(UserForm1.ListBox1.Text, "年", "") & "_" & Replace(UserForm1.ListBox2.Text, "月", "")
Unload UserForm1
End Sub
テストで変数strをA1・A2に入れたいのですが、この方法だとどちらも入りません。

251:デフォルトの名無しさん
20/09/15 09:33:07.65 q5KWnXWXM.net
ボタン押してstrに代入するところModule1.strじゃないとダメなんじゃないの

252:246
20/09/15 09:45:50.10 Ty4jOAMY0.net
>>248
試しましたがだめでした
追記
ブックを開いたまま、tes1を2回目に実行するとA1には書き込みますが、
ブックを開いて、1回目のtes1実行ではA1には書き込まれないようです。

253:デフォルトの名無しさん
20/09/15 09:57:04.92 q5KWnXWXM.net
モードレスだから
ボタン押した時にUnload UserForm1する前にModule1.tes2を呼び出さないとだ
Sub tes1()
UserForm1.Show vbModeless
End Sub
Sub tes2()
Range("A1").Value = str
Range("A2").Value = str
End Sub

254:246
20/09/15 11:27:58.65 Ty4jOAMY0.net
>>250
ありがとうございました。解決しました

255:デフォルトの名無しさん
20/09/15 18:56:31.81 Nzz3069/0.net
AccessVBAを使用しているのですが、標準モジュールを変数に格納する方法がわかりません。
フォームコントロールの様に変数に入れて扱う方法はありませんでしょうか。

256:デフォルトの名無しさん
20/09/15 19:29:57.34 pZ4d9dfu0.net
ありません

257:デフォルトの名無しさん
20/09/16 00:02:05.57 chmz5kZM0.net
Sub test()
MsgBox Me.TextBox1.Value
Me.Name="a"
Me.Name="Sheet1"
End Sub
1回目の実行 OK
2回目の実行 MsgBoxでエラー
3回目の実行 OK
4回目の実行 MsgBoxでエラー
なんでやねん!

258:デフォルトの名無しさん
20/09/16 01:13:07.34 fUx+IXsk0.net
>>254
F8 でステップ実行してみ、あとエラーの内容くらい書いてもよくね?

259:デフォルトの名無しさん
20/09/16 10:04:16.38 HoY0/Pv80.net
>>253
ありがとうございます。
フォームを格納できるなら標準モジュールも出来るのかと思って質問しました。
標準モジュール内に書かれた関数の引数として参照先の標準モジュールを渡したかったのですが、別の方法を考えてみます。

260:デフォルトの名無しさん
20/09/16 18:43:38.23 DJD3HHCL0.net
動画ファイル(拡張子 mp4,avi等々)の長さ(時間)をvbaで得ること出来ませんかね。
動画用のプログラムでは出ているから何らか手段はあると思うのだけど。

261:デフォルトの名無しさん
20/09/16 19:23:25.54 u7LyhgECM.net
>>257
できる
はい、次

262:デフォルトの名無しさん
20/09/16 19:55:21.82 KOE6L/fW0.net
>>257
拾い物、動くかどうかは知らん
Sub ボタン1_Click()
Dim Shell, Folder
Set Shell = CreateObject("Shell.Application")
Set Folder = Shell.Namespace(Range("A1").Value)
Fil = Dir(Range("a1").Value & "\*.*")
Rows("5:65536").ClearComments
i = 5
Do While Fil <> ""
For j = 0 To 40
Cells(i, j + 1).Value = Folder.GetDetailsOf(Folder.ParseName(Fil), j)
Next
i = i + 1
Fil = Dir()
Loop
Set Folder = Nothing
Set Shell = Nothing
End Sub

263:デフォルトの名無しさん
20/09/16 20:18:38.96 pG4LN1Ne0.net
手を抜くんじゃない!
まじめにヘッダー読み込んで解析しろよ

264:デフォルトの名無しさん
20/09/16 20:21:47.41 0zA9ovKo0.net
ファイルのプロパティからは取れない場合もあるよ

265:デフォルトの名無しさん
20/09/16 21:31:45.86 chmz5kZM0.net
>>255
今環境ないんだけど、
アプリケーションの定義何とかか、
インデックス何とかか、
オートメーション何とかのどれか。
何か変なものがSetされちゃってるのかと思ったけど、
MeじゃMeしかないよね?

266:デフォルトの名無しさん
20/09/16 22:10:00.45 jvSIB85Td.net
>>260
昔、解析したことがある。
aviとかは割と簡単だね。

267:デフォルトの名無しさん
20/09/16 23:12:03.30 dsrVDQ5Z0.net
すごく初歩的な質問ですみません
&演算子で文字列と数字をつないで文字列を作った時に
出来上がった文字列に""を付けなくていいのはなぜなのですか?
MsgBox "あいうえお" は""を付ける必要がある
MsgBox "A" & hoge は文字列扱いのはずなのに""を付けて MsgBox ""A" & hoge"のようにしなくていいのが解せません

268:デフォルトの名無しさん
20/09/16 23:23:17.92 0zA9ovKo0.net
&とhogeは文字列ではなく演算子と変数

269:デフォルトの名無しさん
20/09/16 23:24:34.57 0zA9ovKo0.net
""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない

270:デフォルトの名無しさん
20/09/16 23:48:53.36 dsrVDQ5Z0.net
ありがとうございます
>""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない
なるほど確かにです
では、&演算子でつなぐと文字列扱いになるという認識が間違っているのでしょうか?
それとも文字列扱いにはなるけど上記の理由から外すことになっているという感じでしょうか?

271:デフォルトの名無しさん
20/09/17 00:09:43.18 pIQJoJyT0.net
>>267
その場合、
hogeは文字列として認識してください
という命令を出している
つまり
文字列(”A”) と(&) 文字列(hogeという変数に入っている文字列) を繋ぎ合わせて表示してください
というのが”A” & hoge

272:デフォルトの名無しさん
20/09/17 00:09:48.11 MJVBSNKC0.net
ダブルクォートには引数の囲むような意味はない
引数を囲む記号は丸括弧になる
たとえば X = msgbox("a" & hoge) みたいな書き方になる
返り値をとらない場合は()が省略可能ってだけ

273:デフォルトの名無しさん
20/09/17 00:11:18.08 D84tTl8o0.net
リテラルと変数について調べると理解できるかも

274:デフォルトの名無しさん
20/09/17 00:13:09.47 ncMNPksn0.net
>>267
hoteの型は何なんだ

275:デフォルトの名無しさん
20/09/17 00:21:16.12 0EHVBisp0.net
値に型ってのがあるのを理解しよう
表示したいのは、"A"という値と変数hogeの値(を連結したもの)だろ
&演算子でつなぐと文字列扱いになるってのは、演算対象を文字列に変換して結合するってこと
この場合、hogeの値が文字列以外でも文字列に変換して評価するってことだ
基本を理解したいなら、なんの説明もなく&でつなぐと文字列扱いとかいう教え方するところは避けたほうが良いかな
とりあえず動けばいいってならまあすきにすればいいけど

276:デフォルトの名無しさん
20/09/17 02:20:25.53 c2bYLY/G0.net
MsgBoxの第1引数は文字列型の値である必要があり、文字列型の値を表す式として典型的なのは、①文字列リテラルか、②文字列型の値が格納されている変数(文字列型変数)の参照。二重引用符は、文字列リテラルの表記方法に過ぎない。
&演算子は、本来、2つの文字列型の値を被演算数とする演算子だが、被演算数が文字列型の値と数値型の値であるような場合等は、適宜数値の方を文字列型の値に自動変換した上で本来の演算を行う……ということかと。重複になるが。

277:デフォルトの名無しさん
20/09/17 04:55:16.59 PzgKRL2g0.net
数値を文字に変換するなら CSTR がある

278:デフォルトの名無しさん
20/09/17 07:47:55.65 iixTl117d.net
>>267
法則を暗記するからそうなる。
法則の仕組みを覚えるんだ。

279:デフォルトの名無しさん
20/09/17 11:44:40.11 1/N+zsdG0.net
同じフォルダにある"〇〇"というCSVを開いて、そのシートの最終行を取得したいのですが
「インデックスが有効範囲にありません」というメッセージでとまります
Sub salegrp()
Workbooks.Open ThisWorkbook.Path & "\〇〇", ReadOnly:=False
MsgBox Sheets("〇〇").Cells(Rows.Count, 1).End(xlUp).Row
End Sub
他のブックの最終行を表示する方法を教えてください
(A列には最終行まで値が入っています)

280:デフォルトの名無しさん
20/09/17 11:54:47.91 DZPRMbPmM.net
csv開いたてからActiveWork ook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rowすれば

281:デフォルトの名無しさん
20/09/17 12:14:37.64 qGYgSA/Y0.net
>>276
必要なのは最終行に入ってるデータの内容?行数を知りたいだけ?
全データをワークシートに入れる必要がなければテキストファイルとして開いた方が早いかも

282:デフォルトの名無しさん
20/09/17 12:24:52.75 D1QZID39M.net
Workbooks.Openの返り値をとってそれを操作する
なおRows.Countも省略せずにシート指定する

283:デフォルトの名無しさん
20/09/17 13:03:15.94 1/N+zsdG0.net
>>277
できました。

284:デフォルトの名無しさん
20/09/17 16:10:59.23 mN4YvgPv0.net
>>267
Sub tessstttt()
Dim str1 As String
Dim str2 As String
str1 = "あいうえお"
str2 = "かきくけこ"
MsgBox str1 & str2 '結果「あいうえおかきくけこ」
MsgBox str1 & "かきくけこ" '結果「あいうえおかきくけこ」
MsgBox "あいうえお" & "かきくけこ" '結果「あいうえおかきくけこ」
End Sub

285:デフォルトの名無しさん
20/09/17 16:17:02.54 mN4YvgPv0.net
>>279

VBA続けるつもりならこっちでやれるようにした方が

286:デフォルトの名無しさん
20/09/17 16:44:05.17 T9Rqn+gv0.net
他のbookやsheet絡むととたんに冗長になるんだよなぁ
Range(.Cell(a,b))とか .Cellの前にもブックやシート指定しないとならんし

287:デフォルトの名無しさん
20/09/17 17:02:14.36 pIQJoJyT0.net
>>283
むしろ1シートだけしか使わない場合でも、実効中に人がシート変更とかしても大丈夫なようにブック明記した方がいい

288:デフォルトの名無しさん
20/09/17 17:07:16.63 N0wmq1hya.net
ブックとシート明示してworksheetオブジェクトの変数作ってそれ経由でアクセスさせるのが鉄板かね~

289:デフォルトの名無しさん
20/09/17 17:41:26.80 dgD4TP5z0.net
csvの最終行だったらテキスト形式でEOFまで吸い上げてってやった方が動作時間的には良さそうな気がした

290:デフォルトの名無しさん
20/09/17 18:04:52.95 aPn4iHhdM.net
CSVの読み込みをしっかりやるならPowerQuery使おうみたいな話もあったりなかったり

291:デフォルトの名無しさん
20/09/17 18:51:11.07 1zO/WKqm0.net
>>285
てか、基本でしょ

292:デフォルトの名無しさん
20/09/17 18:59:48.75 DNVG/ozSa.net
>>288
鉄板と基本の違い教えて

293:デフォルトの名無しさん
20/09/17 19:13:46.34 ncMNPksn0.net
シート明示してないコードほんと多い
よくやるわ

294:デフォルトの名無しさん
20/09/17 19:55:58.19 iixTl117d.net
>>279
俺なんて、必ずBookから書くぜ。
WithとSetを多用することになるが。

295:デフォルトの名無しさん
20/09/17 19:56:59.36 iixTl117d.net
>>283
その例ならRangeの前にも"."が必要。

296:デフォルトの名無しさん
20/09/17 19:58:31.27 iixTl117d.net
>>286
うん、CSVはLine Inputで1行ずつ+Splitで分解にすることが多い。

297:デフォルトの名無しさん
20/09/17 20:23:48.98 dgD4TP5z0.net
VBA覚えたての頃はいちいちアクティブシート切り替えてシート指定省いてたけど
Sheet1.Cells(a,b)って書く癖は絶対つけといた方が良いって今は思ってる
可読性が段違いだもん
暫く同じシートのセルをいじくりたおすならWithで目立つように囲ってやりゃあ良いし

298:デフォルトの名無しさん
20/09/17 20:32:12.03 0EHVBisp0.net
>>286
項目中に改行含むcsvとかも存在するからなぁ
汎用的なcsvを真面目にパースするとかなり面倒
そしてEXCELは最強のCSVパーサ(笑)

299:デフォルトの名無しさん
20/09/17 20:38:51.87 23KXp+DW0.net
なんつーレベルの高い話だよ
初心者が覚えようと思ってどんなもんかとスレを見たのが大間違いか

300:デフォルトの名無しさん
20/09/17 21:39:36.45 ncMNPksn0.net
この先いつまで初心者を名乗るつもりか知らないがいちいちアピールしない方がいいよ

301:デフォルトの名無しさん
20/09/17 21:45:39.26 DqUtQRPA0.net
>>294
可読性以前に怖いんだよな。
アクティブシートが切り替わっちゃったらどうしようって。
実行中の操作とかで。
DoEvents挟まなきゃ絶対切り替わらないってならいいんだけど。

302:デフォルトの名無しさん
20/09/17 22:36:46.26 qGYgSA/Y0.net
可読性も考慮するならオブジェクト変数に入れたりWithで囲んだり、頻出する構文なら別Functionに飛ばすという手もある
めんどくさいけどバグを出すよりはマシ

303:デフォルトの名無しさん
20/09/18 01:50:57.23 V3SekzLi0.net
そもそもオブジェクト指定のないCellsがいつでもActiveSheetを参照すると思うなよ
シートモジュールに書いたCellsはそのシートを参照するんだぜ

304:デフォルトの名無しさん
20/09/18 10:32:05.02 68qBgcmgH.net
VBAというよりVBSかもしれませんが
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?

305:デフォルトの名無しさん
20/09/18 14:09:52.14 1dkG1MHP0.net
>>301
多くのアプリで、正規表現はWindowsに標準で内蔵されてるDLLを使ってる
独自の仕様やバグがあるのは既知だから、それが気に入らない時は別のライブラリを見つけてくるしかない

306:デフォルトの名無しさん
20/09/18 17:55:04.61 vGT+RG4a0.net
VBSはスレ違いになるんだろうけどさー
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー
参照もなーんも効かないところに持ってきて
インデントも正しく書いてないし
綺麗にスパゲティーコードになってるの見ると
殺意を覚えるわー
まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
VBAよりいいのかな?

307:デフォルトの名無しさん
20/09/18 20:53:29.32 Ej6zlwK4a.net
見てるだけで殺意はないだろ
自分で分かりやすく直していけばいい

308:デフォルトの名無しさん
20/09/18 20:57:08.45 E6dIN4Hja.net
どんな人が書いたコードでも理解できるのがプロ

309:デフォルトの名無しさん
20/09/18 20:57:17.16 nL5nIenz0.net
C列に"2007/3/26"などのような書式で年月日が入っていますが
それをC=年、D列=月、E列=日にしたいのですが
↓だと年が1905,月が1、日が26日のように変換されてしまいます。
Dim r As Long, dt As date
For r = 2 To 435
dt = CDate(cells(r,3))
Cells(r, 3) = Year(dt)
Cells(r, 4) = Month(dt)
Cells(r, 5) = Day(dt)
Next r

310:デフォルトの名無しさん
20/09/18 21:01:25.47 vGT+RG4a0.net
>>306
最初date型で取ってやれば確か年や月や日を取る関数が有ったと思うよー
じゃあねー

311:デフォルトの名無しさん
20/09/18 21:05:10.29 3fDNLBctH.net
>>302
私が気に入りそうなものはありますか?
肯定先読み肯定後読み以上に高度な機能は求めていないのですが

312:デフォルトの名無しさん
20/09/18 21:10:13.79 vGT+RG4a0.net
ていうかそうしてんじゃん
出力先のセルの書式はどうなってるの?
コードを見た感じじゃ少なくとも3列目は
日付型みたいだけど

313:デフォルトの名無しさん
20/09/18 21:14:07.50 Kp8J/oyZ0.net
>>306
year、month、dayの引数のdtの中身は2007/3/26ではない

314:デフォルトの名無しさん
20/09/18 21:16:37.69 Kp8J/oyZ0.net
または3、4、5列目の表示形式をそれぞれy、m、dにしてる

315:デフォルトの名無しさん
20/09/18 21:29:41.49 LhaPjq300.net
>>306
考えなしに書くからセンス皆無なコードだけど3列目の日付が文字列で入ってるならこんなんどうよ
Dim Ary(2 to 435,1 to 3) As Long,r As Long, a As String
For LBound(Ary,1) to UBound(Ary,1)
a = Sheet1.Cells(r,3).Value
Ary(r,0) = Split(a,“/“)(0)
Ary(r,1) = Split(a,“/“)(1)
Ary(r,2) = Split(a,“/“)(2)
Next
Range(Sheet1.Cells(2,3),Sheet1.Сells(435,5)) = Ary

316:デフォルトの名無しさん
20/09/18 22:40:09.47 1dkG1MHP0.net
>>306
Sub Macro1()
  Range("C2:C435").Copy
  Range("D2:E435").Select
  ActiveSheet.Paste
  Range("C2:C435").NumberFormatLocal = "yyyy"
  Range("D2:D435").NumberFormatLocal = "m"
  Range("E2:E435").NumberFormatLocal = "d"
End Sub

317:デフォルトの名無しさん
20/09/18 22:48:07.19 mNDgEDOXa.net
>>313
くそこーどを貼るのはやめてあげて

318:デフォルトの名無しさん
20/09/18 23:02:36.64 V3SekzLi0.net
>>306
セルに表示されている文字とセルの値は別だって理解が必要
おそらく
C列の表示形式が日付になっているが、そこの値を数値の2007にした
数値の2007は日付にすると1905/6/29 その年だけが表示されている
同様に数値の3は1900/1/3、数値の26は1900/1/26
まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ

319:デフォルトの名無しさん
20/09/18 23:05:29.99 V3SekzLi0.net
つヵ、C列の値でC列に書き換えるとかしないで
元の値を別の列にもっとけば、VBAなしで関数だけで出来るだろうけど

320:デフォルトの名無しさん
20/09/19 04:14:23.53 JSd39pzr0.net
C,D,E列に表示させたいのは「数値」であるにも関わらず
「日付」の表示形式になっているからおかしくなる
C,D,E列の書式設定→表示形式を日付から標準にする
こうするとC列は39167のような形で表示されることになるが
お構いなしにマクロを動かせば、意図した通りの動きになる
でどう?

321:デフォルトの名無しさん
20/09/19 07:38:40.10 kGiNzl5D0.net
>>305
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ
まぁbとc が同じならaにTrueが、
違えばFalseが入るってことを期待して
書いてるなら見づらいけどまだ許せるよ
でもcにbが代入されてそのままaにbが
代入されるとか思って書いてたらしく
システムバグらせてそのままにしてたりとか
テストどうしてたんだとか思うよねー
正直こんなのに関わりたくないけど
仕事だからやるって感じだねー

322:デフォルトの名無しさん
20/09/19 07:43:05.72 kGiNzl5D0.net
あ、逆だった
bにcが代入されてaにbが代入されると
思ってたらしいってことね
まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー

323:デフォルトの名無しさん
20/09/19 07:51:21.74 oBjg4zik0.net
仕事の内容でそのソースを直せってことなら書き直せばいいんじゃねーの
そのまま残すと後任者に同じように思われるんだぜ

324:257
20/09/19 10:25:54.04 fwfEHGdP0.net
>>259
遅くなってしまいましてごめん。自分の欲しかった情報がこれで取れる
事ができました。
ありがと!

325:デフォルトの名無しさん
20/09/19 15:00:02.54 TN+kKyJDd.net
>>320
その判断は結構難しい。
今動いてるものは、そのままにしておくというのが通常だ。
Accessでレコードセットループで回してる最中にその値でもって別のレコードセット開いたりを7、8回やって10分かけてデータ作ってるプログラムが有るんだけど、コレ、クエリ1つで出来るんじゃね?と思って試しに作ったら一瞬で出来る。
それでも、正式に変更することになるかと言えばならない。
こっちだってその辺は分かってる。
何かの時に、きちんと作り直しましょうという話になるまで置いとくもんで、むしろそんな話にならずにずっ―とそのままというのが殆ど。

326:デフォルトの名無しさん
20/09/19 15:56:27.98 nGfYM+wGM.net
>>322
なら
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
とか書くなよ
どうせ盛々で語ってるだけだろw

327:デフォルトの名無しさん
20/09/19 15:59:42.46 TN+kKyJDd.net
>>323
いやいや、俺はその人じゃないから。

328:デフォルトの名無しさん
20/09/19 16:24:18.56 oBjg4zik0.net
>>322
重要な変更とは別で、こまかい高速化や最適化として変更するんだよ
それができないなら他人のコードを悪くいってはいけない

329:デフォルトの名無しさん
20/09/19 18:06:32.97 kGiNzl5D0.net
そうかーみんなそんな具合に考えてるのかー
でも悪いけどその場でチャチャっと直すことはしないよ
もちろん上に話を通すのは当然だけど
こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから直すんなら他への影響調査の時間貰う
まぁ当たり前だよねー

330:デフォルトの名無しさん
20/09/19 18:37:26.04 e5zvgWAXM.net
>>324
本人でもないのに
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
に対して
> 今動いてるものは、そのままにしておくというのが通常だ。
って言うの?
アホの上塗りにしかなってないけど… w

331:デフォルトの名無しさん
20/09/19 18:39:28.33 DdZzGNwy0.net
>>319
実際にそういう動きをする言語もあるからな
>>325
それは開発方法とフェーズによる
いつでも好き勝手コード弄れるような環境ばかりではない
まあ、VBAではあまりないだろうけど

332:デフォルトの名無しさん
20/09/19 18:41:22.13 HTxR1ogMM.net
>>326
お前の会社のレベルが低いだけだろ
まあそんな会社にしかいられない自分を省みたほうがいいなw

333:デフォルトの名無しさん
20/09/19 20:51:03.26 kGiNzl5D0.net
>>329
ふーん
そっちの会社ではそういうの見つけたら
調べないでチャチャっと直しちゃうのかー
よっぽど優秀なんだねー
俺みたいな無能にはとても怖くて出来ないやーw

334:デフォルトの名無しさん
20/09/19 21:40:33.28 b3MmLDI3M.net
>>326
お前以外にチャッチャッと直すなんて言ってる奴いないんだけどw
レベルの話は
> こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから
の部分な

335:デフォルトの名無しさん
20/09/19 22:13:23.39 TN+kKyJDd.net
>>325
いや、そうじゃなくて…
そうか、確かにVBAはそれでメシ食ってる奴は少ないから分からんかもしれんな。
ウォーターフォールでやってて、プロジェクトの目的が決まってるのに、いくら高速化しても余計なことすれば怒られるのが当然なんだよ。
それが原因で不具合が出てみろ。
大変なことになるんだから。
確かに、思いつきでどんどん改変してく仕事も結構やったことある。

336:デフォルトの名無しさん
20/09/19 22:16:29.20 TN+kKyJDd.net
>>327
開発全般によくある話として言ったまで。
cとかbとかの話に参加したわけじゃない。
動いてるなら、触らないというのはよくあることだ。

337:デフォルトの名無しさん
20/09/19 22:21:26.21 TN+kKyJDd.net
>>328
確かに少ないかもね。
考えてみれば俺も今の職場で初めて。
でも他言語じゃよく聞く話だよな。

338:デフォルトの名無しさん
20/09/19 22:26:15.60 cNAZP0Op0.net
>>333
話の流れが読めないバカということはよくわかった

339:デフォルトの名無しさん
20/09/19 22:48:23.19 RlUx9i/e0.net
どんなに簡単な修正でも、思い込みやミスは誰にでもある
うっかりエンバグする可能性があるから、先方から高速化などの要求がない限りは動いてる物を勝手に修正はしないのが基本かなあ

340:デフォルトの名無しさん
20/09/19 23:01:33.58 Q45ivJBB0.net
修正するか確認してからじゃないとしないな

341:デフォルトの名無しさん
20/09/20 01:28:31.38 Hljg9CcL0.net
>>332
それは逆だ、今のコードが悪いかのを直したせいで不具合がおきるのは直し方が悪いせい
自分できちんと直す能力もない奴が今のコードが悪いとか語るなよ

342:デフォルトの名無しさん
20/09/20 01:34:05.40 Hljg9CcL0.net
というのは言い過ぎなのかもしれんな、直せる自信がないなら直さないでいいんじゃね

343:デフォルトの名無しさん
20/09/20 01:38:55.36 Hljg9CcL0.net
俺から見れば細かい変更もできない人が重要な処理を変更する方が不具合が起きるだろって思うが

344:デフォルトの名無しさん
20/09/20 03:34:03.51 G6tFT8m8M.net
なんで動いてるものの話になってるのかわからんけど元々の話は
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
だから、修正ありきだろ
修正の手順はその組織で違うだろうけど

345:デフォルトの名無しさん
20/09/20 08:02:49.76 MxR9qqIJa.net
ここの会話見てると仕事してる時に戻ったみたいでイヤになる

346:デフォルトの名無しさん
20/09/20 08:29:09.75 lYpGB0SB0.net
技術的に可能(can)なのと
プロジェクトとして可能(may)なのはべつだって言ってるんだが
VBA使いを悪く言う気はないが
まともなプロジェクトでやってないから理解できないんだろうな

347:デフォルトの名無しさん
20/09/20 09:11:52.63 jB/qzKKfa.net
内製なら結構気軽に弄るもんだよ
俺は以前はSIにいて今は自社サービス兼社内SEだから両方の立場がわかるけど、
システムって君のような外の人が思ってるほど重要なものでも神聖なものでもない

348:デフォルトの名無しさん
20/09/20 09:13:39.89 WRa/xy2u0.net
だれも技術的に可能かどうかなんて言ってないのに意味不明なことを言い出してて笑う

349:デフォルトの名無しさん
20/09/20 10:58:42.70 uHe9qv/N0.net
企業や仕事がどういうものかを理解していない馬鹿ばっかりで草

350:デフォルトの名無しさん
20/09/20 11:39:55.26 bN/HvUsh0.net
内製でも気軽に弄らないなぁ

351:デフォルトの名無しさん
20/09/20 12:04:24.67 WRa/xy2u0.net
自分とか周りの数人しか使わないとかならリファクタリングで弄るケースもあるし全社レベルのシステムとかなら影響調査からってケースもあるわな
そのプログラムがおかしくなった時の影響度とかも関係するし
要はケースバイケース

352:デフォルトの名無しさん
20/09/20 16:05:38.71 Q2tD94P+d.net
>>338
>>339
先のAccessの話なら直せる自信ならある。
というか、ここにいる奴で俺が出来ないんだったら出来る奴はいないと思うぜ。
それぐらい自信ならある。
ただし、まとも奴なら誰でも言うがバグを出さない自信は無い。

353:デフォルトの名無しさん
20/09/20 16:13:52.61 WRa/xy2u0.net
ふと、
日本人のできません
韓国人のできます
中国人のできました
を信用しちゃダメ
って言うのを思い出した… w

354:デフォルトの名無しさん
20/09/20 16:52:11.86 qZo3Wq6A0.net
>>348
だよな、さすがに自分とか周りの数人しか使わないとかなら
時間見て許可取ってリファクタリングするわ
自分が作ったツールやシステムなら空き時間見て少しづつリファクタリングだな
さすがに全社レベルのシステムで勝手にリファクタリングはないな
そもそも許可取るのが大変

355:デフォルトの名無しさん
20/09/20 20:23:41.76 r+WJtgDsM.net
VBAの後継言語がExcelに標準搭載されると知識も勉強時間も無駄になる
と考えてしまいVBAの学習が捗らないのですが、どうしたらよいでしょうか

356:デフォルトの名無しさん
20/09/20 20:29:51.63 w1btmlsr0.net
開発する能力と言語の習熟は別と考えた方がいいと思うよ
弘法筆を選ばずって言うし

357:デフォルトの名無しさん
20/09/20 20:39:12.03 Q2tD94P+d.net
>>352
そんな風に考えたことは無いなあ。
その時に必要だから覚えるんだよ。

358:デフォルトの名無しさん
20/09/20 20:46:14.34 IR23Mwdta.net
VBAなんて勉強するもんじゃなくて使っていくうちにわかるもんだし

359:デフォルトの名無しさん
20/09/20 20:55:59.15 6QmidxOBa.net
セルの中身が
--------------------------
あああ325gsdsが|
aaaojgwe |
33333 |
|
いいksが |
bbb93502g |
^^^^^^^ |
|
|
888っふぁふぁ |
aaawopfjw |
f-bgんlsgさ |
-------------------------|
のような感じの際、「あああ325gsdsが」や「aaaojgwe」のように1行づつ取得する方法はあるでしょうか?

360:デフォルトの名無しさん
20/09/20 21:02:07.06 bN/HvUsh0.net
vblfで分割

361:デフォルトの名無しさん
20/09/20 21:04:12.62 w1btmlsr0.net
セル内の改行コードはCRとLFとCRLFがあるのでどれかに統一して
統一した改行コードでsplitすれば

362:デフォルトの名無しさん
20/09/20 21:09:38.60 ce1O3kmIH.net
VBAやっててもオブジェクト指向が全然身につかないんだけどどうしよう

363:デフォルトの名無しさん
20/09/20 21:30:48.40 Q2tD94P+d.net
>>358
セル内の改行はLFだよ。
キーボード入力ならの話だけど。

364:デフォルトの名無しさん
20/09/20 21:31:49.13 Q2tD94P+d.net
>>359
VBAとは別にオブジェクト志向に親和性のある言語勉強すれば?
それがVBAにも役に立つよ。

365:デフォルトの名無しさん
20/09/20 21:35:54.17 w1btmlsr0.net
>>360
よそからコピペしたりするとLF以外も混じるよ
念のため統一する方が安心

366:デフォルトの名無しさん
20/09/20 22:02:19.77 BARJaSzG0.net
>>359
オブジェクト指向を身につけるためにVBAをやっているのか?

367:デフォルトの名無しさん
20/09/20 22:16:21.98 ce1O3kmIH.net
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん

368:デフォルトの名無しさん
20/09/20 22:48:07.21 lUm0Ft460.net
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。

369:デフォルトの名無しさん
20/09/20 22:53:39.67 Q2tD94P+d.net
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。
それでも、感覚的にピッタリ来るときもある。
そういう感覚の為にも他言語の経験が役に立つ。
でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。

370:デフォルトの名無しさん
20/09/20 23:22:55.87 szIFBvS40.net
>>365
Excel 4.0 マクロ

371:デフォルトの名無しさん
20/09/20 23:26:29.37 lUm0Ft460.net
>>367
さんきゅー

372:デフォルトの名無しさん
20/09/20 23:28:59.95 bN/HvUsh0.net
>>358
crでセル内改行はしない

373:デフォルトの名無しさん
20/09/20 23:29:16.08 pX+ICxi/0.net
フレームワークどうするよ

374:デフォルトの名無しさん
20/09/20 23:30:38.40 szIFBvS40.net
そもそもVBAが古いMS-BASICの言語仕様をほとんどそのまま踏襲してるもんだからオブジェクト指向との親和性はあんまり高くない
まだVB.netの方が色々やりやすい

375:デフォルトの名無しさん
20/09/20 23:38:32.30 wTyEOUZY0.net
>>369
セルをアクティブにするとCRでも改行するらしいよ
自分はそういうよくわからない挙動に振り回されたく無いから変換するよ

376:デフォルトの名無しさん
20/09/20 23:40:59.31 XhiE7Cxv0.net
>>372
らしいよ

377:デフォルトの名無しさん
20/09/20 23:44:11.30 wTyEOUZY0.net
LFとCRLFが混在するのは確かめたよ
なので片方に寄せてる
CRも混ざる可能性はあるのでついでに処理してるよ

378:デフォルトの名無しさん
20/09/20 23:47:19.77 GTzW+qv5H.net
>>366
なるほどそうなんですね
別言語で勉強してみます

379:デフォルトの名無しさん
20/09/20 23:51:14.87 bN/HvUsh0.net
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される

380:デフォルトの名無しさん
20/09/21 23:04:27.19 lAfdaJg/0.net
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。

381:デフォルトの名無しさん
20/09/22 09:46:47.28 9vuxubOza.net
で、そのままの仕様で残すんだろ

382:デフォルトの名無しさん
20/09/22 09:47:44.43 9vuxubOza.net
変に直すと他で問題が起きるかもしれんし

383:デフォルトの名無しさん
20/09/23 18:03:19.32 a1crOWFAM.net
今開いてるエクセル3つを左右で3分割させるマクロとかありますか?

384:デフォルトの名無しさん
20/09/23 18:23:33.24 18wwGwYm0.net
表示→整列じゃだめなのか?

385:デフォルトの名無しさん
20/09/23 19:23:23.78 nN1KQy3b0.net
あるけど、マクロっていうかWindowsAPIで画面サイズ調整だろうな。
3画面用意する方が楽かも。

386:デフォルトの名無しさん
20/09/23 20:26:43.04 kiC/kEHG0.net
Windows.Arrange ArrangeStyle:=xlVertical

387:デフォルトの名無しさん
20/09/23 20:34:38.55 Dfniq8Ns0.net
>>381
ありがとう
>>383
本当にありがとう
馬鹿すぎる質問して親切に教えてくれて本当に感謝
教えてくれたコードの方を頂きます
3画面揃ったときについでに分割させたら良い動きしてくれました
めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます

388:デフォルトの名無しさん
20/09/23 21:30:49.65 kiC/kEHG0.net
>>384
できる

389:デフォルトの名無しさん
20/09/23 22:06:19.89 gKXTj3UI0.net
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ

390:デフォルトの名無しさん
20/09/23 22:26:51.67 uvIhcfbN0.net
特徴っていうかこれいつもの人

391:デフォルトの名無しさん
20/09/25 20:09:48.08 48EvNsnc0.net
accdb   → 問題なく型指定出来る。
csv    → schema.iniで型指定出来る。
自シート → どうすんの? IMEX=1も利いたり効かなかったりで当てにならん。

392:デフォルトの名無しさん
20/09/25 21:07:06.86 1nrszLVg0.net
そういう報告はいらないです

393:デフォルトの名無しさん
20/09/25 21:36:41.69 WSuN06d1F.net
罫線の所属するセルについて質問です
セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします

394:デフォルトの名無しさん
20/09/25 22:18:01.90 JBJKUwWVM.net
>>390
実験して報告よろしく

395:デフォルトの名無しさん
20/09/25 22:34:46.55 48EvNsnc0.net
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。

396:デフォルトの名無しさん
20/09/25 23:34:29.90 3gugGrYy0.net
>>390
これ、たしか罫線の種類で、基本ごっつい順に優先順位があったはず
ついでに、セルの書式設定で罫線設定すると、隣のセルの罫線設定も消えたり変わったりする

397:デフォルトの名無しさん
20/09/26 11:57:49.22 aYgi9d/P0.net
太いほうだった(Excelばーじょん2016)
URLリンク(i.imgur.com)
印刷境界とかは分けて認識されてるから、なんだかんだ自分のコードを検証したほうがいいな

398:デフォルトの名無しさん
20/09/26 13:23:27.50 aYgi9d/P0.net
あ、宣言とかしときながらシート指定するん忘れてやがる

399:デフォルトの名無しさん
20/09/26 19:01:46.19 J5kcfwi60.net
ワラタ

400:デフォルトの名無しさん
20/09/26 20:07:30.98 wDXyaCpN0.net
getElementBy飽きたんだけど、RPA的制御じゃなくて、htttp通信を駆使してどうにかする、みたいのない?
APIとか使えない古いシステムに対して。

401:デフォルトの名無しさん
20/09/27 07:29:13.82 KJpIeh7z0.net
htttp通信がわからんがセキュリティー的に問題起きるんじゃね

402:デフォルトの名無しさん
20/09/27 15:17:02.78 a7rnW+2W0.net
htttpは、ハイパー・トンマ・トンチンカン・タコ・( ´,_ゝ`)プッの略かな

403:デフォルトの名無しさん
20/09/27 15:27:50.06 o5RjmHqkd.net
>>397
アセンブラやりたいってこと?
というのと同じ話。
InternetExplorer.Applicationじゃ無くてもみんなgetElementBy使う。
こういう便利なものを放棄するならhtmlのソースを自前テキスト処理で頑張るしかないと思うが。
普通はmsxml2.xmlhttpとかでソース取得して、それをDocumentに入れてgetElemetsByだな。

404:デフォルトの名無しさん
20/09/27 17:34:22.53 V5qiYsAI0.net
>>397
その辺は自作ライブラリでビブラートに包めばOK

405:デフォルトの名無しさん
20/09/27 18:37:04.65 ZqjiPey8M.net
>>401
> >>397
> その辺は自作ライブラリでビブラートに包めばOK
震わせてどうすんのさ。オブラートだろって釣られた

406:デフォルトの名無しさん
20/09/27 18:40:59.82 6iq7bspN0.net
>>400
マジか!
xmlがどうとか、APIがないとダメなんだと思ってたわ。

407:デフォルトの名無しさん
20/09/27 18:44:20.59 6iq7bspN0.net
ん?
それだと、逆に何のためにGUI操作(IE制御)の方法があるの?
初心者用?

408:デフォルトの名無しさん
20/09/28 07:43:08.08 VRZutR0gd.net
>>403
勘違いしてる。
別のAPI使ってるということだ。
で、別のAPIにもgetElemetByが出てくると言ってる。

409:デフォルトの名無しさん
20/09/28 13:09:33.23 LAwWa5+y0.net
RPA的制御がなにかよくわからんが
getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか
それでAPI使えないけどgetElementしない方法ないの?と
取得できるものがhtmlなら、すなおにgetElementしとけ 以上
ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな

410:デフォルトの名無しさん
20/09/28 15:51:42.57 m7hqrCGdM.net
>>402
オブラートに包んでもおかしくないか
普通ラップするとかカプセル化するとか言うんじゃ・・・
>>404
どれもhttp通信でデータを取得できる共通点があるだけで、目的はそれぞれ違う
IEクラスはブラウザを操作する為のコンポーネントの一部
mshttpクラスはIEがスクリプトでhttp通信をするためのコンポーネントの一部
WinHttpRequestクラスはWindowsがhttp通信をするためのコンポーネントの一部
(コンポーネントっていうのはプログラムの部品として使うのが想定されている小さいプログラムのこと)
それぞれ色んなシステムで使えるようにCOMインターフェースっていう取説のようなものが実装されていて、VBAはそのおかげで間借り出来てるだけ
どれもVBAの為だけに作ったプログラムではない
ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある

411:デフォルトの名無しさん
20/09/28 16:26:17.24 gMLgNw+wd.net
それをVBAでやる意味は何?
もっと他に簡単に出来る言語でやれは?

412:デフォルトの名無しさん
20/09/28 16:37:22.01 oE/worxcM.net
結果をexcelで扱うならVBAが最適では?

413:デフォルトの名無しさん
20/09/28 18:37:13.13 jqaTJ4CpM.net
CSVで吐いてExcelで開くだけだろう

414:デフォルトの名無しさん
20/09/28 19:21:37.82 JyFvX52s0.net
あーい
あーい
ああああーい

415:デフォルトの名無しさん
20/09/28 21:25:16.14 d76PIxro0.net
質問させていただきます
ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか?
タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。
できるのであればご教授願いたい…

416:デフォルトの名無しさん
20/09/29 00:06:40.59 bEee4vhd0.net
Windowオブジェクトにどんなプロパティがあるんだっけ

417:デフォルトの名無しさん
20/09/29 00:29:27.68 zU8eGPuC0.net
フォームのdeactivateイベント拾ってテキストボックスのフォーカス状態見て処理するとかどうかな

418:デフォルトの名無しさん
20/09/29 00:32:40.28 zjqvAHva0.net
deactivateは用途が違う

419:デフォルトの名無しさん
20/09/29 00:49:54.82 Iz7+ZlTk0.net
HTML, XML, CSV などのスクレイピングなら、
Ruby で、Nokogiri, Selenium Webdriver などが簡単
curl, wget でも、ファイルをダウンロードできるし
Rubyで、nokogiri, curl を使った例
require 'nokogiri'
html = `curl URLリンク(www.example.com)
doc = Nokogiri::HTML( html )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain

420:デフォルトの名無しさん
20/09/29 06:58:50.11 iE38wEdU0.net
外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ

421:デフォルトの名無しさん
20/09/29 09:56:21.75 UZS7qkIf0.net
Rubyの自動運転は使いやすかったけど
早々にサポート切られたから印象悪い

422:デフォルトの名無しさん
20/09/29 11:55:53.23 NIgnBYPca.net
>>413
調べて見ましたがそれっぽいものは発見できませんでした…
>>414
>>415さんのおっしゃる通りブックやユーザーフォームのDeactivateイベントでは機能しませんでした。

423:デフォルトの名無しさん
20/09/29 23:34:39.45 Rcn+G4xKd.net
VBAでやる意味?
VBA以外だとアホな操作が必要だぞ。
1.Excelを閉じる。
2.他言語で実行。
3.csvをExcelで開く。
全くアホらしい。
運用についての考え方がまるで違う。
他言語でやる場合ってのはバッチ処理なのか?
それしか無いのか?
そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。

424:デフォルトの名無しさん
20/09/30 00:00:14.29 BPaZHsLq0.net
>>407
jsしたかったらIEするしかないのね。
今時のHPほぼ全滅じゃん。

425:デフォルトの名無しさん
20/09/30 00:36:25.50 5bnpK3a00.net
>>419
WINAPIでポーリング
URLリンク(i.imgur.com)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch