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


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

Excel VBA 質問スレ Part75



1 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:24:32.62 ID:I0u44nFvd.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part74
https://mevius.5ch.net/test/read.cgi/tech/1639932059/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

231 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 06:10:51.70 ID:So6tXBwD0.net]
>>226
まぁまぁ・・・
setは最初はとっつきにくいので・・・

232 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 07:03:43.76 ID:vE3gjDOr0.net]
そうじゃなくて2JNとか指定するやつ。
オブジェクトが無くて絶望的なんだけど。

233 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 07:22:28.14 ID:So6tXBwD0.net]
>>228
あぁHWNDとかの奴か。ごめん、これは昔諦めた。他の人お願い。
やりたいことを先に書けば、それっぽいコード書いてくれる人がでてくるかも

234 名前:デフォルトの名無しさん [2022/02/27(日) 11:02:51.91 ID:F9ScTckVM.net]
すみません。 半日つぶしてもできない。ダメ男です
なんとか協力してもらえませんか?
単純に「特定文字」のある行を削除したい(その行をその下の行の二行削除したい)

'まず、獲得ポイントを削除
Dim row_po As Long

row_po = Range("A14:D150").Find("[ 獲得ポイント ]").Row

Range(Rows(row_po), Rows(row_po + 1)).Delete

この書き方でとりあえず消えるのですが、[ 獲得ポイント ]が無かった時にエラーになり止まってしまいます。
で、スルーしてほしいのですが、なにをやってもスルーしてもらえません。
なにもしないことがこんなに難しいとは思いませんでした。
ほっといて欲しいだけなのに

どうするとアホでもわかりますかね?

235 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 11:09:42.41 ID:amhd0I0YM.net]
On Error Resume Nextを頭に入れるだけ

236 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 11:27:49.32 ID:So6tXBwD0.net]
>>230
Sub foo()
'先に見つけておく
Set p = Range("A14:D150").Find("獲得ポイント")
If Not (p Is Nothing) Then
'見つかったときの処理
row_po = p.Row
Rows(row_po & ":" & row_po + 1).Delete Shift:=xlUp
Else
'ここに見つからんかったときの処理
MsgBox "見つからんかった"
End If

End Sub

>231
それやると今度はrow_po でエラーが起きる可能性絶大

237 名前:デフォルトの名無しさん [2022/02/27(日) 11:30:41.33 ID:F9ScTckVM.net]
>>231
おおお神よ
なぜあなたは神なのか
私は知恵熱っぽくまでなったのに
ちなみに検索するとエラーが全部キャンセルされるみたいなんですが、一応範囲を決めるとして

'まず、獲得ポイントを削除
On Error Resume Next
Dim row_po As Long

row_po = Range("A14:D150").Find("[ 獲得ポイント ]").Row

Range(Rows(row_po), Rows(row_po + 1)).Delete

On Error GoTo 0

で大丈夫な感じですか
動作はしました。(他の命令のエラーはちゃんと出るかな?と)

238 名前:デフォルトの名無しさん [2022/02/27(日) 11:31:51.84 ID:F9ScTckVM.net]
>>232
あれ? まじですか
ちょっとわからない

ちなみにMsgBox を出したくないんです。
そのままスルーしてほしいのです

239 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 11:40:19.04 ID:So6tXBwD0.net]
>>233
onerrorはなるだけ使わない方が良いと思う。俺は使わずに書いてるよ
>>233でもいいけど、なるだけ少ない方が後々の変更が楽になる

Sub foo()
'先に見つけておく
Set p = Range("A14:D150").Find("獲得ポイント")
If Not (p Is Nothing) Then
'見つかったときの処理
row_po = p.Row
Rows(row_po & ":" & row_po + 1).Delete Shift:=xlUp
End If

End Sub



240 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 11:42:39.74 ID:amhd0I0YM.net]
>>234
動いたんならまず一旦良しとしていいと思う
良いやり方が他にもあるから今後更に知識が付いたその時に改良していけば良いさ

241 名前:デフォルトの名無しさん [2022/02/27(日) 11:53:19.82 ID:F9ScTckVM.net]
どうもありがとう

ただ、なんかわからないのだが、ほかの所がエラー吐いてしまっています。
ちょっと死にそうですが、悩んでみます。
多分、また来ますw

242 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 12:19:45.80 ID:So6tXBwD0.net]
どうぞ〜がんばって〜

243 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 14:32:58.22 ID:F9ScTckVM.net]
>>235
おま、これすごい

これにしてみたら他に出たエラーもピシっと消えた
On Error は動いたけど、イレギュラーなパターンだとなぜか他でエラーになった
これも試したらイレギュラーでもバッチり

つーか、俺が昨日の夜中からずううとやっていてもこんなの作れないありがとう
ホント君らすげーよ
これ作るのに寿命を迎えるレベルだわ

244 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 14:49:32.88 ID:So6tXBwD0.net]
>>239
笑った
影響が最小限になるように、ちゃんと書く方が楽なんだよ
onerrorとかですっ飛ばすと、後で余計に大変になる

245 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 17:57:55.85 ID:JWEArlQD0.net]
関数て約500種類弱あるけど、全部マスターする必要あるのかな??
知人が、「Excelができる人材の定義は関数を全部マスターしているヤツの事だ!」とか言い出しているから

246 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:04:55.19 ID:ZPGXXCGc0.net]
VBAなら関数って自作が基本じゃないの?知らんけど

247 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:06:25.05 ID:So6tXBwD0.net]
>>241
>関数て約500種類弱あるけど、全部マスターする必要あるのかな??
ないよ

248 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:28:40.28 ID:CUu39Gd8M.net]
https://forest.watch.impress.co.jp/docs/news/1293471.html

249 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:34:38.78 ID:a0+qdDh70.net]
そら作れば無限に出来るわいな



250 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:39:37.90 ID:tDC5899T0.net]
>>241
EXCELが(凄く)できる人かEXCELが(初心者だけど)できる人では違うんじゃね

251 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:47:42.24 ID:NFpbXNxz0.net]
>>241
その知人に認めたくない人がいてExcelできる人で通ってるけど
関数はマスターしてないから言ってるだけ説

252 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:50:42.59 ID:AJPusFVK0.net]
知ってる関数の数なんて誇る奴がいたら失笑もんだわ

253 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:55:10.53 ID:a0+qdDh70.net]
標準の関数は少ないよな
俺はSUM CONCATENATE IFくらいしか覚えてない(ヘルプが必要)がその知人よりは多分出来ると思う

254 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:58:34.59 ID:WwuIS/YcM.net]
>>247
多分合ってるんだろうけどメッチャ理解し難いぐちゃぐちゃ関数式の様な日本語

255 名前:デフォルトの名無しさん [2022/02/27(日) 19:18:55.52 ID:Jrkr8SKF0.net]
>>241
その知人が馬鹿なだけだぞ

256 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 19:50:11.71 ID:So6tXBwD0.net]
知人ぼろかすで草

257 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 19:54:03.00 ID:XX45AiX5d.net]
Excelにどんな機能がある=関数
ってしかいえない人の戯言では

258 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 20:40:55.89 ID:D3HmGJ+n0.net]
>>241

If 友人が「Excelができる人材の定義は関数を全部マスターしているヤツの事だ!」と言った then
  throw 友人 どこか
End If

以下正常処理

259 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 20:51:03.99 ID:nGlHhzSe0.net]
If 友人が Then
 Yo! Yo! チェケラYO!
 Go To YoYo
End If
YoYo:
Oh! Oh! 皆で楽しくチェケラYo!



260 名前:デフォルトの名無しさん [2022/02/27(日) 21:11:45.66 ID:JrRqc3Naa.net]
If 友人.Count > 0 Then
のチェックをしておかないと例外が発生しかねんぞ

261 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:18:59.32 ID:f8g0XzTm0.net]
>>254
そこはRaiseだろ

262 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:27:51.88 ID:So6tXBwD0.net]
?友人 is nothing
true

263 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:34:07.20 ID:nGlHhzSe0.net]
確認事項
・友人はいますか
・親友はいますか
・彼女はいますか
・配偶者はいますか
・家族はいますか
・老後の心配はありませんか

264 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:42:34.72 ID:NFpbXNxz0.net]
>>250
知人A, 知人が認めたくない人B
Bは皆にできる人って思われてる
Aはそれが気に食わない
だから関数をマスターしていない事を理由に言ってるだけ説

ごめん頼んだ

265 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:46:20.69 ID:pkdB1ort0.net]
人生の大抵の困難はon erorr resume nextで解決可能である

266 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:52:09.54 ID:nGlHhzSe0.net]
On Error Shutdown And Reboot With Next Life

267 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 22:13:39.17 ID:amhd0I0YM.net]
>>262

例外処理が抜けてる

If You = カーズ Then
Do Until 地球からの距離 = 0
地球からの距離 = 地球からの距離 + 1
Loop
Elseif You = ディアブロ Then
死ぬ前:
死にそう
Goto:死ぬ前
死んだ

End if

268 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 22:37:19.46 ID:oWne56vR0.net]
Dim tmp As String
tmp = "どんまい"
MsgBox tmp

269 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 23:16:15.15 ID:JWEArlQD0.net]
関数そこまで必要かな?
マクロできるなら全部マクロでやれば良いじゃんね



270 名前:デフォルトの名無しさん [2022/02/27(日) 23:42:12.81 ID:Jrkr8SKF0.net]
>>265
類は友を呼ぶ
お前もどうしようもない馬鹿だ

271 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 03:06:37.96 ID:kykjWS4h0.net]
いやだなぁ〜先輩、冗談すよ冗談
職場になんでもVBA、VBAといってマジでVBAで片付けていた偉い人がいたもんでw

272 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 08:14:19.86 ID:9UyyIrQV0.net]
知人が、偉い人が、全て他人の話
ほんとうは・・・?

273 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 08:33:28.33 ID:o5ZgQ4pV0.net]
>>268
これ以上はやめて差し上げろ

274 名前:デフォルトの名無しさん [2022/02/28(月) 18:59:30.44 ID:h1aqAX/2M.net]
すいません。 こういうのはできますか?
セルの中に改行を見つけてから止める(修正)するVBAをつくりました。
改行が見つかったら、マクロを止めて手修正をして又マクロを走らせてを繰り返します。

ここで、問題なのが改行ならいいのですが、文字が多くて折り返しになっているのがたまにあります。
それも見つけたいのですが、知恵がみつかりません。
折り返し判定みたいなのはあまりなさそうです。 それとも行の高さを判定できるなら高さ22以上とか方法があるのかな?と

すいませんが、こんなのは?ってありましたら、お願いします。


Sub test()
Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Activate
Dim row_shou As Long
row_shou = Range("A14:D150").Find("小 計").Row
Dim Target As Range
Set Target = Range(Rows(14), Rows(row_shou - 1)).Find(What:=vbLf)
If Not Target Is Nothing Then
End
End If
Next Ws
End Sub

275 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 19:29:28.20 ID:o5ZgQ4pV0.net]
>>270
一行以外を全て検出したいなら、行の高さを検出するだけで終わると思う
改行は調べなくてもいいような

Sub foo()
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
基本の行の高さ = Cells(1, 1).RowHeight
For i = 1 To 最終行

If Cells(i, 1).RowHeight <> 基本の行の高さ Then
MsgBox i & "行目の高さがおかしいので、終了します。修正お願いします"
Exit Sub
End If

Next
End Sub

276 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 20:20:02.79 ID:h1aqAX/2M.net]
>>271
あ、あ、ありがとう
正直解読するのに一時間くらいかかって自分のに書き直せました。
一応動いていけそうです! 高さチェックでいけますね
こんなチンケな感じになりました。
神々に感謝します。

Sub test()
Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Activate

Dim row_shou As Long
row_shou = Range("A14:D150").Find("小 計").Row

'行の高さ15以上を検索
h = 15
For i = 14 To row_shou - 1
If Cells(i, 1).RowHeight > h Then
Exit Sub

End If
Next
Next Ws
End Sub

277 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 21:56:13.38 ID:1x7bPtTEd.net]
ぶっちゃけFindは滅多やたら使わん方が良いけどまあ良かったじゃん

278 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 18:55:07.17 ID:gFYHZAxx0.net]
なんでもスレだと更新が少なく答えがもらえなさそうなので、こちらにも書き込んですみません。
Excel VBAで質問です。

現在開いているシートにマクロボタンを作り、実行させると…
現在シートのB列に検索値
別のシート(ABC)のB列の5行目〜400行目までを検索して一致したセル番号が欲しいのですが
For cnt=1 To 10 samsu(cnt)=WorksheetFunction.Match(Cells(cnt,1),Worksheets(”ABC”).Range(Cells(5,1),Cells(400,1)),0)

next
このMatch関数の正しい書き方を教えてもらいたいのですが。

279 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 22:29:13.54 ID:Nv0Sds8Bd.net]
ちゃんと見ていないが、とりあえず.cellsの前にも全部ワークシートを指定しよう



280 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 07:23:43.88 ID:bacADaAbd.net]
どっちでも好きな方をどうぞ
samsu(cnt) = WorksheetFunction.Match(Cells(cnt, 1), Worksheets("ABC").Range(Worksheets("ABC").Cells(5, 2), Worksheets("ABC").Cells(400, 2)), 0)
samsu(cnt) = WorksheetFunction.Match(Cells(cnt, 1), Worksheets("ABC").Range("B5:B400"), 0)

281 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 18:02:30.94 ID:Dpz5qFA70.net]
質問です

社員毎に月々の残業時間の合計プログラムを作っています
合計した数値に対して、30分で切り上げ切り捨てしています(会社の残業規定に則り)
(例えば、月4:10の残業であれば4:00として出力、月4:35であるば5:00として出力)
合計した数値に対してFloor関数を使って切り上げ切り捨てをしているのですが、
月23:30の残業をした社員がいた場合、出力された値が0になってしまいます
表示形式を[h]にしてみましたが、結果は変わりません
デバックでFloor関数の中の変数の値を確認しましたら、23:30のシリアル値はきちんと入っています
そうするとFloor関数で切り上げしているのが原因なのでしょうか?
どなたかご教示いただきたいです…

282 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 18:09:09.52 ID:Dpz5qFA70.net]
簡潔ですが、以下のようなコードで書いています
.cells(1,1).NumberFormatLocal = "[h]"
a = "23:30"
.cells(1,1) = Application.Floor(a + TimeValue("0:30"),TimeValue("1:00"))

283 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 18:13:22.97 ID:ydQ1ic0a0.net]
>>277
mroundで1:00単位でいいんじゃない
https://i.imgur.com/igLdP9C.png

>>278
24と表示されたよ。そのままだとエラーになるので、2行目はtimevalueにいれた
https://i.imgur.com/a54wsnQ.png

284 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 18:43:03.81 ID:Dpz5qFA70.net]
>>279
MRoundにしてみたらできました!
ありがとうございます!

TimeValueについて書き損じ失礼しました
本来は"23:30"ではなく変数が入っていて、変数には23:30のシリアル値が入っています
なぜ0になってしまうのか謎ですが解決してよかったです

285 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 19:19:22.93 ID:n7HPCvTSa.net]
23時の次は24時ではなく0時だからだわな

286 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 19:25:50.55 ID:ydQ1ic0a0.net]
>>281
いや、書式設定が[h]なら24と表示されるはず

287 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 07:42:09.33 ID:LvEeINitr.net]
>>276
無事に動きました。
ありがとうございました。

288 名前:デフォルトの名無しさん [2022/03/03(木) 13:47:21.71 ID:KJVc8U50M.net]
質問をさせていただきます。 理解ができないことがあります。
 まず、加工BOOK と マクロ保存BOOK の二種類を使用しています。

加工BOOKにある複数のシートを連続して加工するときにネット情報で下記書き方を拾いました。
Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Activate
〜色々な動作〜
Next Ws
この「色々な動作」の中で
ThisWorkbook.Activate ’マクロ保存BOOKをアクティブ(シート指定セル指定してコピーを取ってます)
その後、Ws.Activate と書き 上記保存した文字を指定したセルにペースト
これは問題なくペーストできています。
ただ、なぜうまくペーストできるのか理解ができていません。

理由はではこれをシート毎に連続ではなく一枚だけペーストにした場合
最初の For Each Ws In Worksheets と Next Ws を削除すればいいか?と思いやってみたのですが、エラーしか出ません。

てっきりWSという関数に加工BOOKの場所データが格納されていてWs.Activateを書けば加工BOOKに戻ってきていると思ったのですが、エラーとなると違っていたのか?と理解ができなくなりました。

加工BOOKのBOOK名とかが書ければいいのでしょう

289 名前:ェ、BOOK名(ファイル名)は不特定でやりたい。他人に渡すので環境が読めない。

最初にアクティブになっていたブックシート情報を関数に入れておけばよいと想像しているのですが、どうすればいいかとかわかっていません。
グダグダな質問でわかりにくいと思いますが、二つのBOOKを行き来して片方はマクロを作動させた時にアクティブだったシートって条件にしたいのです。
[]
[ここ壊れてます]



290 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 14:00:06.45 ID:rCo9Fm7Z0.net]
AvtIVeやらしてる時点で作者も大した事なさそう

291 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 14:13:34.66 ID:9O05M6/x0.net]
>>284
For Each Ws In Worksheets
Ws.Activate
〜色々な動作〜
Next Ws

sheets("ワークシート名").Activate

WSをWorksheet("ワークシート名")
に変える
あと、Ws.Activateはなるべくやめたほうがいい
PCが重くてアクティブなシートやブックが変わると、大惨事になる可能性がある

本当にやるならopenなどで対象ファイルを開き、戻り値をsetするのが理想

>>285
??

292 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 14:19:57.38 ID:KJVc8U50M.net]
>>286
ありがとうございます。
この”ワークシート名”が分からなくても動かしたいのです。
つまり、hogehoge.xlsx だったり zukozuko.xlsxだったりするので
最初にアクティブだったファイル(シート)に戻ってくる汎用性がほしい。

293 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 14:22:48.58 ID:9O05M6/x0.net]
>>287
あぁ、じゃあ
ActiveSheet
でいいよ
ActiveSheet.Cells(1, 1) = 1
みたいな感じで使える

294 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 14:24:24.97 ID:9O05M6/x0.net]
そういやブックを指定する時はopenでいいけど、
シート名が不定な時、シートを指定する方法ってないのか
一旦開いてinputboxにインデックスかシート名入れるぐらいしかないのだろうか

295 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 14:32:22.98 ID:jSBR5AQpd.net]
まずワークシートもワークブックもわかってない事から勉強したほうがよいのではないか
それとよくわからず何となく動いたものを他人に渡して大丈夫なのかと不安になるわ

296 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 14:43:43.44 ID:9O05M6/x0.net]
あんまり大丈夫じゃないけど、そこまで言うのもねぇ

297 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 15:56:08.71 ID:KJVc8U50M.net]
心配かけます
とりあえず、データは何回でもダウンロードできるのでいくら壊れても大丈夫です。
内輪の事務ですし
やはり、どんなファイル名(シート名)でもOKとなると難しいですかね
当然フルパスみたいに書くのが良いのはわかります。

298 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 16:16:41.04 ID:jSBR5AQpd.net]
加工されるワークブックにはワークシートは複数なの?それとも1つなの?
仮に先頭にあるワークシートであれば
Set Ws = Worksheets(1)
のような指定をすればいいだけだぞ
ワークシート名が決まった名前であれば
Set Ws = Worksheets("○○")
のような指定でもOK
どのシートが加工していいのかを判断できるなら当初のFor文で回しながらシートを特定してもいいかと思うが
ある程度のルールが決まった質問じゃないと漠然としすぎて回答する側もとまどうと思うぞ

299 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 17:11:57.48 ID:AMDtBRAN0.net]
>>284
>てっきりWSという関数に加工BOOKの場所データが格納されていて
Wsは関数じゃなくて変数
その変数に値をセットしていたのがFor文
>最初にアクティブになっていたブックシート情報を関数に入れておけばよいと想像しているのですが、どうすればいいかとかわかっていません。
Set Ws=ActiveSheet
かな。試してないけど
とりあえずForの代わりにこれで動くんじゃね

あまりにも基本がわかってない感があるなぁ



300 名前:デフォルトの名無しさん [2022/03/03(木) 17:21:03.63 ID:Vn+IwdQAd.net]
コピペしかしない人なんでしょ

301 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 18:46:16.06 ID:KJVc8U50M.net]
>>294
はいすいません
関数は書き間違いです。変数ですよねw
ちょっと、脳が
Set Ws=ActiveSheet
で辻褄があいました。
最初の For Nextで全シートした場合も1シートだけやった場合もエラーが出ずに自分の脳みそも合致がいきました。
これを書いていないのに Forで動かしたときに問題なかったので???状態になっておりました。
ありがとうございます。

302 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 19:43:39.19 ID:5R1CCyAZd.net]
何ていうかVBAの言語より先にちゃんとした構文の日本語を学ぶ事をおすすめします

303 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 21:25:56.68 ID:pVJYfbHP0.net]
いやでも回答者さんの言うとおりだと思う。理屈や仕組み分からないまま使ったりしていたらいつかは大事故に繋がる。
過去にそういう事が身近であった。

304 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 21:46:06.24 ID:jSBR5AQpd.net]
何がきっかけで作ることになったか知らないけど
どうして動いてるかもわからずに作って少ししておかしいことに気づいてもすぐ直せなかったら評価悪くなると思うんだよね
自分の周りの出来事でなければ知ったことではないんだけどその辺は踏まえて作った方がいいよ

305 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 22:33:01.31 ID:yer8R1MmM.net]
ID:KJVc8U50M の言い回しが技術サイトでありがちな英語かロシア語の機械翻訳文に似てて草

306 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 11:35:29.63 ID:lcqTf7BDd.net]
!!Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Long
For i =1 to 5
cells(i,4)=DateValue(Cells(i,1)&" 年"&" 月"&Cells(i,2)&Cells(i,3)&"日")
Next i
End Sub

上記記述して実際にシートに数字を入力すると型が一致しませんとエラーになってしまいます
どうしていいのかわからずご教授していただければと
素人みたいな質問すいません

307 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 12:01:15.53 ID:tG3yIb4ia.net]
月の位置がおかしいから?w

308 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 12:21:43.22 ID:RMBcHsBod.net]
こういうひとってデバッグの仕方とか知らないのかね?
Debug.Print(Cells(i,1)&" 年"&" 月"&Cells(i,2)&Cells(i,3)&"日")
のようなことをすればどんな値が指定されているかわかるんだからみればいいのに

>素人みたいな質問すいません
素人でもこんな質問するかなという内容

309 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 12:21:43.61 ID:6K6JgexZM.net]
>>301
とりあえず止まったときにイミディエイトウィンドウで
Debug.Print Cells(i,1)&" 年"&" 月"&Cells(i,2)&Cells(i,3)&"日"
ってやってみな



310 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 12:22:36.15 ID:6K6JgexZM.net]
被ったわ…

311 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 12:39:47.23 ID:/JtJWIIA0.net]
そもそもVBAにする必要あるのかこれ?

312 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 12:51:19.12 ID:lcqTf7BDd.net]
>>301

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
For i =1 to 5
cells(i,4)=DateValue(Cells(i,1)&" 年"& Cells(i,2)&"月"&Cells(i,3)&"日")
Next i
End Sub

すいません!
月の位置が違いました
上記の記述でも型が一致しませんとエラーになってしまいます

313 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 13:08:57.00 ID:GCjMsc400.net]
=Date(A2, B2, ... え?それ以上はやめとけって? はーい

314 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 13:15:31.27 ID:RMBcHsBod.net]
その書き方だと少なくとも変更された際のイベントでDateValueを正しく動作させるには
1から5行目までの1から3列目までにそれぞれ年月日の値が保証されないと型が一致しないとでるけど
そういう状態が担保できてるの?
1行目の入力中でもその書き方だと2行目以降が空欄だと単なる「年月日」という値でDateValue実行してしまいますよ

315 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 13:43:03.37 ID:9H2YJJUDd.net]
セルの中身が実はシリアル値でしたに一票

316 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 14:24:04.55 ID:lcqTf7BDd.net]
>>309
おっしゃるとおりだと
なんとなくわかっていたのですが
回避方法ありますか?

317 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 14:46:06.75 ID:RMBcHsBod.net]
>>311
いずれかのセルが空欄や数字以外だったら4列目に空を設定
それ以外の場合のみDateValueとかでいいんじゃないの
ただ結果的に月日が不正な値(99月など)ならどうするとかそういうのも含めて自分で考えないとこの先やっていけないのでは

318 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 14:57:28.77 ID:lcqTf7BDd.net]
>>313
なるほど
参考になります
ググって見ます!
ありがとうございます!

319 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 11:28:41.82 ID:VC ]
[ここ壊れてます]



320 名前:o1qiqP0.net mailto: すみません、質問です!
例えばA1セルに関数が入っていたとします
A1セルが空白かどうか(関数は入っています)をVBAのIF文で分岐したいですがうまく行きません
VBAでは空白を取得できているはずなんですが何故なんでしょう…
どなたか対応方法を教えてください
[]
[ここ壊れてます]

321 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 11:33:03.86 ID:e+QnjkryM.net]
If Range("A1").Fomula = "" Then

322 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 11:33:45.29 ID:e+QnjkryM.net]
あ、嘘。ごめん。間違えた。忘れて。

323 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 11:39:20.91 ID:VCo1qiqP0.net]
>>315
ありがとうございます
Formulaを設定すると関数をそのまま取得してしまいました
なので空白の時の分岐ができませんでした

324 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 11:41:01.62 ID:VCo1qiqP0.net]
大丈夫です!
ありがとうございますm(_ _)m

ご存じの方いらっしゃいましたらよろしくお願いします

325 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 12:20:48.22 ID:vjLwCjzB0.net]
普通にセルのValueなりTextなりを見ればいいんじゃないの?

326 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 12:37:16.79 ID:YxxaCHXb0.net]
>>314>>318
If Range("A1").value = "" Then

>>319
その普通を学習前の段階ぽい

327 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 13:18:52.50 ID:+eE97yRCa.net]
空なのか空白なのか

328 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 13:28:01.68 ID:ez1E04nZd.net]
Trim(.Text)じゃないか?

>>321
数式が入ってたらEmptyにはならん

329 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 14:12:30.12 ID:vjLwCjzB0.net]
Empty と空文字列と空白は違うって話かと



330 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 19:12:34.37 ID:IBMOg+Z/0.net]
前任者のシートで0を書式で空白にしてるのには参ったね
textプロパティを覚えるきっかけにはなったけど

331 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 19:25:23.65 ID:fxoU/Jgx0.net]
文字列枠だけど 書式は #
よくやるw






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

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

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