Excel VBA 質問スレ Part79

■ このスレッドは過去ログ倉庫に格納されています
2023/01/28(土) 11:46:47.21ID:mBQ16TA8
↑同じ内容を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
2023/03/14(火) 19:37:13.34ID:28TiEHhw
>>290
仕事で、料理の数の合計を出しています。料理の数の入力が
ないセルは「空白」ですから、選択オプションで「空白セル」を
チェックし、「空白のセル(列)」をすべて非表示にできました。

最後は、自動で「SUM関数」かつ「(合計が)0の表示」のセルを
選択し、セル(列)を非表示にしたいのです。手動でやれよって話
かもしれませんが、マクロで自動化ってできるものなのでしょうか。
2023/03/14(火) 20:05:55.83ID:28TiEHhw
>>292

>>フィルタで0を指定してからsumで検索すれば行けそう
確認しました。列にならできると思います。しかし、
行方向のセルにフィルタをかける事はできませんでした。

行の一定の範囲のセルを選択したいです。行にフィルタを
かける事はできませんでした。行と列を入れ替えて、列に
フィルタをかけ、最後に行と列を入れ替えたらよいですか。
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なら
その列も非表示になる。

後はどのセルに関数が入っているかわからんから
そこらへんは調整してくれ。
2023/03/14(火) 20:42:07.34ID:goR8feNU
セルを非表示 という書き方が戸惑う元だけど
>>290 の二行目に書いた Sheet上の0の値を[0]表示させない方法ではダメなのか?
SUMの結果が0のケースでも、0とは表示されず空白になるんだが?

セルの書式設定で ;;; にすることでセルの非表示ということらしいが、結果は変わるのか?
手元のExcelで試しているけど、どういう結果が欲しいのか分からんから戸惑ってる
わざわざ空白セルも非表示にする必要がさっぱりわからん 背景色とかが絡んで来る? 印刷時?
2023/03/14(火) 20:51:19.35ID:28TiEHhw
>>295

これが具体的なVBAコードですね!ありがとうございます。
説明不足でややこしくてすみません。
とりあえず、本やネットを見ながらコードを参考にし、実践
してみようと思います。皆様ありがとうございました。
2023/03/14(火) 21:06:36.93ID:28TiEHhw
>>296
おっしゃる通りで、表示させない方法で空白になりました。;;を使っても0が表示されず、
空白になります。この状態で、行の一定の範囲を選択して、選択オプションで「空白セル」
にチェックを入れます。しかし、「SUM関数かつ空白」が選択されず、列を非表示に
できません。SUM関数があると空白と認識されないようです。

>>わざわざ空白セルも非表示にする必要がさっぱりわからん 印刷時?
おっしゃる通りです。空白のセル(列)を非表示にし、印刷しないためです。
299デフォルトの名無しさん
垢版 |
2023/03/14(火) 23:37:15.42ID:WthbhZLX
聞く方も答える方も馬鹿で頭が痛くなる
このスレを立てた奴の頭のレベルの程度のせいか?
2023/03/15(水) 00:01:55.44ID:Ogi5eYUO
>>299みたいなのが賢いムーブなんですね、参考になります
2023/03/15(水) 07:40:00.44ID:dWb1Fnpz
送られてきたEXCELファイルの特定のセルにある文字列や数値を別のブックにある表シート(特定のセル)に反映させてデータを自動集計したい。
この場合どのようなコードが必要ですか?
2023/03/15(水) 10:52:57.27ID:bng7Ef1J
>>299
なぜ馬鹿の質問に馬鹿が答えてるのを見るとお前の頭が痛くなるのか因果関係を説明せよ

>>301
全然わからないならあきらめるか、初心者向けの本でも読んでもう少し自力でできるようになってからだな
303デフォルトの名無しさん
垢版 |
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
2023/03/15(水) 13:19:10.47ID:jS5g/06S
chatGPTの亜流がどんどんでてきたな
https://ronpagpt.jp/
2023/03/15(水) 14:24:15.02ID:/7ImdP24
>>303 AIはすごいね AIはさすがだよ AIにその回答を導き出させた>>303はもっとすごい
306デフォルトの名無しさん
垢版 |
2023/03/15(水) 17:36:50.88ID:d5qN4lxo
>>305
要件を満たしていないだろ
お前、このスレを立てた零細企業のバカだろ
2023/03/15(水) 18:04:03.00ID:/7ImdP24
いや、AIはすごいんだって だってたちどころに回答するんだぜ?
どんな難問投げ掛けられたって、おちゃのこさいさいで即座にだよ?すごいじゃないか
やっぱAIには敵わないね でもそのAIを容易に使いこなせる>>303は、ほんとすごいんだよ
こかれらもこまったことがおきたらぜんぶ>>303にそうだんすればいいよ ぜんぶアッ!といまうだよ
>>303そこがかみだよだってAIあつやれるんだのもきとっすいごおきゅりうょうもっらてんるだろ
308デフォルトの名無しさん
垢版 |
2023/03/15(水) 18:41:01.53ID:X44VfF2/
やっぱり零細企業の馬鹿本人かよ
2023/03/15(水) 19:56:07.69ID:cZ1DNOu4
>>296様 皆様
やっと「SUM関数かつ0が表示」を選択する事が
できました!!!これでムダな列を自動的に非表示にできます。
@一定の範囲のセルを選択 A検索で「0」の値を検索
B検索結果をクリック Cctrl+Aですべてを選択 

大変お騒がせ致しました。本当にありがとうございました。
2023/03/15(水) 20:16:56.49ID:/7ImdP24
やりたいことが分かってから意見書くのも、なんか憚られるが
それ、横方向に並べ替えすれば合計欄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
馬鹿が考える方法は馬鹿な頭から出てくる馬鹿な方法だからまともに相手にするのが間違い
馬鹿が質問すると荒れるから迷惑
2023/03/15(水) 21:59:25.48ID:jS5g/06S
>>307
そのAIから
https://i.imgur.com/XaCp34O.png
2023/03/15(水) 23:05:20.69ID:xu8ICwau
ジジババって最新の技術をすぐ小馬鹿にするよね?
314デフォルトの名無しさん
垢版 |
2023/03/15(水) 23:58:49.40ID:cjZorZVQ
最近の馬鹿って自分が馬鹿なことに気づかないの?
2023/03/16(木) 00:27:14.17ID:434mvrOL
>>312
ワロス
2023/03/16(木) 02:07:32.51ID:B5SNFDHd
さっきから何あぼーんの嵐(笑)
317デフォルトの名無しさん
垢版 |
2023/03/16(木) 10:36:22.46ID:N2/NSeFa
馬鹿はエントロピーが大きい状態
エントロピー増大の法則
2023/03/16(木) 11:33:40.43ID:w6mQ50Ij
コードの保存はどうしている?
ChatGPTで色々と変更しながら書いてもらっているけど、過去のも残しておきたいが
ぐちゃぐちゃになっている。
2023/03/16(木) 11:38:54.15ID:6Wkwlpg5
そこにメモ帳があるだろ
2023/03/16(木) 13:04:45.51ID:s5XEFQZu
>>318
毎回最初から最後まで書いてもらえばいい
もう保存とかアホらしくなってきた
321デフォルトの名無しさん
垢版 |
2023/03/16(木) 15:49:40.74ID:hTqOV0Oo
間違えた回答をありがたく保存するのかよ
2023/03/16(木) 17:03:31.67ID:pLTmwSf1
VBA で1を1stに変換する関数ないの?
2023/03/16(木) 17:49:19.70ID:dPl9ROvM
Excel VBAにはない
Access VBAなら専用の関数がある
2023/03/16(木) 18:00:58.62ID:Loiq54un
>>322
VBAでよければ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11156601881
ちえぶくろだけど 7年前
325デフォルトの名無しさん
垢版 |
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関数で使う手も。
2023/03/18(土) 21:04:59.58ID:Rz29PTI+
>>322
どこまでの値をカバーするか、どういうデータか、によっては、既に書かれているとおりワークシート関数でも事足りるよ
なお本当に1を1stにするだけだったらワークシート関数のSUBSTITUTE使えばいい
2023/03/18(土) 21:17:55.87ID:Za4MxO2H
1 → 1st
11 → 1st1st
101 → 1st01st
2023/03/18(土) 21:57:25.24ID:AwqZu1PH
スクショを貼り付けしてトリミングするまでのマクロ使ってるんですが
トリミングした不要な部分を削除
を追加する事ってできますか?
2023/03/18(土) 22:53:09.64ID:X3/sx5T9
マクロでやる必要ある?
2023/03/19(日) 10:30:21.74ID:fsx9oQpt
>>329
毎回、図のトリミング部分を削除するのが手間でマクロでやってしまいたい
2023/03/19(日) 11:14:17.24ID:T5Hyor/5
[Win]+[Shift]+[S]キー とかでスクショ撮る前に切り取れば?
 >トリミングした不要な部分を削除を追加する というのがよく分からんが
うっかりトリミングしたけど元に戻したいとか?

https://itojisan.xyz/settings/25094/ キャプチャの再考も必要かも
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
2023/03/19(日) 18:29:45.55ID:M92RK9ru
あなたの言うトリミングとは何なのか
トリミング=不要な部分の削除ではないのか
というところから、どうぞ
2023/03/19(日) 19:21:57.35ID:+3/waKCo
>>333
図の圧縮のトリミングをvbaでやりたいけどコードが分からないんだろう
2023/03/19(日) 21:50:22.00ID:fsx9oQpt
いやだから図のトリミング部分を削除したいと言うてるわけです
2023/03/19(日) 22:16:16.30ID:N8t0mUor
いやだからわざわざマクロでやる必要ないでしょ?
コード書いてるより手動でやった方が早いのでは?
2023/03/19(日) 22:33:34.30ID:fsx9oQpt
頻度が多いのよ
図の形式からいちいち削除する手間を無くして
貼ったと同時に不要なトリム部分を削除したい
ネットで見てもなかなか載ってない
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
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
2023/03/20(月) 08:19:41.94ID:K5H+7bLz
>>338
ありがとう、会社PCだからソフトやアプリを簡単に申請して入れられないんだ

>>339
まじすげぇです、
完全に求めていた事が出来た
本当に心から感謝
マジでありがとう
2023/03/20(月) 08:22:41.79ID:K5H+7bLz
いや、マジ凄い
素人ながら結構ネットで検索してたのに
実現は無理なんかなと諦めてた
本当に本当にありがとう
すげえ
2023/03/21(火) 01:10:26.57ID:2GJP0s5v
惚れちゃうよね
2023/03/21(火) 07:03:36.10ID:bl4/liXV
濡れる
2023/03/21(火) 10:12:48.44ID:PCjca3J8
人間chatgpt認定
2023/03/21(火) 23:13:02.09ID:QiPSaXn9
ワイはエクセルのイルカ
何でも質問してええよ
2023/03/21(火) 23:23:48.95ID:kDcUmgO1
お前を消す方法
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
↑?????????
2023/03/24(金) 08:59:41.03ID:y9S7Bvf0
set wsh = Thisworkbook.WorkSheets(FDigit)
でええがな
350デフォルトの名無しさん
垢版 |
2023/03/24(金) 10:27:19.17ID:mGsBzzaU
いや待て
ひょっとすると
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でなんでこんな記述してるのかも定数や配列にしてないのかも分からん
2023/03/24(金) 11:25:35.61ID:1rbGFcof
変数名にwshは感心しない
斜め読みだと外部スクリプトでも呼んでるのかと勘違いする
2023/03/24(金) 11:57:47.57ID:y9S7Bvf0
>>352
それはかなり思う。いつも少しひっかかる
2023/03/24(金) 12:03:58.85ID:MDleo4Zx
古き良きハンガリアン風に
WB_[ブックの役割名]
WS_[シートの役割名]
とかかな。
2023/03/24(金) 12:10:10.68ID:anQmlZ/+
俺はxla, xlb, xls
356348
垢版 |
2023/03/24(金) 12:14:05.32ID:FUl1ABhx
さすがにシートの変数名は変えてあるわ
定数で済むものをシートからの取得にしたり
シートからの取得方法が関数の多重呼び出しだったり
呼び出し先の関数ではシート名直打ちだったり
関数が配列みたいな名前だったり
呼び出しの引数がユーザー定義型だったりで
可読性最悪なクソコードなんだよ
2023/03/24(金) 12:19:18.16ID:anQmlZ/+
定数(変数)をまとめたシートはよく作るな
358348
垢版 |
2023/03/24(金) 12:31:11.37ID:FUl1ABhx
>>357
今後マクロを読む引き継ぎ先に向けてのシートだろ?
マクロ内での定数宣言で問題ないのに
わざわざシートから参照する方式で難解にする意味が分からん

百歩譲ってそこを許すとしても
一覧表シートの指定はLSheet関数じゃなくて
SPath、SName内でWorksheets(シート名定数)だろ
2023/03/24(金) 12:35:33.80ID:DAz6UNB2
変数を日本語(漢字)で宣言してるわ…
いけないのはわかってるけどメンテナンスする時に楽だから…
Dim 列 As Range
Dim 行 As Range
360デフォルトの名無しさん
垢版 |
2023/03/24(金) 12:37:59.55ID:mGsBzzaU
>>359
ちょっと待て
列や行をの型がRange?
どういう状況なんだ?
361デフォルトの名無しさん
垢版 |
2023/03/24(金) 12:41:59.41ID:FUl1ABhx
>>360
表かなんかの取得で列や行の一部しか入れないんでねーの
行 = Range(A1:C1)みたいな
2023/03/24(金) 13:15:09.00ID:anQmlZ/+
>>358
値の取得は Range("設定!名前")
ファイル名やら出力先シート名とかね
ダイアログの代わりみたいなもんか
363デフォルトの名無しさん
垢版 |
2023/03/24(金) 13:36:50.23ID:mGsBzzaU
なるほど
したっけ変数名は「行取得セル」とかにした方がいいだろな
364348
垢版 |
2023/03/24(金) 14:11:44.49ID:FUl1ABhx
>>362
結局なんでマクロ上に定数で書くんじゃなくシートから持ってきてるんだよ
2023/03/24(金) 15:27:24.94ID:NHu64AvA
>>363
北海道民か
2023/03/24(金) 15:59:07.20ID:anQmlZ/+
>>364
設定ダイアログの代わりにワークシートを使っています。

これでいい?
367デフォルトの名無しさん
垢版 |
2023/03/24(金) 16:49:43.95ID:mGsBzzaU
>>366
なら、セルひとつで済むんじゃないの?
対象セルに入力規制掛けてリスト化してしまえば。
2023/03/24(金) 17:41:36.37ID:5t6vPIej
>>367
そうだね
ほとんどは1つのセルにそれぞれ名前を付けてるね

まあオレがそうしてるだけでゴリ押ししてるわけじゃないからな
無駄だ!と言われればそうですねとしか答えられない
2023/03/27(月) 19:44:14.62ID:Lfv4NoBM
そうですねと答えられたら「そうですか?」と聞き返すしかない
2023/03/27(月) 21:10:49.67ID:vvevgmMM
問題は名前(文字列)でシートを識別する方式にある
プロパティのところでクラス名やモジュール名みたいにワークシートのオブジェクト名を自由に編集できる
これはシートに付与した名前とは別物で、シート名がどう変わろうと常にそのシートを示す
with worksheet("hoge")
ではなく、オブジェクト名で
with HogeSheet
のように記述できるようになる
名前がHageに変えられたり毛髪に問題が起きても常にHogeSheetにアクセスできる
2023/03/27(月) 21:14:34.52ID:HMtLcTY+
あなたの日本語難しいネ!
2023/03/27(月) 22:12:35.66ID:DLXELyrv
左にあるのから123って指定できたやろ名前関係なく
2023/04/06(木) 23:56:50.44ID:hYGJaIME
マクロで記録して
           再生すると           何だよ
                  エラーになるのは    図形に多い
2023/04/07(金) 07:12:32.36ID:msaEGqkC
記録したコード見て直せ
2023/04/07(金) 10:04:57.40ID:d1VNe0g3
マクロだけのファイルでもデバッグ効くんだっけ?
デバッグはスルーするけど実行時にエラー起こすんなら原因は別か
「何だよ」書かれても状況書かないなら単なる愚痴ボヤキ
376デフォルトの名無しさん
垢版 |
2023/04/08(土) 11:49:01.95ID:30ktKZ0z
VBAで別のブックを開いて(或いは別のブックから)何か操作をしてそのブックを閉じるという操作をする時に
必ずdimやsetでオブジェクトやパスを格納しなければならないという事はないでしょうか?
2023/04/08(土) 12:47:34.04ID:tXbSb+Zf
ボタンが貼ってあるセルを選択・値をクリップボードへコピーするコードはどう書けばいいでしょうか?
Bingチャットさんの作ってくれたコードはどれもうまく動きませんでした
2023/04/08(土) 13:09:03.48ID:4CyiPc7l
>>377
bingチャットさんのコードはどんなの?
2023/04/08(土) 13:12:30.10ID:d7u9VIcm
>>376
無いよ
2023/04/08(土) 13:29:49.15ID:Z+egWEAe
ボタンが貼ってあるセル ←そんなものは無い 
両者は別物だし、セルを覆い隠すようにボタンが貼られてたとして、そのセルに何の値があるというのか
矢印キーで移動してそのセルを選択した時に、数式バーに数式とかが表示されるならその値だし
名前ボックスにセル位置以外のものが表示されたら、その名前を調べればいいし

マクロの記録で、そのセルをコピー だけでコード書かれるけど
Sub Macro1()
Range("A1").Select
Selection.Copy
End Sub     こんなもの書いてどうしたいんだか Winキー + V でクリップボードの中身も見れるけどどうしたいんだか
2023/04/08(土) 14:35:09.85ID:tXbSb+Zf
Sub CopyButtonCell()
ActiveSheet.Buttons(Application.Caller).Select
  Selection.Copy
End Sub
>>377 みたいな感じです

>>380 エクセルのシートから他アプリへたくさん値コピーしなければならないような時
Ctrl+cよりワンクリックでやりたいから汎用のボタンができないかと思ってたんですが
構造的にムリならいいです
2023/04/08(土) 15:57:08.07ID:cbbXW0a7
ちょっとやってみるか
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
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の参照設定はしてあります
2023/04/08(土) 16:12:27.46ID:jBwRbDE6
>>384
新規プロジェクトでその2行だけのコードを動かしたらどうなる?
2023/04/08(土) 16:27:58.20ID:Z+egWEAe
Set wdApp = CreateObject("Word.Application")
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)です
2023/04/08(土) 16:41:33.24ID:tXbSb+Zf
>>383 なぜかcancel行はエラーが出るけど
カーソル移動で次々値がコピーされるようになりました
かなり思ってたのと近い事ができるようになったのでどうもありがとうございます
389デフォルトの名無しさん
垢版 |
2023/04/08(土) 18:02:10.35ID:LJ0l06mu
>>384
「教えて」「助けて」系の例の法則と思ったけど、
これは違うみたいね

インテル系Macでもダメだった
Wordは立ち上がるのだがオートメーションエラーで止まる
2023/04/08(土) 20:05:01.26ID:Mr5vl6VY
>>384
Windowsだとエラーは出ないんで俺にはわからん
2023/04/08(土) 21:34:53.96ID:ymsLMaB3
0x80004005エラーは要因が沢山あって詳細を書いてくれないと絞れないんだよ
システムにWordプロセスが残っている場合
異なるアーキテクチャを呼び出している場合
32bitのodbcと連携してて64bit環境で実行してる場合等
Officeのバージョンとか判ってる情報を全部載せてくれ
392デフォルトの名無しさん
垢版 |
2023/04/08(土) 22:32:42.99ID:UJsM3HNZ
>>391
馬鹿はコメントするな
■ このスレッドは過去ログ倉庫に格納されています