↑同じ内容を3行貼り付けること
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part77
https://mevius.5ch.net/test/read.cgi/tech/1658009255/
Excel VBA 質問スレ Part78
https://mevius.5ch.net/test/read.cgi/tech/1667104996/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part79
■ このスレッドは過去ログ倉庫に格納されています
2023/01/28(土) 11:46:47.21ID:mBQ16TA8
293デフォルトの名無しさん
2023/03/14(火) 19:37:13.34ID:28TiEHhw >>290様
仕事で、料理の数の合計を出しています。料理の数の入力が
ないセルは「空白」ですから、選択オプションで「空白セル」を
チェックし、「空白のセル(列)」をすべて非表示にできました。
最後は、自動で「SUM関数」かつ「(合計が)0の表示」のセルを
選択し、セル(列)を非表示にしたいのです。手動でやれよって話
かもしれませんが、マクロで自動化ってできるものなのでしょうか。
仕事で、料理の数の合計を出しています。料理の数の入力が
ないセルは「空白」ですから、選択オプションで「空白セル」を
チェックし、「空白のセル(列)」をすべて非表示にできました。
最後は、自動で「SUM関数」かつ「(合計が)0の表示」のセルを
選択し、セル(列)を非表示にしたいのです。手動でやれよって話
かもしれませんが、マクロで自動化ってできるものなのでしょうか。
294デフォルトの名無しさん
2023/03/14(火) 20:05:55.83ID:28TiEHhw >>292様
>>フィルタで0を指定してからsumで検索すれば行けそう
確認しました。列にならできると思います。しかし、
行方向のセルにフィルタをかける事はできませんでした。
行の一定の範囲のセルを選択したいです。行にフィルタを
かける事はできませんでした。行と列を入れ替えて、列に
フィルタをかけ、最後に行と列を入れ替えたらよいですか。
>>フィルタで0を指定してからsumで検索すれば行けそう
確認しました。列にならできると思います。しかし、
行方向のセルにフィルタをかける事はできませんでした。
行の一定の範囲のセルを選択したいです。行にフィルタを
かける事はできませんでした。行と列を入れ替えて、列に
フィルタをかけ、最後に行と列を入れ替えたらよいですか。
295デフォルトの名無しさん
2023/03/14(火) 20:38:11.33ID:8uN0bEAR >>289
各列の1行目にsum関数があるとして、
その合計が0ならその列を非表示にするというマクロならこんな感じか。
(データがどこまであるかわからんからとりあえずA列からF列までを対象にしてる)。
Sub 列を非表示()
Dim i As Long
For i = 1 To 6
If Cells(1, i) = 0 And Cells(1, i).HasFormula = True Then
Columns(i).EntireColumn.Hidden = True
End If
Next i
End Sub
sum関数かどうかまでは判定していないから
sum関数以外の関数が入っていてその値が0なら
その列も非表示になる。
後はどのセルに関数が入っているかわからんから
そこらへんは調整してくれ。
各列の1行目にsum関数があるとして、
その合計が0ならその列を非表示にするというマクロならこんな感じか。
(データがどこまであるかわからんからとりあえずA列からF列までを対象にしてる)。
Sub 列を非表示()
Dim i As Long
For i = 1 To 6
If Cells(1, i) = 0 And Cells(1, i).HasFormula = True Then
Columns(i).EntireColumn.Hidden = True
End If
Next i
End Sub
sum関数かどうかまでは判定していないから
sum関数以外の関数が入っていてその値が0なら
その列も非表示になる。
後はどのセルに関数が入っているかわからんから
そこらへんは調整してくれ。
296デフォルトの名無しさん
2023/03/14(火) 20:42:07.34ID:goR8feNU セルを非表示 という書き方が戸惑う元だけど
>>290 の二行目に書いた Sheet上の0の値を[0]表示させない方法ではダメなのか?
SUMの結果が0のケースでも、0とは表示されず空白になるんだが?
セルの書式設定で ;;; にすることでセルの非表示ということらしいが、結果は変わるのか?
手元のExcelで試しているけど、どういう結果が欲しいのか分からんから戸惑ってる
わざわざ空白セルも非表示にする必要がさっぱりわからん 背景色とかが絡んで来る? 印刷時?
>>290 の二行目に書いた Sheet上の0の値を[0]表示させない方法ではダメなのか?
SUMの結果が0のケースでも、0とは表示されず空白になるんだが?
セルの書式設定で ;;; にすることでセルの非表示ということらしいが、結果は変わるのか?
手元のExcelで試しているけど、どういう結果が欲しいのか分からんから戸惑ってる
わざわざ空白セルも非表示にする必要がさっぱりわからん 背景色とかが絡んで来る? 印刷時?
297デフォルトの名無しさん
2023/03/14(火) 20:51:19.35ID:28TiEHhw >>295様
これが具体的なVBAコードですね!ありがとうございます。
説明不足でややこしくてすみません。
とりあえず、本やネットを見ながらコードを参考にし、実践
してみようと思います。皆様ありがとうございました。
これが具体的なVBAコードですね!ありがとうございます。
説明不足でややこしくてすみません。
とりあえず、本やネットを見ながらコードを参考にし、実践
してみようと思います。皆様ありがとうございました。
298デフォルトの名無しさん
2023/03/14(火) 21:06:36.93ID:28TiEHhw >>296様
おっしゃる通りで、表示させない方法で空白になりました。;;を使っても0が表示されず、
空白になります。この状態で、行の一定の範囲を選択して、選択オプションで「空白セル」
にチェックを入れます。しかし、「SUM関数かつ空白」が選択されず、列を非表示に
できません。SUM関数があると空白と認識されないようです。
>>わざわざ空白セルも非表示にする必要がさっぱりわからん 印刷時?
おっしゃる通りです。空白のセル(列)を非表示にし、印刷しないためです。
おっしゃる通りで、表示させない方法で空白になりました。;;を使っても0が表示されず、
空白になります。この状態で、行の一定の範囲を選択して、選択オプションで「空白セル」
にチェックを入れます。しかし、「SUM関数かつ空白」が選択されず、列を非表示に
できません。SUM関数があると空白と認識されないようです。
>>わざわざ空白セルも非表示にする必要がさっぱりわからん 印刷時?
おっしゃる通りです。空白のセル(列)を非表示にし、印刷しないためです。
299デフォルトの名無しさん
2023/03/14(火) 23:37:15.42ID:WthbhZLX 聞く方も答える方も馬鹿で頭が痛くなる
このスレを立てた奴の頭のレベルの程度のせいか?
このスレを立てた奴の頭のレベルの程度のせいか?
300デフォルトの名無しさん
2023/03/15(水) 00:01:55.44ID:Ogi5eYUO >>299みたいなのが賢いムーブなんですね、参考になります
301デフォルトの名無しさん
2023/03/15(水) 07:40:00.44ID:dWb1Fnpz 送られてきたEXCELファイルの特定のセルにある文字列や数値を別のブックにある表シート(特定のセル)に反映させてデータを自動集計したい。
この場合どのようなコードが必要ですか?
この場合どのようなコードが必要ですか?
302デフォルトの名無しさん
2023/03/15(水) 10:52:57.27ID:bng7Ef1J303デフォルトの名無しさん
2023/03/15(水) 12:05:57.01ID:VvC5BQRV >>301
そういうのは今はChatGPTに聞いた方が早いかと。
その質問をそのままコピペ、VBAのコードでと聞いたらこんな風に返ってきた。
VBAを使用して、Excelファイルから特定のセルの値を抽出し、別のブックにある特定のセルに値を反映させるには、以下のようなコードを使用できます。
Sub copyCellValue()
Dim srcBook As Workbook
Dim destBook As Workbook
Dim srcSheet As Worksheet
Dim destSheet As Worksheet
Dim srcRange As Range
Dim destRange As Range
'コピー元のブック、シート、セルを指定
Set srcBook = Workbooks.Open("path/to/source_file.xlsx")
Set srcSheet = srcBook.Worksheets("Sheet1")
Set srcRange = srcSheet.Range("A1")
'コピー先のブック、シート、セルを指定
Set destBook = Workbooks.Open("path/to/destination_file.xlsx")
Set destSheet = destBook.Worksheets("Sheet1")
Set destRange = destSheet.Range("B2")
'コピー元のセルの値をコピー先のセルに反映
destRange.Value = srcRange.Value
'ブックを閉じる
srcBook.Close
destBook.Close
End Sub
そういうのは今はChatGPTに聞いた方が早いかと。
その質問をそのままコピペ、VBAのコードでと聞いたらこんな風に返ってきた。
VBAを使用して、Excelファイルから特定のセルの値を抽出し、別のブックにある特定のセルに値を反映させるには、以下のようなコードを使用できます。
Sub copyCellValue()
Dim srcBook As Workbook
Dim destBook As Workbook
Dim srcSheet As Worksheet
Dim destSheet As Worksheet
Dim srcRange As Range
Dim destRange As Range
'コピー元のブック、シート、セルを指定
Set srcBook = Workbooks.Open("path/to/source_file.xlsx")
Set srcSheet = srcBook.Worksheets("Sheet1")
Set srcRange = srcSheet.Range("A1")
'コピー先のブック、シート、セルを指定
Set destBook = Workbooks.Open("path/to/destination_file.xlsx")
Set destSheet = destBook.Worksheets("Sheet1")
Set destRange = destSheet.Range("B2")
'コピー元のセルの値をコピー先のセルに反映
destRange.Value = srcRange.Value
'ブックを閉じる
srcBook.Close
destBook.Close
End Sub
304デフォルトの名無しさん
2023/03/15(水) 13:19:10.47ID:jS5g/06S chatGPTの亜流がどんどんでてきたな
https://ronpagpt.jp/
https://ronpagpt.jp/
305デフォルトの名無しさん
2023/03/15(水) 14:24:15.02ID:/7ImdP24306デフォルトの名無しさん
2023/03/15(水) 17:36:50.88ID:d5qN4lxo307デフォルトの名無しさん
2023/03/15(水) 18:04:03.00ID:/7ImdP24308デフォルトの名無しさん
2023/03/15(水) 18:41:01.53ID:X44VfF2/ やっぱり零細企業の馬鹿本人かよ
309デフォルトの名無しさん
2023/03/15(水) 19:56:07.69ID:cZ1DNOu4 >>296様 皆様
やっと「SUM関数かつ0が表示」を選択する事が
できました!!!これでムダな列を自動的に非表示にできます。
@一定の範囲のセルを選択 A検索で「0」の値を検索
B検索結果をクリック Cctrl+Aですべてを選択
大変お騒がせ致しました。本当にありがとうございました。
やっと「SUM関数かつ0が表示」を選択する事が
できました!!!これでムダな列を自動的に非表示にできます。
@一定の範囲のセルを選択 A検索で「0」の値を検索
B検索結果をクリック Cctrl+Aですべてを選択
大変お騒がせ致しました。本当にありがとうございました。
310デフォルトの名無しさん
2023/03/15(水) 20:16:56.49ID:/7ImdP24 やりたいことが分かってから意見書くのも、なんか憚られるが
それ、横方向に並べ替えすれば合計欄0のだけ端っこにまとまるから、それで一気に列の非表示すればよくね?
元データが料理の種別とかで固定だから並べ替えなんか「成りません!」てなら別だけど
それでも何かを基準に左に詰めたりできそうな気がするんだが
https://sakusaku-office.com/excel/post-9111/
https://webpt.jp/blog/excel/excel-across-sort/
それ、横方向に並べ替えすれば合計欄0のだけ端っこにまとまるから、それで一気に列の非表示すればよくね?
元データが料理の種別とかで固定だから並べ替えなんか「成りません!」てなら別だけど
それでも何かを基準に左に詰めたりできそうな気がするんだが
https://sakusaku-office.com/excel/post-9111/
https://webpt.jp/blog/excel/excel-across-sort/
311デフォルトの名無しさん
2023/03/15(水) 20:47:00.15ID:V0E4/N1Q 馬鹿が考える方法は馬鹿な頭から出てくる馬鹿な方法だからまともに相手にするのが間違い
馬鹿が質問すると荒れるから迷惑
馬鹿が質問すると荒れるから迷惑
312デフォルトの名無しさん
2023/03/15(水) 21:59:25.48ID:jS5g/06S313デフォルトの名無しさん
2023/03/15(水) 23:05:20.69ID:xu8ICwau ジジババって最新の技術をすぐ小馬鹿にするよね?
314デフォルトの名無しさん
2023/03/15(水) 23:58:49.40ID:cjZorZVQ 最近の馬鹿って自分が馬鹿なことに気づかないの?
315デフォルトの名無しさん
2023/03/16(木) 00:27:14.17ID:434mvrOL >>312
ワロス
ワロス
316デフォルトの名無しさん
2023/03/16(木) 02:07:32.51ID:B5SNFDHd さっきから何あぼーんの嵐(笑)
317デフォルトの名無しさん
2023/03/16(木) 10:36:22.46ID:N2/NSeFa 馬鹿はエントロピーが大きい状態
エントロピー増大の法則
エントロピー増大の法則
318デフォルトの名無しさん
2023/03/16(木) 11:33:40.43ID:w6mQ50Ij コードの保存はどうしている?
ChatGPTで色々と変更しながら書いてもらっているけど、過去のも残しておきたいが
ぐちゃぐちゃになっている。
ChatGPTで色々と変更しながら書いてもらっているけど、過去のも残しておきたいが
ぐちゃぐちゃになっている。
319デフォルトの名無しさん
2023/03/16(木) 11:38:54.15ID:6Wkwlpg5 そこにメモ帳があるだろ
320デフォルトの名無しさん
2023/03/16(木) 13:04:45.51ID:s5XEFQZu321デフォルトの名無しさん
2023/03/16(木) 15:49:40.74ID:hTqOV0Oo 間違えた回答をありがたく保存するのかよ
322デフォルトの名無しさん
2023/03/16(木) 17:03:31.67ID:pLTmwSf1 VBA で1を1stに変換する関数ないの?
323デフォルトの名無しさん
2023/03/16(木) 17:49:19.70ID:dPl9ROvM Excel VBAにはない
Access VBAなら専用の関数がある
Access VBAなら専用の関数がある
324デフォルトの名無しさん
2023/03/16(木) 18:00:58.62ID:Loiq54un325デフォルトの名無しさん
2023/03/16(木) 21:12:18.58ID:wf1v+CLj >>322
ワークシート関数で出来るらしい。
=A1&IF(OR(MOD(A1,100)={11,12,13}),"th",CHOOSE(MIN(5,RIGHT(A1)+1),"th","st","nd","rd","th"))
20までならもっと簡単になるみたいで。
=A1&LOOKUP(A1,{0,1,2,3,4;"th","st","nd","rd","th"})
上記の数式をVBAからWorksheetFunction関数で使う手も。
ワークシート関数で出来るらしい。
=A1&IF(OR(MOD(A1,100)={11,12,13}),"th",CHOOSE(MIN(5,RIGHT(A1)+1),"th","st","nd","rd","th"))
20までならもっと簡単になるみたいで。
=A1&LOOKUP(A1,{0,1,2,3,4;"th","st","nd","rd","th"})
上記の数式をVBAからWorksheetFunction関数で使う手も。
326デフォルトの名無しさん
2023/03/18(土) 21:04:59.58ID:Rz29PTI+ >>322
どこまでの値をカバーするか、どういうデータか、によっては、既に書かれているとおりワークシート関数でも事足りるよ
なお本当に1を1stにするだけだったらワークシート関数のSUBSTITUTE使えばいい
どこまでの値をカバーするか、どういうデータか、によっては、既に書かれているとおりワークシート関数でも事足りるよ
なお本当に1を1stにするだけだったらワークシート関数のSUBSTITUTE使えばいい
327デフォルトの名無しさん
2023/03/18(土) 21:17:55.87ID:Za4MxO2H 1 → 1st
11 → 1st1st
101 → 1st01st
11 → 1st1st
101 → 1st01st
328デフォルトの名無しさん
2023/03/18(土) 21:57:25.24ID:AwqZu1PH スクショを貼り付けしてトリミングするまでのマクロ使ってるんですが
トリミングした不要な部分を削除
を追加する事ってできますか?
トリミングした不要な部分を削除
を追加する事ってできますか?
329デフォルトの名無しさん
2023/03/18(土) 22:53:09.64ID:X3/sx5T9 マクロでやる必要ある?
330デフォルトの名無しさん
2023/03/19(日) 10:30:21.74ID:fsx9oQpt >>329
毎回、図のトリミング部分を削除するのが手間でマクロでやってしまいたい
毎回、図のトリミング部分を削除するのが手間でマクロでやってしまいたい
331デフォルトの名無しさん
2023/03/19(日) 11:14:17.24ID:T5Hyor/5 [Win]+[Shift]+[S]キー とかでスクショ撮る前に切り取れば?
>トリミングした不要な部分を削除を追加する というのがよく分からんが
うっかりトリミングしたけど元に戻したいとか?
https://itojisan.xyz/settings/25094/ キャプチャの再考も必要かも
>トリミングした不要な部分を削除を追加する というのがよく分からんが
うっかりトリミングしたけど元に戻したいとか?
https://itojisan.xyz/settings/25094/ キャプチャの再考も必要かも
332デフォルトの名無しさん
2023/03/19(日) 13:05:56.53ID:fsx9oQpt スクショするコードと下のコード繋げて貼り付けてるんだけどその後に図のトリミング部分を削除を毎回手動でやってるんだけど
その手間を無くせないかなと思って
Sub 貼り付け()
Range("A6").Select
ActiveSheet.Paste
Application.CommandBars("Format Object").Visible = False
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.IncrementTop 126.5453543307
Selection.ShapeRange.ScaleWidth 0.5493110633, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.8437515373, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.PictureFormat.Crop.PictureWidth = 1439
Selection.ShapeRange.PictureFormat.Crop.PictureHeight = 809
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetX = 324
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetY = -63
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.IncrementLeft 28.3636220472
Selection.ShapeRange.IncrementTop 0.00007874015748
Selection.ShapeRange.ScaleWidth 0.9641379475, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.9259154745, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.PictureFormat.Crop.PictureWidth = 1439
Selection.ShapeRange.PictureFormat.Crop.PictureHeight = 809
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetX = 310
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetY = -37
Selection.Placement = xlFreeFloating
Selection.ShapeRange.LockAspectRatio = msoTrue
Range("A10").Select
ActiveWindow.WindowState = xlMaximized 'ウィンドウを最大化
End Sub
その手間を無くせないかなと思って
Sub 貼り付け()
Range("A6").Select
ActiveSheet.Paste
Application.CommandBars("Format Object").Visible = False
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.IncrementTop 126.5453543307
Selection.ShapeRange.ScaleWidth 0.5493110633, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.8437515373, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.PictureFormat.Crop.PictureWidth = 1439
Selection.ShapeRange.PictureFormat.Crop.PictureHeight = 809
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetX = 324
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetY = -63
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.IncrementLeft 28.3636220472
Selection.ShapeRange.IncrementTop 0.00007874015748
Selection.ShapeRange.ScaleWidth 0.9641379475, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.9259154745, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.PictureFormat.Crop.PictureWidth = 1439
Selection.ShapeRange.PictureFormat.Crop.PictureHeight = 809
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetX = 310
Selection.ShapeRange.PictureFormat.Crop.PictureOffsetY = -37
Selection.Placement = xlFreeFloating
Selection.ShapeRange.LockAspectRatio = msoTrue
Range("A10").Select
ActiveWindow.WindowState = xlMaximized 'ウィンドウを最大化
End Sub
333デフォルトの名無しさん
2023/03/19(日) 18:29:45.55ID:M92RK9ru あなたの言うトリミングとは何なのか
トリミング=不要な部分の削除ではないのか
というところから、どうぞ
トリミング=不要な部分の削除ではないのか
というところから、どうぞ
334デフォルトの名無しさん
2023/03/19(日) 19:21:57.35ID:+3/waKCo >>333
図の圧縮のトリミングをvbaでやりたいけどコードが分からないんだろう
図の圧縮のトリミングをvbaでやりたいけどコードが分からないんだろう
335デフォルトの名無しさん
2023/03/19(日) 21:50:22.00ID:fsx9oQpt いやだから図のトリミング部分を削除したいと言うてるわけです
336デフォルトの名無しさん
2023/03/19(日) 22:16:16.30ID:N8t0mUor いやだからわざわざマクロでやる必要ないでしょ?
コード書いてるより手動でやった方が早いのでは?
コード書いてるより手動でやった方が早いのでは?
337デフォルトの名無しさん
2023/03/19(日) 22:33:34.30ID:fsx9oQpt 頻度が多いのよ
図の形式からいちいち削除する手間を無くして
貼ったと同時に不要なトリム部分を削除したい
ネットで見てもなかなか載ってない
図の形式からいちいち削除する手間を無くして
貼ったと同時に不要なトリム部分を削除したい
ネットで見てもなかなか載ってない
338デフォルトの名無しさん
2023/03/19(日) 22:39:45.16ID:+3/waKCo >>332
いやお前ら、
図の圧縮のトリミングをマクロでやる方法があるならそれを教えてあげなよ
俺はわからなかった。マクロの記録にもない
何パターンか
・図の圧縮をキーマクロにする
個人的には全くオススメしない
https://yaromai.jp/shape-compression/
・別ソフトを使う
pictcutterとか
ドラッグアンドドロップで処理できる
マクロでどうこうするより早い
・別アプリと連携する
imagemagickがvbaと連携できる
かなりしんどいけど、imagemagickは有名なソフトでかなり色々できる
急がないならかなりお勧め。知っていれば画像に関することはほぼなんでもできるようになる
https://qiita.com/tabizou/items/5789ae88abbb063ea0bb
いやお前ら、
図の圧縮のトリミングをマクロでやる方法があるならそれを教えてあげなよ
俺はわからなかった。マクロの記録にもない
何パターンか
・図の圧縮をキーマクロにする
個人的には全くオススメしない
https://yaromai.jp/shape-compression/
・別ソフトを使う
pictcutterとか
ドラッグアンドドロップで処理できる
マクロでどうこうするより早い
・別アプリと連携する
imagemagickがvbaと連携できる
かなりしんどいけど、imagemagickは有名なソフトでかなり色々できる
急がないならかなりお勧め。知っていれば画像に関することはほぼなんでもできるようになる
https://qiita.com/tabizou/items/5789ae88abbb063ea0bb
339デフォルトの名無しさん
2023/03/19(日) 22:45:35.69ID:M92RK9ru こんな感じ?
Set shape1 = ActiveSheet.Shapes(1)
shape1.Copy
ActiveSheet.PasteSpecial Format:="図 (PNG)"
Set shape2 = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
shape2.Left = shape1.Left
shape2.Top = shape1.Top
shape1.Delete
Set shape1 = ActiveSheet.Shapes(1)
shape1.Copy
ActiveSheet.PasteSpecial Format:="図 (PNG)"
Set shape2 = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
shape2.Left = shape1.Left
shape2.Top = shape1.Top
shape1.Delete
340デフォルトの名無しさん
2023/03/20(月) 08:19:41.94ID:K5H+7bLz341デフォルトの名無しさん
2023/03/20(月) 08:22:41.79ID:K5H+7bLz いや、マジ凄い
素人ながら結構ネットで検索してたのに
実現は無理なんかなと諦めてた
本当に本当にありがとう
すげえ
素人ながら結構ネットで検索してたのに
実現は無理なんかなと諦めてた
本当に本当にありがとう
すげえ
342デフォルトの名無しさん
2023/03/21(火) 01:10:26.57ID:2GJP0s5v 惚れちゃうよね
343デフォルトの名無しさん
2023/03/21(火) 07:03:36.10ID:bl4/liXV 濡れる
344デフォルトの名無しさん
2023/03/21(火) 10:12:48.44ID:PCjca3J8 人間chatgpt認定
345デフォルトの名無しさん
2023/03/21(火) 23:13:02.09ID:QiPSaXn9 ワイはエクセルのイルカ
何でも質問してええよ
何でも質問してええよ
346デフォルトの名無しさん
2023/03/21(火) 23:23:48.95ID:kDcUmgO1 お前を消す方法
347デフォルトの名無しさん
2023/03/21(火) 23:34:19.90ID:PCjca3J8 サエコ先生?アシスタントだっけ?
あれもリストラされたよね
あれもリストラされたよね
348デフォルトの名無しさん
2023/03/24(金) 08:20:34.18ID:1yrWyKZ9 【本当にあった怖いVBA】
Enum SDigit
SList = 2
SOutput
End enum
sub test()
set wsh = Thisworkbook.WorkSheets(SName(SList)))
End sub
↑お、SNameがシート名配列か?
Function SName(FDigit As SDigit)
SName = LSheet.Cells(FDigit, 2).Value
End Function
↑ん?
Function LSheet()
Set LSheet = Thisworkbook.WorkSheets("一覧表")
End Function
↑?????????
Enum SDigit
SList = 2
SOutput
End enum
sub test()
set wsh = Thisworkbook.WorkSheets(SName(SList)))
End sub
↑お、SNameがシート名配列か?
Function SName(FDigit As SDigit)
SName = LSheet.Cells(FDigit, 2).Value
End Function
↑ん?
Function LSheet()
Set LSheet = Thisworkbook.WorkSheets("一覧表")
End Function
↑?????????
349デフォルトの名無しさん
2023/03/24(金) 08:59:41.03ID:y9S7Bvf0 set wsh = Thisworkbook.WorkSheets(FDigit)
でええがな
でええがな
350デフォルトの名無しさん
2023/03/24(金) 10:27:19.17ID:mGsBzzaU いや待て
ひょっとすると
Function Lsheetは
実は別クラスに書いてあって
インターフェースを介在して
取ってきているのかもしれないぞ。
そしたら場合によっては
そんな記載になることも
ないとは言い切れない。
ひょっとすると
Function Lsheetは
実は別クラスに書いてあって
インターフェースを介在して
取ってきているのかもしれないぞ。
そしたら場合によっては
そんな記載になることも
ないとは言い切れない。
351デフォルトの名無しさん
2023/03/24(金) 10:44:43.79ID:FUl1ABhx いやどれも同じ標準モジュール
一覧表シートに載ってる表(A列がブックのパス、B列がシート名みたいな)の値を取るだけだったから
Set Wbo = WorkBooks.Open( SPath( SOutput) )
Set Wsh = Wbo.WorkSheets( SName( SOutput) )
みたいな記述もある(SpathはLSheetのA列から取ってくる)
コメント0でなんでこんな記述してるのかも定数や配列にしてないのかも分からん
一覧表シートに載ってる表(A列がブックのパス、B列がシート名みたいな)の値を取るだけだったから
Set Wbo = WorkBooks.Open( SPath( SOutput) )
Set Wsh = Wbo.WorkSheets( SName( SOutput) )
みたいな記述もある(SpathはLSheetのA列から取ってくる)
コメント0でなんでこんな記述してるのかも定数や配列にしてないのかも分からん
352デフォルトの名無しさん
2023/03/24(金) 11:25:35.61ID:1rbGFcof 変数名にwshは感心しない
斜め読みだと外部スクリプトでも呼んでるのかと勘違いする
斜め読みだと外部スクリプトでも呼んでるのかと勘違いする
353デフォルトの名無しさん
2023/03/24(金) 11:57:47.57ID:y9S7Bvf0 >>352
それはかなり思う。いつも少しひっかかる
それはかなり思う。いつも少しひっかかる
354デフォルトの名無しさん
2023/03/24(金) 12:03:58.85ID:MDleo4Zx 古き良きハンガリアン風に
WB_[ブックの役割名]
WS_[シートの役割名]
とかかな。
WB_[ブックの役割名]
WS_[シートの役割名]
とかかな。
355デフォルトの名無しさん
2023/03/24(金) 12:10:10.68ID:anQmlZ/+ 俺はxla, xlb, xls
356348
2023/03/24(金) 12:14:05.32ID:FUl1ABhx さすがにシートの変数名は変えてあるわ
定数で済むものをシートからの取得にしたり
シートからの取得方法が関数の多重呼び出しだったり
呼び出し先の関数ではシート名直打ちだったり
関数が配列みたいな名前だったり
呼び出しの引数がユーザー定義型だったりで
可読性最悪なクソコードなんだよ
定数で済むものをシートからの取得にしたり
シートからの取得方法が関数の多重呼び出しだったり
呼び出し先の関数ではシート名直打ちだったり
関数が配列みたいな名前だったり
呼び出しの引数がユーザー定義型だったりで
可読性最悪なクソコードなんだよ
357デフォルトの名無しさん
2023/03/24(金) 12:19:18.16ID:anQmlZ/+ 定数(変数)をまとめたシートはよく作るな
358348
2023/03/24(金) 12:31:11.37ID:FUl1ABhx >>357
今後マクロを読む引き継ぎ先に向けてのシートだろ?
マクロ内での定数宣言で問題ないのに
わざわざシートから参照する方式で難解にする意味が分からん
百歩譲ってそこを許すとしても
一覧表シートの指定はLSheet関数じゃなくて
SPath、SName内でWorksheets(シート名定数)だろ
今後マクロを読む引き継ぎ先に向けてのシートだろ?
マクロ内での定数宣言で問題ないのに
わざわざシートから参照する方式で難解にする意味が分からん
百歩譲ってそこを許すとしても
一覧表シートの指定はLSheet関数じゃなくて
SPath、SName内でWorksheets(シート名定数)だろ
359デフォルトの名無しさん
2023/03/24(金) 12:35:33.80ID:DAz6UNB2 変数を日本語(漢字)で宣言してるわ…
いけないのはわかってるけどメンテナンスする時に楽だから…
Dim 列 As Range
Dim 行 As Range
いけないのはわかってるけどメンテナンスする時に楽だから…
Dim 列 As Range
Dim 行 As Range
360デフォルトの名無しさん
2023/03/24(金) 12:37:59.55ID:mGsBzzaU361デフォルトの名無しさん
2023/03/24(金) 12:41:59.41ID:FUl1ABhx362デフォルトの名無しさん
2023/03/24(金) 13:15:09.00ID:anQmlZ/+363デフォルトの名無しさん
2023/03/24(金) 13:36:50.23ID:mGsBzzaU なるほど
したっけ変数名は「行取得セル」とかにした方がいいだろな
したっけ変数名は「行取得セル」とかにした方がいいだろな
364348
2023/03/24(金) 14:11:44.49ID:FUl1ABhx >>362
結局なんでマクロ上に定数で書くんじゃなくシートから持ってきてるんだよ
結局なんでマクロ上に定数で書くんじゃなくシートから持ってきてるんだよ
365デフォルトの名無しさん
2023/03/24(金) 15:27:24.94ID:NHu64AvA >>363
北海道民か
北海道民か
366デフォルトの名無しさん
2023/03/24(金) 15:59:07.20ID:anQmlZ/+367デフォルトの名無しさん
2023/03/24(金) 16:49:43.95ID:mGsBzzaU368デフォルトの名無しさん
2023/03/24(金) 17:41:36.37ID:5t6vPIej369デフォルトの名無しさん
2023/03/27(月) 19:44:14.62ID:Lfv4NoBM そうですねと答えられたら「そうですか?」と聞き返すしかない
370デフォルトの名無しさん
2023/03/27(月) 21:10:49.67ID:vvevgmMM 問題は名前(文字列)でシートを識別する方式にある
プロパティのところでクラス名やモジュール名みたいにワークシートのオブジェクト名を自由に編集できる
これはシートに付与した名前とは別物で、シート名がどう変わろうと常にそのシートを示す
with worksheet("hoge")
ではなく、オブジェクト名で
with HogeSheet
のように記述できるようになる
名前がHageに変えられたり毛髪に問題が起きても常にHogeSheetにアクセスできる
プロパティのところでクラス名やモジュール名みたいにワークシートのオブジェクト名を自由に編集できる
これはシートに付与した名前とは別物で、シート名がどう変わろうと常にそのシートを示す
with worksheet("hoge")
ではなく、オブジェクト名で
with HogeSheet
のように記述できるようになる
名前がHageに変えられたり毛髪に問題が起きても常にHogeSheetにアクセスできる
371デフォルトの名無しさん
2023/03/27(月) 21:14:34.52ID:HMtLcTY+ あなたの日本語難しいネ!
372デフォルトの名無しさん
2023/03/27(月) 22:12:35.66ID:DLXELyrv 左にあるのから123って指定できたやろ名前関係なく
373デフォルトの名無しさん
2023/04/06(木) 23:56:50.44ID:hYGJaIME マクロで記録して
再生すると 何だよ
エラーになるのは 図形に多い
再生すると 何だよ
エラーになるのは 図形に多い
374デフォルトの名無しさん
2023/04/07(金) 07:12:32.36ID:msaEGqkC 記録したコード見て直せ
375デフォルトの名無しさん
2023/04/07(金) 10:04:57.40ID:d1VNe0g3 マクロだけのファイルでもデバッグ効くんだっけ?
デバッグはスルーするけど実行時にエラー起こすんなら原因は別か
「何だよ」書かれても状況書かないなら単なる愚痴ボヤキ
デバッグはスルーするけど実行時にエラー起こすんなら原因は別か
「何だよ」書かれても状況書かないなら単なる愚痴ボヤキ
376デフォルトの名無しさん
2023/04/08(土) 11:49:01.95ID:30ktKZ0z VBAで別のブックを開いて(或いは別のブックから)何か操作をしてそのブックを閉じるという操作をする時に
必ずdimやsetでオブジェクトやパスを格納しなければならないという事はないでしょうか?
必ずdimやsetでオブジェクトやパスを格納しなければならないという事はないでしょうか?
377デフォルトの名無しさん
2023/04/08(土) 12:47:34.04ID:tXbSb+Zf ボタンが貼ってあるセルを選択・値をクリップボードへコピーするコードはどう書けばいいでしょうか?
Bingチャットさんの作ってくれたコードはどれもうまく動きませんでした
Bingチャットさんの作ってくれたコードはどれもうまく動きませんでした
378デフォルトの名無しさん
2023/04/08(土) 13:09:03.48ID:4CyiPc7l >>377
bingチャットさんのコードはどんなの?
bingチャットさんのコードはどんなの?
379デフォルトの名無しさん
2023/04/08(土) 13:12:30.10ID:d7u9VIcm >>376
無いよ
無いよ
380デフォルトの名無しさん
2023/04/08(土) 13:29:49.15ID:Z+egWEAe ボタンが貼ってあるセル ←そんなものは無い
両者は別物だし、セルを覆い隠すようにボタンが貼られてたとして、そのセルに何の値があるというのか
矢印キーで移動してそのセルを選択した時に、数式バーに数式とかが表示されるならその値だし
名前ボックスにセル位置以外のものが表示されたら、その名前を調べればいいし
マクロの記録で、そのセルをコピー だけでコード書かれるけど
Sub Macro1()
Range("A1").Select
Selection.Copy
End Sub こんなもの書いてどうしたいんだか Winキー + V でクリップボードの中身も見れるけどどうしたいんだか
両者は別物だし、セルを覆い隠すようにボタンが貼られてたとして、そのセルに何の値があるというのか
矢印キーで移動してそのセルを選択した時に、数式バーに数式とかが表示されるならその値だし
名前ボックスにセル位置以外のものが表示されたら、その名前を調べればいいし
マクロの記録で、そのセルをコピー だけでコード書かれるけど
Sub Macro1()
Range("A1").Select
Selection.Copy
End Sub こんなもの書いてどうしたいんだか Winキー + V でクリップボードの中身も見れるけどどうしたいんだか
381デフォルトの名無しさん
2023/04/08(土) 14:35:09.85ID:tXbSb+Zf382デフォルトの名無しさん
2023/04/08(土) 15:57:08.07ID:cbbXW0a7 ちょっとやってみるか
383デフォルトの名無しさん
2023/04/08(土) 16:04:33.64ID:cbbXW0a7 と思ったけど
>エクセルのシートから他アプリへたくさん値コピーしなければならないような時
>Ctrl+cよりワンクリックでやりたいから汎用のボタンができないかと思ってたんですが
これエクセルvbaじゃなくキーボードマクロですわ
どうしてもやりたいならボタンじゃなくてセルの変更やダブルクリックでコピーでいいだろう
Private Sub Worksheet_BeforeClick(ByVal Target As Range, Cancel As Boolean)
With Target
Cells(Target.Row, Target.Column).Copy
Cancel = True
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
Cells(Target.Row, Target.Column).Copy
Cancel = True
End With
End Sub
>エクセルのシートから他アプリへたくさん値コピーしなければならないような時
>Ctrl+cよりワンクリックでやりたいから汎用のボタンができないかと思ってたんですが
これエクセルvbaじゃなくキーボードマクロですわ
どうしてもやりたいならボタンじゃなくてセルの変更やダブルクリックでコピーでいいだろう
Private Sub Worksheet_BeforeClick(ByVal Target As Range, Cancel As Boolean)
With Target
Cells(Target.Row, Target.Column).Copy
Cancel = True
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
Cells(Target.Row, Target.Column).Copy
Cancel = True
End With
End Sub
384デフォルトの名無しさん
2023/04/08(土) 16:05:06.51ID:TknoW+3y 教えて下さい
m1 MacBook Air でvbaやってるんですが
dim wdapp as word.application
set wdapp = new word.application ←
矢印の部分でオートメーションエラーが出るんですが
原因として何が考えられるでしょうか?
wordの参照設定はしてあります
m1 MacBook Air でvbaやってるんですが
dim wdapp as word.application
set wdapp = new word.application ←
矢印の部分でオートメーションエラーが出るんですが
原因として何が考えられるでしょうか?
wordの参照設定はしてあります
385デフォルトの名無しさん
2023/04/08(土) 16:12:27.46ID:jBwRbDE6 >>384
新規プロジェクトでその2行だけのコードを動かしたらどうなる?
新規プロジェクトでその2行だけのコードを動かしたらどうなる?
386デフォルトの名無しさん
2023/04/08(土) 16:27:58.20ID:Z+egWEAe Set wdApp = CreateObject("Word.Application")
or
Set wdApp = GetObject(,"Word.Application")
do not work either.
or
Set wdApp = GetObject(,"Word.Application")
do not work either.
387デフォルトの名無しさん
2023/04/08(土) 16:33:45.44ID:TknoW+3y >>385
wordアプリケーションが開いた後
同じくオートメーションエラーが出ました
エラーコードでググったらodbc32ビットと64ビット
がうんちゃらかんちゃらと出てきてit弱者の自分には
よくわかりませんがもう少し調べてみます
エラーコードは-2147467259(80004005)です
wordアプリケーションが開いた後
同じくオートメーションエラーが出ました
エラーコードでググったらodbc32ビットと64ビット
がうんちゃらかんちゃらと出てきてit弱者の自分には
よくわかりませんがもう少し調べてみます
エラーコードは-2147467259(80004005)です
388デフォルトの名無しさん
2023/04/08(土) 16:41:33.24ID:tXbSb+Zf389デフォルトの名無しさん
2023/04/08(土) 18:02:10.35ID:LJ0l06mu390デフォルトの名無しさん
2023/04/08(土) 20:05:01.26ID:Mr5vl6VY >>384
Windowsだとエラーは出ないんで俺にはわからん
Windowsだとエラーは出ないんで俺にはわからん
391デフォルトの名無しさん
2023/04/08(土) 21:34:53.96ID:ymsLMaB3 0x80004005エラーは要因が沢山あって詳細を書いてくれないと絞れないんだよ
システムにWordプロセスが残っている場合
異なるアーキテクチャを呼び出している場合
32bitのodbcと連携してて64bit環境で実行してる場合等
Officeのバージョンとか判ってる情報を全部載せてくれ
システムにWordプロセスが残っている場合
異なるアーキテクチャを呼び出している場合
32bitのodbcと連携してて64bit環境で実行してる場合等
Officeのバージョンとか判ってる情報を全部載せてくれ
392デフォルトの名無しさん
2023/04/08(土) 22:32:42.99ID:UJsM3HNZ >>391
馬鹿はコメントするな
馬鹿はコメントするな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★2 [Hitzeschleier★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず [七波羅探題★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は [蚤の市★]
- パワフル女性世界3位に高市首相 米誌フォーブス選出 [蚤の市★]
- 【米国】「トランプ・ゴールドカード」の受付開始 1億5600万円でアメリカの永住権を獲得 ウェブサイトで申し込み [ぐれ★]
- 【東京】テレ朝本社から社外スタッフの男性が転落し死亡 テレビ朝日がコメント 通行人の男性巻き込まれ軽傷 六本木 [ぐれ★]
