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


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

Excel VBA 質問スレ Part77



1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

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

次スレは>>980が立てること
無理なら細かく安価指定

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

756 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 22:50:53.72 ID:oHn8O8ll0.net]
Select みたいな文で複数の選択肢が条件満たした場合に複数の選択肢を実行する言語って PowerShell ぐらいしか知らんけど他にもあるんだろうか?

757 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:04:52.77 ID:FO5tGPcx0.net]
>>756
cとかそうだったはずだし、たぶん複数実行するほうが多数派なんじゃね
c#も、文法上は複数実行することになってるけど、break書いて抜けないと怒られるという
よくわからんことになってるし

758 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:17:37.16 ID:2no5G0l30.net]
CもそうだしJavaもそうだしPythonもそうだしJavaScriptもそう

759 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:34:30.49 ID:oHn8O8ll0.net]
>>757-758
C/C++ はそもそも複数選択肢が条件満たすことはないよ(たいていの処理系でコンパイルエラーになる)
fall through と勘違いしてるでしょ

760 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 23:56:30.92 ID:2no5G0l30.net]
>>759
ああそうだ。勘違いです
申し訳ない

761 名前:デフォルトの名無しさん [2022/10/01(土) 00:36:40.48 ID:fyOJn4KOa.net]
>>754
これってコンパイル時に畳み込みで定数化されて同一のラベルが複数あってエラーになるとかしないのか

762 名前:デフォルトの名無しさん [2022/10/01(土) 01:42:48.83 ID:a0drtoBbd.net]
>>761
馬鹿にはそう思えるのだろ

763 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 01:48:20.03 ID:AX86MJ2c0.net]
>>759
ああ、まさにfall throughだった

つかそうなると、fall throughじゃなくて
複数一致したら複数ブロック実行するような言語って知らないな
PowerShellってそうなのか?

764 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 01:53:07.95 ID:AX86MJ2c0.net]
>>761
VBAのCaseは定数以外にいろいろ書けるから



765 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 04:50:29.38 ID:igg+s+OR0.net]
>>763
複数一致
同じ条件を複数回追加すれば、それらすべてがトリガーされます。
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-switch?view=powershell-7.2

766 名前:デフォルトの名無しさん [2022/10/01(土) 07:29:29.38 ID:66c8QTBM0.net]
みんないろんな言語やってるのね

767 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 07:40:45.91 ID:BiebxrBw0.net]
他言語やってる人が暇潰しに見に来る場所って印象があるよね
質問も簡単だし答えるほうに余裕があるので他スレと比べると寛容というかギスギスしてない

768 名前:デフォルトの名無しさん [2022/10/01(土) 13:08:15.88 ID:sQwPc1U3d.net]
Excelでデータベースを作り、各レコード?事に
〜月〜日 〜
〜月〜日 〜
みたいなログを表示したいのですがどの様にすればできるのか教えていただけませんか?

769 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 13:10:34.86 ID:PSWCeSJW0.net]
キーボードで打ち込め

770 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 13:17:44.94 ID:GEkLNCKa0.net]
>>768
入門書買って自分で勉強したらどうかな
あ、EXCELが入っているPCを持ってないと無理かも

771 名前:デフォルトの名無しさん [2022/10/01(土) 13:31:32.89 ID:sQwPc1U3d.net]
テキストボックスにセルの値を参照するとか、繰り返しの処理とかlookup関数とかindexとmatch関数はわかります
あとはこのリストが欲しいです

772 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 13:34:23.97 ID:mp76wcbAa.net]
MSのサイトを見ればいいだけじゃね?

773 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 14:11:06.32 ID:m6/aGG23M.net]
>>771
漠然としすぎていて適切に回答できない
書式設定のこと?ファイル出力?
どこにそれを表示したいの?

774 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 14:50:47.98 ID:ozHkf13K0.net]
もう自分で勉強してくれって。



775 名前:デフォルトの名無しさん [2022/10/01(土) 15:38:51.00 ID:66c8QTBM0.net]
>>768
そもそもそのログの日付とやらはどこから持ってくるつもりなのか

776 名前:デフォルトの名無しさん [2022/10/01(土) 15:39:00.83 ID:05rfSfda0.net]
>>773
すみません
VBAのユーザーフォームで検索用のテキストボックスを作り、
検索結果に該当したレコード(行)を選択(抽出)?して
それをテキストボックス2やリストボックスに表示したいです

〜番(ID)

名前
テキストボックス(リストボックス)
〜月〜日 何をした

みたいな表示画面が作りたいです

777 名前:デフォルトの名無しさん [2022/10/01(土) 15:40:48.76 ID:05rfSfda0.net]
>>775
〜番号 名前 〜 〜 〜
の様な感じで列に追加していくやり方で作ろうかなと考えています

778 名前:デフォルトの名無しさん [2022/10/01(土) 16:48:39.94 ID:vnBH5ihbM.net]
>>776
まずワークシート上でlookup,index,matchで検索、表示できるものを作る。
それからフォームのテキストボックスに入れた値をワークシートの検索用のセルに書き込み、結果をフォーム上のテキストボックス、リストボックスに書き込むVBAを作る。

779 名前:デフォルトの名無しさん [2022/10/01(土) 16:50:40.38 ID:05rfSfda0.net]
>>778
ありがとうございます
まずはそこからですよね

780 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 16:52:55.19 ID:GEkLNCKa0.net]
どこでつまずいているかを書かないで答えだけほしいとか言われてもね

781 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 16:55:41.93 ID:HuJ3UkiEd.net]
>>768
こんなんVBAでもなんでもなくシステムを作りたいっていってるようなもんでしょ
金払って作ってもらえよ

782 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 17:09:04.65 ID:AX86MJ2c0.net]
>>768
なぜそれをエクセルでやりたいと思ったのか

今のレベルだと一から勉強レベルだと思えるが
c#かせめてVB.Net覚えたほうがいいんじゃない

783 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:15:10.78 ID:BiebxrBw0.net]
セルの内容(日付のところは文字列型(頭にアポストロフィ)で入れてる)
ID 名前 日付 イベント
1 名前1 2012年3月14日 Aをした
2 名前2 2012年3月15日 Bをした
3 名前3 2012年3月16日 Cをした
4 名前4 2012年3月17日 Dをした
5 名前5 2012年3月18日 Eをした
6 名前6 2012年3月19日 Fをした

※Sheet1のマクロ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With UserForm1
y = ActiveCell.Row
.TextBox1 = Cells(y, 1)
.TextBox2 = Cells(y, 2)
.TextBox3 = Cells(y, 3) + vbNewLine + Cells(y, 4)
End With
End Sub

フォーム(UserForm1)を作って下記コントロールを配置
TextBox,TextBox1,TextBox2,TextBox3(Multiline=true),CommandButton1

UserForm1のマクロ
Private Sub CommandButton1_Click()
Sheets(1).Range("A1").AutoFilter 2, "*" & UserForm1.TextBox.Text & "*"
End Sub

ファイル開くイベントとかボタン作って下記マクロでフォームを表示
UserForm1.Show vbModeless
聞いた限りではこんなのしか思い浮かばない

784 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:31:08.84 ID:oCrNNmAI0.net]
VBAのPicture.Insertでリンク貼付けさせないようにクリップボード利用でPasteで貼り付けてみたら画像が異常に重くなりすぎて使い物にならない…。
おとなしくShapes.addPicture使うしかない?



785 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:49:59.64 ID:PeKIyBQF0.net]
>>768
Listobject作ってListrowsを都度登録する仕組みを作って目的のListrows()を呼び出すユーザーフォームを作ればいいんじゃないっすかね。

786 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 18:55:31.78 ID:HuJ3UkiEd.net]
まず質問者は何ができて何ができないのか気になるが何もできないんだろうなと推測してる
なのでここで丸投げしてバカなお人よしに作ってもらおうとしてるんだろ

787 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 23:20:55.43 ID:BiebxrBw0.net]
猪木が死んだ、時代が流れていく
思えばPCとの付き合いももう40年か
戦時中はと口癖のように言っていたジジイ共も消えてアマチュア無線なみにニッチな趣味だったPCが主流になるとは不思議なものだ

788 名前:デフォルトの名無しさん mailto:sage [2022/10/02(日) 07:27:45.20 ID:ySn/5a2I0.net]
>>784
もとの画像が大きいんじゃね、表示用の画像を別途つくってから貼り付けてみ

789 名前:デフォルトの名無しさん [2022/10/02(日) 13:27:44.47 ID:TlawqFoR0.net]
>>783
わざわざありがとうございます
助かりました

790 名前:デフォルトの名無しさん [2022/10/02(日) 15:47:28.98 ID:DdgukWIZ0.net]
>>787
おいおいいつだよって思ったら昨日かよ

>>786
それでいいと思うんだよな
それが社会の基本だし、暇な元事務のNEETはそれで快楽を得つつ勉強になり、
転職への自信になるだろう

791 名前:デフォルトの名無しさん [2022/10/02(日) 20:54:31.26 ID:TlawqFoR0.net]
VBAは作業を登録して自動化するくらいで覚えておいた方がいいですよね

792 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 06:16:19.93 ID:S2WAje4f0.net]
>>788
800kの画像でやってみたけど15Mぐらいまで巨大化してしまう
やはりAddPictureで代用してみる

793 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 07:27:24.16 ID:4wRZXMmm0.net]
VBEに書いたコードの整列っていうかコードを整えるっていうか自動インデントっていうかそんなショートカットキーがあったと思うけどなんだっけ?

794 名前:デフォルトの名無しさん (ワッチョイ 53ce-OAEy) mailto:sage [[ここ壊れてます] .net]
タブ



795 名前:デフォルトの名無しさん [2022/10/03(月) 20:58:11.99 ID:FDmFS1zQ0.net]
>>791
変な枷付けること考えんと
好きに作っていいんやで

796 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 15:00:55.06 ID:pLalriKq0.net]
イベントで質問

余所で作ったエクセルにVBAで改造加えてるんだけど
1マス入力だけするSheetにActiveXのコマンドボタン付けたら
Worksheet_SelectionChange
が発生しなくなった

コマンドボタン押したイベントは拾ってるので
EnableEventsがFalseってわけじゃない(イミディエイトで確認済み)

デザインモードを解除してもWorksheet_SelectionChangeイベントが起きないので
しょうが無いからまた一から作り直したんだが
この現象って頻発するもの?
ググってもOfficeの修復かEnableEventsしか解決策が出てこない

797 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 15:54:59.32 ID:TDYI1fTGd.net]
>>792
Sub Macro1()
ActiveSheet.Pictures.Insert "C:\Work\Sample1.jpg"
End Sub



これで400KBのpngで試してみたけど
なぜかxlsmファイルのサイズは15KB
何か別の要因とか

798 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 19:28:07.31 ID:uOFwOuxi0.net]
>>796
そりゃエクセルを改造したら駄目だろ

799 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 19:47:41.77 ID:o+JurUyd0.net]
>>792
オプションの詳細設定-イメージのサイズと画質 ってどうなってる?

800 名前:デフォルトの名無しさん [2022/10/04(火) 21:08:36.46 ID:vyetwO+c0.net]
Dim ar(2) As Variant
ar(0) = 1
ar(1) = 2
ar(2) = Split("1,2,3,4,5", ",")
Dim i
For i = 0 To UBound(ar(2))
ar(2)(i) = CLng(ar(2)(i))
Next i

splitで作ったジャグ配列の中身をlong型に変換したいです。
variant変数に一度入ったらもう無理ですか?
一応他の変数に入れる事で型変換には成功するのですが。
余計な変数を二つも用意してstringで作成されたのを一時的なvariant型ノーマル配列に
おさめてmそのあとで本当に使いたい配列のジャグ配列に入れていくというのが
どうも汚い感じで腑におちません。
アドバイスもらえると助かります。

801 名前:デフォルトの名無しさん [2022/10/04(火) 22:26:54.77 ID:cce3s7590.net]
>>800
出来ません
諦めてください

802 名前:800 [2022/10/04(火) 22:43:48.69 ID:vyetwO+c0.net]
>>801
ありがとうございます。
ジャグ配列はRedim出来ないのがデメリットですね。
動的な配列の中にジャグ配列なのですが、なんとか先に不確定な親配列の中にある
不確定な数のジャグ配列を一時的なLong型配列に作って
そこからさらにsplitなしでなんとか作ろうとあれこれしてたら
よっぽど>>800の方法の方が処理がわかりやすくなってしまい徒労に終わりました。

諦めます。踏ん切りつきました。

803 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 23:35:06.72 ID:o+JurUyd0.net]
>splitで作ったジャグ配列
>動的な配列の中にジャグ配列
ジャグ配列って用語の使い方が微妙に間違ってる気がするが...

そもそも文字列を分割して配列作ってるんだから文字列の配列になるのが当然で
Variant上等でやるなら、それを使う側がVariantで受ければいいだけでは?

まあ俺ならどうしても文字列をSplitしてLongにしたいなら
Longの配列返すSplitのラップ関数作るけど

804 名前:デフォルトの名無しさん [2022/10/05(水) 04:48:52.00 ID:b9GTOuH90.net]
sqliteで作ったジャグ配列。



805 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 07:10:06.74 ID:8YZU4Hq7a.net]
>>797
それでいくとうまくいくんだけどね、
通常のPictures.Insertだとリンク貼付けなのよ。他人に送付したら見れない。

だから一旦クリップボード経由でPaste使ってやってるんだがそれだと容量がヤバくなる。

806 名前:デフォルトの名無しさん [2022/10/05(水) 08:07:32.65 ID:hw4y4dFR0.net]
そもそも何でもかんでも配列で処理しようとするのがちょっとねぇ。
例えば列に当たる要素毎に違う型を使いたいなら
ちょっと仕組みは大きくなるけどADODBのRecordsetを使うことや
1行の列データ単位の値を格納するクラスを作ってそれを行単位としてディクショナリやコレクションに追加して行くことも検討することを視野に入れると
結局後で読みやすく汎用性の高いロジックが組めたりする。

処理速度優先なら配列一択だからそのときのシュチュエーションに合わせて使い分けだね。

807 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 08:19:21.40 ID:SsR8S72r0.net]
構造体ではできんの?
ジャグ使う機会無いからなんとも言えんが

808 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 10:50:57.71 ID:HrKgxVhUd.net]
すぐDBとか持ち出す奴いるけどコスト考えたらそう簡単にDBなんか使わんと思うけどね
普通に配列処理用の関数のみのモジュールでコード管理すればいいだけと思うわ

809 名前:デフォルトの名無しさん [2022/10/05(水) 13:20:52.03 ID:7KiNZ4t1d.net]
>>808
何のコスト?

810 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 14:41:00.50 ID:bxBPBLxH0.net]
やっぱ好きなように作るのが1番ね

811 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 15:47:13.70 ID:DsSYxIFi0.net]
ワークシートがDBみたいなもんだしね

812 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 15:53:15.41 ID:tZ9pwx2fM.net]
学習コスト

813 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 21:19:11.66 ID:/BrWnOTx0.net]
コストコ

814 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 23:35:05.88 ID:bxBPBLxH0.net]
コスパ良い



815 名前:デフォルトの名無しさん [2022/10/06(木) 16:49:22.22 ID:wENRazb+d.net]
例えば、誕生石を取得するGetBirthStone関数を作ろうとすれば引数は「日付 as Variant」と「月 as Integer(Long)」のどちらがいいでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:54:16.04 ID:lmEPcDvIM.net]
Dateではあかんのか?

817 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:55:37.45 ID:1FPDwTBGM.net]
そんなもんVLOOKUPで誕生石シートを検索すれば十分
VBAを正しく使うコツはVBAを可能な限り書かないことだよ

818 名前:デフォルトの名無しさん [2022/10/06(木) 17:19:15.50 ID:wENRazb+d.net]
>>816
Date型でも大丈夫ですか?

一応、最初の部分はこう書いてみました
If Not IsDate(日付) then
GetBirthStone = CVErr(xlErrValue)
Exit Function

819 名前:デフォルトの名無しさん [2022/10/06(木) 17:48:34.71 ID:KR9VbeXw0.net]
>>817
いや、むしろVBAだけの方がメンテしやすい
データとロジックは分ける方がいい

820 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 19:10:02.45 ID:YSVEcn1gd.net]
>>815
元のデータが何によるかで違うけど「月 as Integer(Long)」でいいのではと思う
仮に元のデータが日付でもGetBirthStone(Month(日付))で済む
月を渡すようなケースがありえないなら日付を渡して関数内でMonthを使うでもいい

821 名前:デフォルトの名無しさん (ワッチョイ 435f-pIDl) [[ここ壊れてます] .net]
月だけでいい
特定の日付に依らずある月の誕生石を知りたい場合に
意味のないDate値用意しなきゃいけなくなるから可読性が落ちる

>>817
誕生石みたいに改訂されたことがニュースになるくらい固定されてる内容ならコードにベタ打ちでいいと思う
祝日みたいに毎年変動するものとか、組合せの数が多すぎる要素ならシート管理の方が扱いやすいと思うけど

822 名前:デフォルトの名無しさん (ワッチョイ d3da-pIDl) mailto:sage [[ここ壊れてます] .net]
>>815
その程度のこと自分で決められんようでは時間かかってしょうがないだろ

823 名前:デフォルトの名無しさん (ワッチョイ 6f8c-SQdC) mailto:sage [[ここ壊れてます] .net]
>>815
Function getBirthStone(日付 As Date)
Application.Volatile True
getBirthStone = WorksheetFunction.Choose(Month(日付), "ガーネット", "アメシスト", "アクアマリン", "ダイヤモンド", "エメラルド", "ムーンストーン、真珠", "ルビー", "ペリドット", "サファイア", "オパール、トルマリン", "トパーズ", "トルコ石、タンザナイト")
End Function

こんなかんじ?

824 名前:デフォルトの名無しさん [2022/10/06(木) 22:32:10.00 ID:wENRazb+d.net]
>>823
ありがとうございます。



825 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 22:47:25.99 ID:HCQdlFdq0.net]
>>823
わざわざワークシート関数を呼ばなくてもVBAにもChoose関数あるよ
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/choose-function

826 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 23:06:53.10 ID:gOgPUvPm0.net]
ほんとだw てへ

827 名前:800 mailto:sage [2022/10/09(日) 17:09:18.30 ID:Kilq6kjS0.net]
>>803
ラップ関数作る解決方法最高です。
頭固かったです。
他にも導入できそうなところが見つかり助かりました。
感謝です。

828 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:48:05.32 ID:P58+Ol8v0.net]
>誕生石みたいに改訂されたことがニュースになるくらい固定されてる内容ならコードにベタ打ちでいいと思う
>>823を見ての通りこの手は表記ゆれが問題になる事が多いから
可能な限り外部データにした方がいい

829 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 13:53:54.44 ID:uAPvvwer0.net]
インプットボックスで入力される値が数字かどうか判断するコードってどう書けばいい?

830 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:15:03.61 ID:fEDU7G4fd.net]
・符号(+-)を許すか
・ドット(小数点)を許すか
・カンマ(桁区切り)
を踏まえて文字の妥当性チェックすればいいんじゃないの

831 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:17:40.55 ID:fEDU7G4fd.net]
あと自分はWorksheetFunction使うの好きじゃないけど
WorksheetFunction.IsNumber
でもいいかもね

832 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:26:37.29 ID:H84z/pNR0.net]
全角は?漢数字は?ローマ数字は?欧米式の桁区切りは?
入力検査は考え始めるとキリがない分野の一つだぜ

833 名前:デフォルトの名無しさん [2022/10/11(火) 15:13:10.17 ID:DoWcBI1l0.net]
>>829
IsNumericじゃダメなの?

834 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 17:02:04.45 ID:uAPvvwer0.net]
>>833
さんきゅーそれだ
てかVariant型が数値かどうか調べられるんだな~
書き方解ったらvartypeとかtypenameでも行けそうな気がする
ちょい試してみよ



835 名前:デフォルトの名無しさん [2022/10/11(火) 18:13:13.59 ID:DoWcBI1l0.net]
>>834
語弊があるといけないから言っておくと、
IsNumericはあくまで数値として扱える値(数値に変換出来る値)かどうかを判定するよ。
だからString型でも”123”みたいのはTrueを返すからそこは注意してね。

836 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 20:16:52.08 ID:hb9m45MO0.net]
考慮点はまだあるぞ
IsNumericって
"\3"とか"3e3"とか"&habc"とかもTrueだぜ

837 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:33:18.55 ID:FAaW2+wFd.net]
じゃ足し算する関数を別に作ってノーエラーで戻ってきたら数値

Sub Main()
 '全角数字も数字と見なす
 If Suujikana(StrConv(InputBox("入力せぇ"), vbNarrow)) Then
  MsgBox "数字だよ"
 Else
  MsgBox "数字じゃないよ"
 End If
End Sub


Function Suujikana(moji As Long) As Boolean
 On Error GoTo er
 moji = moji + moji
 Suujikana = True
 Exit Function
er:
 Suujikana = False
End Function

838 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:35:48.26 ID:FAaW2+wFd.net]
あ、これじゃだめかえらーでるあ

839 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:38:00.09 ID:FAaW2+wFd.net]
このやろ、variantにしたら+で文字列つくりやがって
こんのやろぉ

840 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:39:59.19 ID:FAaW2+wFd.net]
これでいい?らめ?

Sub Main()
 '全角数字も数字と見なす
 If Suujikana(StrConv(InputBox("入力せぇ"), vbNarrow)) Then
  MsgBox "数字だよ"
 Else
  MsgBox "数字じゃないよ"
 End If
End Sub


Function Suujikana(moji As Variant) As Boolean
 On Error GoTo er
 moji = moji * moji
 Suujikana = True
 Exit Function
er:
 Suujikana = False
End Function

841 名前:デフォルトの名無しさん [2022/10/12(水) 09:33:08.65 ID:JFXNmWRt0.net]
>>836
まぁその辺は数値として受け取れるとも言えるからね。
その辺除外したいなら最初に“¥”や“e”や“&h”が含まれていたら数値ではないって分岐入れとけばいいだけじゃないの?

842 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 09:45:17.75 ID:05zETGAlM.net]
>>840
自分も同じこと考えたけど型の制約が緩いと面倒くさそうなので思考を放棄した、よく頑張ったな

843 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 10:05:45.44 ID:05zETGAlM.net]
そういえば昔型はあるのとないのではどっちが良いのかって記事を見たことあるな
結局型がないと論理エラーが出ないように型をちゃんと理解する必要があるって書いてた

844 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 10:15:23.77 ID:FnwlmZOz0.net]
kgとkmは単純に足し算しても意味ないからな



845 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 04:03:11.23 ID:j3UF+2500.net]
別にVBA使わなくてもワークシート関数でできるじゃんって意見どう思う?

846 名前:デフォルトの名無しさん [2022/10/13(木) 04:08:37.62 ID:QthptHxba.net]
やりたいようにやれ

847 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 05:43:31.20 ID:l6HSpiwg0.net]
>>845
内容によるけどまあワークシート関数でできるならその方がいいだろうな

848 名前:デフォルトの名無しさん [2022/10/13(木) 06:51:28.60 ID:R3JkkIAh0.net]
A1に入力されているものが消えたらB1以降の入力セルデータが右から左に自動で繰り上がってくるようにしたいのですがこれで大丈夫ですか?

これをA20くらいまで適用したいんですけど教えて貰えませんか...?

Private Sub Worksheet_Change(ByVal
Target As Range)
If Target.Address = Range("A1").Address
And IsEmpty(Target) Then
Application.EnableEvents = False
lastrow = Cells (Rows.Count,
"A").End(xIUp).Row
Range("B1:F1"&lastrow).Copy
Range("A1").PasteSpecial xIPasteValues
Range ("A"&lastrow).ClearContents
Application.EnableEvents = True
End If
End Sub

849 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 11:53:03.67 ID:Ue05WQwm0.net]
キーボード操作でマクロ作って呼べばいいんじゃね

850 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 13:03:11.83 ID:8suwpN2kr.net]
"B1:F"&lastrow
下から4行目は何の処理かな
g列以降にデータがないなら、a列削除でもいけそう

851 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 13:57:54.49 ID:UFLyO0SD0.net]
xIUp >> xlUp >> xlLeft
xIPaste >> xlPaste

excel だから xl だよ
本から手入力したのかな

852 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 15:04:44.40 ID:xeSsgHCJ0.net]
文字列にしてTrimして
右から一文字づつAscでコード調べて数字判別してる

853 名前:デフォルトの名無しさん [2022/10/15(土) 01:10:39.87 ID:zmWNo0nm0.net]
そういや何気にVBAの中でCallByName使うとJavaScript 使えるらしいね。
使ったことないけど。

854 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 01:25:23.69 ID:eU4yePu40.net]
>>853
どういうこと? どうやるの?



855 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 07:21:27.16 ID:tw/asOzR0.net]
>>853
文字列で言語書いて実行するのってどうも好きじゃないな
そもそも有効な場面ってあるんだろうか
bougyuusonnin.seesaa.net/article/191171013.html

>>854
調べなよ・・・

856 名前:デフォルトの名無しさん [2022/10/15(土) 09:05:24.46 ID:zmWNo0nm0.net]
>>855
さあ?
メソッドチェーンが使えるくらい?
まぁ無理して使うもんでもないような。
現にJavascript知っててもVBAに混ぜて
使うような状況なんてなったことないし、
大体記述がめんどいし。






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

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

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