Excel VBA 質問スレ Part80(ワッチョイあり)

2024/03/23(土) 15:09:35.81ID:ulv10UCb0
>>35
ありがとうございます

>>34
Application.quit
を削除したのですが
エクセルは終了しませんが
book?が終了します
2024/03/23(土) 15:47:42.35ID:2VB/Vbesd
>>36
ブック開いてると排他制御かかるから書き込みロックするソフトから当該ブック開けなくなる
だから閉じるしかないと思うよ
2024/03/23(土) 15:48:11.11ID:2VB/Vbesd
ああ、Excel側で読み取り専用で開き直すって手があるな
2024/03/23(土) 16:28:38.79ID:ulv10UCb0
>>37
アドバイスありがとうございます
閉じるしか
無理ですか...
40デフォルトの名無しさん (ワッチョイ 8b8e-adAD)
垢版 |
2024/03/23(土) 22:42:53.35ID:ULmGYrNT0
助けてで始まる質問をする奴は○○って法則
2024/03/26(火) 11:45:12.02ID:JlWIdVqx0
ブックのフルパス取得しといて開きなおすとこまで書けばいいんじゃ
42デフォルトの名無しさん (ワッチョイ 75f2-FSV6)
垢版 |
2024/03/26(火) 12:10:47.06ID:qhsI8dwj0
何がしたいかわからん
2024/04/08(月) 04:42:24.97ID:1vwt4prT0
日付(2024/01/01)のセルをVBAのRange("A1").Valueなどで取得すると、勝手に2024/01/01 (月)って曜日の文字列が追加されます。
曜日なしで取得する方法をご存じの方いましたら教えてください。
曜日がついているせいでDateとして扱えず困っています。
Dim d As Date
d = CDate(Range("A1").Value) '2024/01/01 (月)が入ってるため
これでエラーが出ます。

2024/01/01 01:00:00のように時間が入っている場合は2024/01/01 (月) 01:00:00になります。
NumberFormatLocalでフォーマットを指定してもダメでした。
取得するセルの書式設定は日付でユーザー定義ではないです。
最終手段の文字列を加工するのはなしでお願いします。
2024/04/08(月) 07:42:44.65ID:TVRO53b8d
>>43
Dim d As Date
d = CDate(DATEVALUE(Range("A1").Value))
2024/04/08(月) 14:05:35.40ID:nl9i5mBy0
>>43
試してみたけど、この3行はどれもエラーにならず同じ結果になった
d = CDate(Range("A1").Value)
d = Range("A1").Value
d = Range("A1")

セルA1の内容は本当にシリアル値か?
OSやOfficeは日本語版か?
ロケールは日本になってるか?

シリアル値ならそのままDate型に代入できるかららCDateで変換するのは無駄
A1セルの書式を標準に変えたらどんな表示になるか確認
46デフォルトの名無しさん (ワッチョイ 36f9-zSwZ)
垢版 |
2024/04/08(月) 14:31:02.66ID:bhILccJZ0
>>43
試したけど自分も再現しない。
そちらで新しいブックを作って同じ事を試したら再現する?
2024/04/09(火) 13:20:50.97ID:CNAyRCwJM
すみません。初心者です。調べてもわからなかったので質問します。urlのようにまず一週間分の表を作って 一週間ごとにオートフィルすれば表がつくれるのですがそれをマクロでやりたいです。よろしくお願いいたします
2024/04/09(火) 13:30:27.56ID:CNAyRCwJM
https://tadaup.jp/2205c27d6.png
これでお願いいたします
2024/04/09(火) 13:31:59.88ID:+lYdM27Td
質問とは
2024/04/09(火) 13:32:38.30ID:CNAyRCwJM
ボタンを配置して押すごとに一週間分作成という風にしたいです。
2024/04/09(火) 13:34:22.65ID:CNAyRCwJM
>>49
誠に勝手ながらコードを教えて欲しいです
2024/04/09(火) 14:44:25.19ID:EBugvdEwM
>>47
Sub 全自動で表を作るMacro1()
  Dim da As Date
  da = "1/1" 'この日からスタート
  ro = 2
  For we = 1 To 52 '52週間分作る
    Cells(ro, 3).Resize(1, 3) = Array("a", "b", "c")
    For lo = 1 To 7
      Cells(ro + lo, 2) = da
      da = da + 1
    Next
    Set ra = Cells(ro, 2).Resize(8, 4)
    ra.Borders(xlEdgeLeft).LineStyle = xlContinuous
    ra.Borders(xlEdgeLeft).Weight = xlMedium
    ra.Borders(xlEdgeRight).LineStyle = xlContinuous
    ra.Borders(xlEdgeRight).Weight = xlMedium
    ra.Borders(xlEdgeTop).LineStyle = xlContinuous
    ra.Borders(xlEdgeTop).Weight = xlMedium
    ra.Borders(xlEdgeBottom).LineStyle = xlContinuous
    ra.Borders(xlEdgeBottom).Weight = xlMedium
    ra.Borders(xlInsideVertical).LineStyle = xlContinuous
    ra.Borders(xlInsideVertical).Weight = xlMedium
    ra.Borders(xlInsideHorizontal).LineStyle = xlContinuous
    ra.Borders(xlInsideHorizontal).Weight = xlMedium
    ro = ro + 8
  Next
  Range("B:B").Font.Name = "MS 明朝"
  Range("C:E").Font.Name = "MS ゴシック"
  Range("B:E").Font.Bold = True
  Range("B:B").NumberFormatLocal = "m月d日 (aaa)"
End Sub
2024/04/09(火) 15:00:14.82ID:CNAyRCwJM
>>52
ありがとうございます。大変申し訳ありません。
2024/04/09(火) 16:35:36.48ID:CNAyRCwJM
>>52
すみません。これでも大丈夫ですがマクロ1回実行するごとに7日分つくりたいです。わがまますみません。
2024/04/09(火) 17:25:50.64ID:GvF1xxBu0
>>54
Sub 一週間ずつコピペ追加Macro1()
  ro = Cells(Rows.Count, 2).End(xlUp).Row
  Cells(ro - 7, 2).Resize(8, 4).Copy Cells(ro + 1, 2)
  For Each c In Cells(ro + 2, 2).Resize(7, 1)
    c.Value = c + 7
  Next
  Columns("B").AutoFit
End Sub
2024/04/09(火) 17:44:22.55ID:CNAyRCwJM
>>55
ありがとうございます!助かりました
2024/05/14(火) 11:08:08.44ID:4ur2uort0
ワークシート上で使うつもりの関数についてですが
Function で関数を作る場合に
ワークシートのsum関数のように、「開始セル:終端セル」で範囲指定したものを
引数として渡すにはどのように書けばいいでしょうか?

Fuction Nmame(ここにどう書けば・・・) as Ingteger

という意味です
2024/05/14(火) 12:42:16.58ID:kD3ns+u20
>>57

Function Nmame(セル範囲 As Range) As Integer
  Nmame = WorksheetFunction.Sum(セル範囲)
End Function
2024/05/14(火) 14:38:27.21ID:w6s7TkHo0
>>58
ありがとうございます
様子がわかりました
2024/05/15(水) 02:47:04.16ID:m8dxiqQg0
WorksheetFunctionを知らないのか便利さを理解してないのか分からんが、使わない奴多すぎだよ。
2024/05/20(月) 19:11:18.88ID:7XMc72u80
たしかにExcel使っている人の中で99.9%の人は使ってないと思うよ
2024/05/21(火) 10:21:01.62ID:KUESjums0
WorksheetFunctionは後でかなり読みづらくなるのとエラーの対処が面倒になるから極力避けちゃうな
SequenceとXlookupはたまに使う
2024/08/19(月) 12:24:22.85ID:r5bjtZ4H0
>>62
そのままベタで書いてない?
Set wf = WorksheetFunction
n = wf.Vlookup(以下略
みたいにすれば式が長くて読みづらいのはだいぶ改善されるけど
2024/08/19(月) 13:00:42.46ID:0FLHd/HT0
object変数使うのとwith句どっちにするか悩む
2024/08/21(水) 16:25:00.16ID:p6R299lZ0
まーあまり使う機会が無いからね
今パッと思いつくのでも銀行丸めでない四捨五入くらい
2024/08/21(水) 21:12:32.10ID:imFiEHqt0
wFuncと書くかな王道のキャメルネームってヤツで
2024/08/21(水) 21:32:45.54ID:mP9N7y9+0
functionの省略形はFn
キートップの表記もそうなってるし
2024/08/21(水) 21:39:19.62ID:9O1swhs+d
キートップでいうならほとんどのキーボードはFだよ
F1~F12のF
2024/08/22(木) 19:14:36.54ID:4iA6d+k70
なるほど、fnを変数名もありだね
短くて分かりやすいのがベスト
2024/08/22(木) 20:47:55.78ID:2kUwH3KZ0
>>68
そのパターンだと、続く数字がないと、F だけじゃ意味を認識できにくくないかな?
VBAと同じ祖先のN88-BASICにDEF FN()っていうステートメントがあったぐらいだし、Fnあたりが無難じゃないかなあと
2024/08/22(木) 21:40:22.16ID:4iA6d+k70
変数名悩むよいつも
2024/08/24(土) 06:52:44.35ID:BUiu5a090
wFuckでいいんじゃね
2024/08/24(土) 15:53:04.39ID:9/zXA2VM0
それもありだね
何となく意味が分かる変数名がベスト
2024/09/03(火) 11:47:24.62ID:RHXywGfU0
20種類前後の機材があり、1部屋につき5~10種使っていて、全部で50部屋程度ある
部屋毎に以下の内容を記載したシートを作らないといけない(機材名 サイズ 台数)というのが定期的にあり
現在は(部屋番号a 部屋名)と(部屋番号b 機材名 サイズ 台数)の一覧シートを作って
For 部屋番号=2 to 部屋番号bmax
部屋番号a=部屋番号b
*転記
といった形のマクロを使用しているのですが
いちいち機材名等をコピペするのが手前なので(機材名 サイズ 台数 部屋番号b1 b2…)のシートを作って部屋番号a=b1*転記、a=b2*転記みたいにしたいです
ただ、私の知識だと判定と転記の行を増やすくらいしか思い付かず、スッキリとした形にできるのでしょうか
2024/09/03(火) 16:38:51.21ID:UjP0155+0
すいません自己解決しました
76デフォルトの名無しさん (ワッチョイ 5fdb-nMrU)
垢版 |
2024/09/05(木) 12:36:06.75ID:z+pIceuZ0
雑魚解決
77デフォルトの名無しさん (ワッチョイ 8a76-V211)
垢版 |
2024/12/05(木) 14:41:34.90ID:BRiCmyxP0
B1:D1が全てTRUEの時、◯を違う時×を表示するという具合の関数を組みたいのですが何を使えばいいのでしょうか?
78デフォルトの名無しさん (アウアウエー Sa6a-VZt9)
垢版 |
2024/12/05(木) 14:48:46.36ID:2LNpfkRJa
lookup
vlookup
2024/12/05(木) 15:13:00.67ID:BvdDuGAN0
=IF(COUNTIF(B1:D1,TRUE)=3,”◯”,”×”)
2024/12/05(木) 16:43:15.56ID:e2kHlQPe0
=IF(AND(B1:D1),"○","×")
2024/12/05(木) 19:34:08.56ID:8QbKq8w50
VBAスレだからworksheetfunctionって明示しないと
2024/12/05(木) 21:20:09.22ID:7iZ97EoX0
= Mid("◯×", Range("B1") * Range("C1") * Range("D1") + 2, 1)
2024/12/07(土) 08:22:31.23ID:m++O9Thl0
>>77
頭を使ったほうが良いと思う
2024/12/07(土) 18:22:33.39ID:FGUnkbhB0
ここに来るのは、頭だけは絶対に使わない人達
2024/12/07(土) 20:46:46.78ID:5zqnWiz30
ポコポコヘッドを覚えてから質問して来い?
2024/12/07(土) 21:35:52.97ID:5P3CnKiu0
>>84
よう馬鹿!
2024/12/09(月) 11:28:21.48ID:WZWOgPIq0
うんこ
88デフォルトの名無しさん (ワッチョイ 63da-RIo9)
垢版 |
2025/01/23(木) 21:39:17.03ID:L52ALlnW0
カレー
89デフォルトの名無しさん (ワッチョイ 5901-Puvx)
垢版 |
2025/06/10(火) 22:29:47.99ID:chtn5cci0
今どきのCONTINUEと同じように使えるのが goto CONTINUE方式
2025/06/11(水) 17:06:06.79ID:KpaZiopI0
ワッチョイありのがええんやで
91デフォルトの名無しさん (アウアウウー Sacd-xHx3)
垢版 |
2025/06/15(日) 12:04:33.82ID:VWehYNCSa
無の方は荒らされてるな
92デフォルトの名無しさん (ワッチョイ a901-RmZj)
垢版 |
2025/06/15(日) 16:04:36.12ID:iEbH+tZ40
バカが騒いでるだけ
わざわざ私バカですって手を挙げて出てくるのが面白い、本人がわかってなくてw
2025/06/15(日) 23:58:19.79ID:K8AqenHf0
VBAスレ2つあったの今知ったわw
2025/06/16(月) 07:54:22.50ID:ibaltNjp0
>>92
わかってる奴は質問スレ使う理由ないんだから、
質問スレでマウント取る奴ってそのために質問スレに書き込むバカでしかないんだよな
疑問の解決に寄与するならまだしも的外れなこと言ってる奴もいるし
2025/06/16(月) 13:10:13.94ID:Mgfu6kwT0
昔から言われてるでしょ
「バカって言うやつが本当のバカ」
96デフォルトの名無しさん (ワッチョイ a901-RmZj)
垢版 |
2025/06/16(月) 21:13:13.73ID:jCyEwpBS0
>>95
昔から言われてるでしょ
それ言ってるのはバカしかいないと
2025/06/17(火) 18:43:01.81ID:XfPfRxIO0
昔から言われてるのは、5ちゃんねるに書き込んでる事自体馬鹿ってヤツ
98デフォルトの名無しさん (ワッチョイ f6e4-xkro)
垢版 |
2025/06/17(火) 19:14:09.68ID:ebkbzKcj0
それは否定できねぇなあ
99デフォルトの名無しさん (ワッチョイ 7501-VTwo)
垢版 |
2025/06/17(火) 20:52:08.20ID:87w8cuvY0
踊る阿呆に見る阿呆、同じ阿呆なら踊らにゃ損損
100デフォルトの名無しさん (ワッチョイ 655f-AFj/)
垢版 |
2025/06/20(金) 21:29:26.25ID:sV38LovV0
アホちゃいまんねんパーでんねん
101デフォルトの名無しさん (アウアウウー Sa69-58RN)
垢版 |
2025/06/22(日) 11:13:20.67ID:pDLda+7Na
シットルケ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況