Excel VBA 質問スレ Part53

レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
垢版 |
2018/04/27(金) 19:02:38.39ID:+ocy8bIv
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part52
http://mevius.5ch.net/test/read.cgi/tech/1517052305/
2018/05/11(金) 04:46:34.78ID:Seo60ZfW
>>823
昔、カルテサーバから翌日の輸血オーダ情報を取得して、ちょっと複雑にレイアウトしたTEPRAフォーマットに流し込んで、ハーフカットで輸血ラベルをジャンジャン印刷するのを作った記憶が。
あんまりたいした内容じゃなかった気がするけど。
それこそExcel必要?って言われるかもだけど、現場受けはよかったような。
2018/05/11(金) 05:04:34.87ID:stSNQlqp
>>819
お前の会社のイントラは世界中の晒しものになっているのか
そりゃ危険だな
2018/05/11(金) 06:51:44.72ID:CplZ+xhH
>>824
SPC9-APIとか使ってたなら.csvファイル経由でデータを渡すからExcel使うのはある意味自然だと思う
2018/05/11(金) 06:52:25.93ID:CplZ+xhH
>>825
???
ますます意味不明になってるぞ w
2018/05/11(金) 07:49:28.76ID:gtt7+D13
>>824
ありがとう
そういうちょっとした手間の省略は大事よね
もう少し探って見るわ
2018/05/11(金) 08:33:12.57ID:OTx54W6B
PSキチガイもいなくなってひと段落といったところか
何か前他の板でもPSはキチガイ独占みたいなのを見たことがあった
それは多分PowerShellとは違うPSなんだろうけど
得てしてPSと言うのはそんなんばっかだってことだろうな
2018/05/11(金) 08:45:45.24ID:xisUVEWN
何一つ言い返せなかったけどそれじゃ悔しいから敵が去った後に負け惜しみを言う人w
2018/05/11(金) 08:45:45.76ID:RS6TTfPa
>>829
お前も消えろ
2018/05/11(金) 11:08:18.88ID:Pz/tQeeR
シート1のA44:I44のセルを、マクロでシート2の最後列に貼り付けていきたいです。
下記のマクロだと、シート1のA44のセルをシート2の最後列のAのセルにのみ、コピーするだけになってしまいます。
どう変更すればいいのか、よかったら教えて頂きたいです。
よろしくお願いします。

Sub テスト()
Dim LastRow As Long
With Worksheets("シート2")
LastRow = Worksheets("シート2").Range("A"&Rows.Count).End(xlUp).Row + 1
Range("A"&LastRow).Value=Worksheets("シート1").Range("A44:I44").Value
End With
End Sub
2018/05/11(金) 11:49:30.00ID:WIuYiP4/
VBA エキスパート スタンダードより難しい資格ってありますか?
2018/05/11(金) 12:16:30.12ID:hascnQXs
>>833
えんべでっどすぺしゃりすと
2018/05/11(金) 12:17:44.23ID:Pz/tQeeR
>>832
なんでも質問スレの方に書き込みました
すいません
2018/05/11(金) 12:41:09.45ID:HsLVJmEf
>>834
VBAのスレで聞いてるんだからVBAの資格ってことだってわかるだろw
2018/05/11(金) 13:06:15.00ID:udjF1/Ux
>>836
最近はpowershellの話題も取り扱うようになったからそっちの資格かもしれない
2018/05/11(金) 19:31:54.26ID:cdAz752k
入力ヴァリデーションのやり方を教えてください

表形式のデータで1行1エンティティです
入力長さ、最小最大値、正規表現パターンなど基本的なカラムごとに独立したヴァリデーション
開始日終了日の順序などのエンティティ内の複数カラムにまたがるヴァリデーション
REST APIでサーバーに問い合わせる非同期ヴァリデーション
集計値の最大値やリレーションの存在確認など表全体のヴァリデーション
を行いたいです

入力が止まるとUXが悪化するのでエラーメッセージはメッセージボックスで表示したくありません
一定時間で消えるかフォーカスすると消滅する吹き出しのようなコントロールが理想です

これらを可能な限り宣言的にかつGUIからのチマチマとした面倒な設定は無しで実装したいです
REST APIや表全体のヴァリデーションの実体はUIと独立したCOMコンポーネントが行うので後はUIと紐付けるだけです
2018/05/11(金) 20:13:41.96ID:HsLVJmEf
>>838
文章だけで聞くレベルじゃないと思う
2018/05/11(金) 20:33:45.50ID:VErxDUwc
>>839
C#erか、Rubierか、PSerからの宿題じゃないの?
2018/05/11(金) 21:41:23.33ID:4Lj210NT
ガチガチに入力規制するなら素直にAccess使おうよ…
2018/05/11(金) 21:43:15.64ID:OTx54W6B
>>838
もう自分でやり方書いちゃってるじゃん
その通りに実装すれば良いだけじゃないの?
2018/05/12(土) 00:56:13.10ID:0dcq7Vjr
駆け出しの自分には質問内容すらさっぱりなんだが
このスレの住人はこの話の内容が理解できるくらいのレベルなの?
久しぶりに日本語が分からないって思ったわ
844デフォルトの名無しさん
垢版 |
2018/05/12(土) 01:10:53.14ID:tqwvTn43
>>838
入力したそばからバリデーションを走らせたいの?
2018/05/12(土) 04:58:53.18ID:F7D6rAHG
>>843
データベースではよくあるけど間違ってもExcelでやる事じゃないから気にしなくていいぞ
2018/05/12(土) 07:55:43.25ID:hwxaPbIq
無料の「Rails チュートリアル」で勉強すれば?
例えば、Rails で一般的な入力バリデ(validation)は、

空ではない
presence: true

1〜50文字
length: { in: 1..50 }

整数のみ
:only_integer
2018/05/12(土) 08:27:40.09ID:iloBjJ0s
>>843
Webアプリケーションなら典型的と言っていい
848デフォルトの名無しさん
垢版 |
2018/05/12(土) 09:48:01.99ID:tqwvTn43
>>838
こういうのはポリモーフィズムを利用したくなる典型例の気がする。
型ごとに checkMe メソッドを定義するとか。
ちょっと古くさいかもな。
2018/05/12(土) 10:58:14.77ID:tJgrjt+6
凄いよ
MVVMやってる横で
MVCで頑張りましょうって言われた感じ
流石PSはキチガイ独占だNE
2018/05/12(土) 11:27:49.88ID:P5sx5scC
>>849
どこにレスしてんの?
851デフォルトの名無しさん
垢版 |
2018/05/12(土) 11:31:03.75ID:tqwvTn43
>>849
MVVMってなに?(wikipediaのページを読みながら)
2018/05/12(土) 11:43:33.47ID:g9HMZZiK
>>851
京急で採用してるインバーターの事やで(大雑把なボケ)
2018/05/12(土) 19:33:17.11ID:iloBjJ0s
VBAにはMVVMもMVCもない
でも事務員さんのツールだからそれでいい
2018/05/12(土) 19:47:10.61ID:tqwvTn43
事務員て何?
システム開発の専門家以外のホワイトカラーだったら全部事務員でOK?
2018/05/12(土) 19:50:29.63ID:anlHVJo4
IT、システムが専門じゃない人でいいんじゃないの?
856デフォルトの名無しさん
垢版 |
2018/05/12(土) 21:19:03.46
Excelとパワポしか触ってないIT元請け企業の社員とかね
2018/05/13(日) 00:43:57.24ID:i7PAGBqe
過疎ってんなぁ
2018/05/13(日) 09:38:43.13ID:Mp8iXUe3
クソな話題文句の言い合いでただ伸びているよりはマシ
2018/05/13(日) 09:42:02.16ID:i7PAGBqe
クソ or 過疎ならもうスレ要らなくねえか?
2018/05/13(日) 10:08:12.60ID:V2dj1TCI
土日くらい休めよ
2018/05/13(日) 10:55:04.93ID:hA5qejl9
今までC++とかの酷い奴も来たけど
今回のPSキチガイは群を抜いて酷かったな
もう二度と現れないで欲しいよね
2018/05/13(日) 10:55:35.20ID:wyHt0Mjp
二分探索、そしてMatchでこれを活用する方法、理解できました。
・要:調査表の検索キーソート。
・検索キーが数値を含む文字列なので桁揃えする必要あり。
・Matchでは完全一致での二分探索はできないので、戻値と元値の比較が必要。
この編がポイントでしょうか。
目標10秒以内を目指し、皆さんのアドバイスを元に順に試しましたが、結局この二分探索
のすさまじい結果に驚き、辞書までは試しませんでした。多分これも早いんだろうけど、、
(つづく)
2018/05/13(日) 10:55:56.66ID:wyHt0Mjp
>>862
(つづき)
少し条件を変えて、調査表(1.4万) x 駆動表(1万)で試しました。

[線形探索]
 ・Match線形探索/調査票(Range) ... 22.9 Sec
 ・Match線形探索/調査票(Array) ... 79.12 Sec

[For入れ子]
・調査票、駆動表ともにArrayなげこみ ... 53.10 Sec
  For2重Loop。発見時、Exit Forで次へ。

[二分探索](調査票はSort済)
 ・Match二分探索/調査票(Range) ... 0.42 Sec
 ・Match二分探索/調査票(Array) ... 117.24 Sec
(つづく)
2018/05/13(日) 10:56:21.29ID:wyHt0Mjp
>>862
(つづき)
結果、RangeObjectへのMatch二分探索が最強でした。
Arrayに乗せると、どんどん結果が悪くなるのが意味不明ですが、、
Match部分に時間がかかっているのは明らかでしたが、これを二分探索にすることで
1万回のMatchが 0.4 Secで終わるというのはすさまじいですね。

最終的に、検索キーの供給とマッチング、そのあとのSQL処理まで含めて
約100 Secかかっていたのが、0.8 Secで差分処理出来るようになりました。
みなさん、アドバイスいただきありがとうございました。
2018/05/13(日) 11:03:24.93ID:i7PAGBqe
>>861
なにも言い返せなかったからなぁ
悔しいねぇ
2018/05/13(日) 13:26:19.68ID:LATlOC/3
>>864
二分探索なのにArrayでもMatch使ってるのがよくわからない。
文字列としての単純比較じゃダメなのか?
2018/05/13(日) 15:10:20.32ID:uLIKOFiX
>>864
たった一万件だろ
それなら誤差
8080の時代じゃねーよ
2018/05/13(日) 15:44:53.98ID:wyHt0Mjp
>>867
22 Sec と 0.4 Secを誤差と? すごい感覚の持ち主ですね。
2018/05/13(日) 15:48:29.20ID:wyHt0Mjp
>>866
両テーブルをArrayに乗せてForで回して単純比較したのですが、50 Secほどかかってしまったのです。
Matchを使わない場合、どう記述すればよいかわからず。
ヒントをいただけますか? もっと効率がよい方法があれば試してみたいです。
870デフォルトの名無しさん
垢版 |
2018/05/13(日) 16:14:11.00ID:+vKBH4Jv
こんな程度のどうでもよい事の効率を上げるより仕事全体の効率を上げる努力をしなさいって社長が言ってたよ
2018/05/13(日) 16:20:34.22ID:uLIKOFiX
>>868
お前のプログラムがおかしいだけだろ
872デフォルトの名無しさん
垢版 |
2018/05/13(日) 17:40:36.23ID:+vKBH4Jv
50secとか
どれだけ大規模システムを作られてるの?
もしかしてヤフーとかアマゾンとかのSE担当者さんですか?
2018/05/13(日) 17:45:12.77ID:sMzgfoge
高速化の問題は細かい情報がないと話にならんよ
テスト用データと自分が書いたコードぐらいはGithubにあげてから質問してくれ
もちろんエクセルファイルの直接交換はセキュリティなど面倒事が多いからテキストファイルでな
2018/05/13(日) 18:11:36.74ID:wyHt0Mjp
>>873
元質問は>>771,>774,
条件は >>862, >>863, に書いたとおりで
80 Sec かかったのは >>790 のコードです。

二分検索で 0.4 Secに短縮できたのは以下のコードです。関数にしました。
Function isReg(STR As String, RNG As Range) As Boolean
 Dim IDX As Long
 isReg = False
 With Application
  IDX = .IfError( .Match(STR, RNG, 1), 0 )
  If IDX = 0 Then
   ' do nothing
  ElseIf STR = .Index(RNG, IDX, 1) Then
   isReg = True
  Else
   ' do nothing
  End If
 End With
End Function

50 Sec かかった単純比較はこんな感じのForの入れ子です。
For i = LBound(arrDrvList) To UBound(arrDrvList)
For k = LBound(arrFdList) To UBound(arrFdList)
If arrDrvList(i, 1) = arrFdList(k, 1) Then
(処理)
Exit For
End If
Next
Next
どんな手法がよいか教えてください。Matchにこだわるつもりはありません。
2018/05/13(日) 18:16:05.72ID:wyHt0Mjp
>>873
あ、テストデータですね。
=TEXT(RANDBETWEEN(1,1000000),REPT("0",7))&"-"&TEXT(RANDBETWEEN(1,2),"000")
で生成できます。
駆動側が1万行、調査側が1.4万行で生成できます。
876デフォルトの名無しさん
垢版 |
2018/05/13(日) 18:18:17.66ID:LATlOC/3
>>874
それのどこが二分探索なのか俺にはよくわからない。
とりあえず自分のプログラムでArray上のデータをバイナリサーチすると、
調査表、 駆動表ともに1.4万件でやって 1.9Sec だった。(Core i5)
2018/05/13(日) 18:19:47.21ID:wyHt0Mjp
>>875
日本語おかしいな。
駆動側が1万行、調査側が1.4万行。駆動側の表から1万回Matchをかけました。
調査側の表はSort済みですが、これをArrayに投げ込んで行うとなぜが遅くなります。
2018/05/13(日) 18:22:03.91ID:wyHt0Mjp
>>876
Matchの第3引数を0以外にするとバイナリサーチになるんだそうです。

その1.9Secの結果をだせたコードの書き方が知りたいです。
2018/05/13(日) 18:24:18.63ID:sMzgfoge
>>874
動作する完全なコードを書いて
測定処理も含めたすべて
2018/05/13(日) 18:40:41.94ID:i7PAGBqe
>>874
それ線形探索
2018/05/13(日) 18:53:06.33ID:wyHt0Mjp
>>880
いや >>878に書いたとおりで、現にそれに見合う結果がでているのですが、、?
2018/05/13(日) 19:03:59.96ID:i7PAGBqe
>>881
ん?
さっきから50秒の方が遅いおかしいって騒いでるんじゃないの?
883デフォルトの名無しさん
垢版 |
2018/05/13(日) 19:13:05.46
もう解決したんだから終了でよくね?
このまま続けてても無知な外野とかPS糞野郎がしゃしゃり出てくるだけ
2018/05/13(日) 19:15:15.85ID:wyHt0Mjp
>>879
駆動表、調査表(各1列)ともに >>875 の関数で生成したデータを配置。
調査表をarrFdListにすると 86 Sec, rngFdListにすると27 Sec となりました。
Sub TES_Proc()
 Dim ST As Single, ED As Single: ST = Timer
 Dim rngFdList As Range '調査表
 Dim arrFdList As Variant 'Array格納試験用
 Dim r As Range, iHit As Long, iCnt As Long
 Set rngFdList = Range( _
      Range("R_Fd"), _
      Range("R_Fd").Offset(100000, 0).End(xlUp) _
     )
 arrFdList = rngFdList
 For Each r In Range("R_Drv").CurrentRegion '駆動表
  With Application
   iHit = .IfError( .Match(r.Value, arrFdList, 0), 0)
  End With
  If iHit > 0 Then iCnt = iCnt + 1
 Next
 Debug.Print iCnt & " Matched"
 ED = Timer
 Debug.Print "Waste: " & ED - ST & " sec"
End Sub
(つづく)
2018/05/13(日) 19:15:40.65ID:wyHt0Mjp
>>879
(つづき)
こちらは0.4Secで回答がえられるようになったコードです。>>874の関数を使用します。
ただ、駆動表をArrayに変えると100Sec以上かかります。(関数の引数型変更が必要)

Sub TES_Proc2()
 Dim ST As Single, ED As Single: ST = Timer
 Dim rngFdList As Range '調査表
 Dim arrFdList As Variant 'Array格納試験用
 Dim r As Range, IDX As Long, iCnt As Long
 Set rngFdList = Range( _
      Range("R_Fd"), _
      Range("R_Fd").Offset(100000, 0).End(xlUp) _
     )
 arrFdList = rngFdList
 For Each r In Range("R_Drv").CurrentRegion '駆動表
  If isReg(r.Value, rngFdList) Then
  iCnt = iCnt + 1
  End If
 Next
 Debug.Print iCnt & " Matched"
 ED = Timer
 Debug.Print "Waste: " & ED - ST & " sec"
End Sub
2018/05/13(日) 19:20:14.73ID:wyHt0Mjp
>>882
いや、Matchを使うのがおかしいと言われているので、
もっと一般的な方法を知りたくて。

50秒のほうは確かに線形探索ですね。
上のほうでシートにアクセスしているから遅いと言われて
2つの表ともArrayに乗せて比較のために実行したものです。
2018/05/13(日) 19:22:13.03ID:wyHt0Mjp
>>883
そうですね。あとは自分で調べてみます。
お騒がせしました。
2018/05/14(月) 06:52:21.09ID:mBgrQGTw
>>865
うわ気持ち悪い
まだ監視してるw
2018/05/14(月) 07:11:10.06ID:n+3GdDup
朝から粘着してる奴が何を言ってるんだかw
2018/05/14(月) 13:57:44.01ID:lGg9ccsb
ニヤニヤ
2018/05/14(月) 17:46:18.99ID:wio42IgJ
キモっ
2018/05/14(月) 22:09:45.23ID:nBdlD1Xi
エクセルでメールを送る際にCDOを使用していたのですが
メールサーバーの仕様が変わって
ポート587のTLS/STARTTLSが必要になりました
調べてみるとCDOはTLS/STARTTLS非対応のようです

TLS/STARTTLSに対応できるエクセルでメールを送る
お勧めの方法を教えてください

よろしくお願いします
2018/05/15(火) 07:03:51.94ID:f6zNW2OD
>>892
basp21がいけるかなと思ったけど、無料版は非対応みたいですね。
SMailで対応されている方を見かけました。
他に何かあるかな?
2018/05/15(火) 07:57:52.48ID:KTrZAEG+
=と:=の違いが分からんちん
2018/05/15(火) 10:03:02.81ID:MncegZ0n
>>894
http://officetanaka.net/excel/vba/beginner/02.htm

ググればすぐ出てくるのに…
2018/05/15(火) 12:22:16.58ID:iR34l3ga
代入と比較を両方=にしたせいで名前付き引数へ渡してるのか比較してるのかわからないから苦肉の策で:=を使う
VBAの言語設計のセンスのなさの表れ
2018/05/15(火) 12:36:20.46ID:2i/hB9LU
古い言語だからセンスが無いのはしょうがない
ただずっと伝統を守って生産性をあげようとしてこなかった点は残念だね
Microsoftに見捨てられた言語
2018/05/15(火) 15:50:11.49ID:1B3peCUp
>>892
.NET言語呼べば変なライブラリ使わずに済むよ
このスレでよく連呼されてたやつね笑
899デフォルトの名無しさん
垢版 |
2018/05/16(水) 17:15:29.34ID:ZACk88wL
会社でPC upgradeのあと
キーボード配置がおかしくなってコード書く効率が格段に劣化した。
例えば@を打つためにSHIFTと2だし、(や)を打つのは場所が1つずれる、などなど。
プログラミングではコードの書き方など意識を集中すべきところはたくさんあるのに
こんなキーボードの配列のようなくだらんことに意識しないといけないので仕事効率が格段に下がって困っています。

なにか対策ありますか?
会社のIT部は対策考えてると言ってますが待てません。
2018/05/16(水) 17:38:45.07ID:VNV3eEvV
入力をフックして正しいキーに変換するVBAマクロを書くというのはどうでしょうか?
2018/05/16(水) 17:57:14.07ID:W6OUX3sP
>>899
Windows 10で異なる言語のキーボード配列に誤認識される場合の対処方法
http://www.atmarkit.co.jp/ait/articles/1707/21/news021.html
2018/05/17(木) 01:22:57.26ID:WaQcQyxN
お仕事でvba使ってるけど自分がどれくらい出来るのか全然分からん
工数とか見積もりとか出したらなんか分かるんかなーて思って調べても良くわからんしステップ数?はクソコード程行数多くなるし…なんか良い方法ないかな
このままじゃモチベが続かん
2018/05/17(木) 06:33:07.87ID:ijkzMibD
オモチャは卒業して他の言語使えば?
2018/05/17(木) 07:58:02.31ID:t5nn8U/f
MSの資格なかったっけ
とりあえずそれの練習問題みたいなの見てみるとか
905デフォルトの名無しさん
垢版 |
2018/05/17(木) 09:13:30.19ID:OEcGKIjw
VBA程度でPC作業の効率上げた気になってるけどもっと仕事全体の効率を上げる努力しような
VBAなんてそんな細かい事は後回しでいいからさ
本当は家でサッサとやって来て欲しいくらいだけどね
2018/05/17(木) 10:13:39.78ID:0CVDk2cO
>>902
なにかテクニックを持ってるなら記事書いて公開してレスポンスを待てばいい
レスなくてもアウトプットするだけでためになるし
2018/05/17(木) 11:47:08.89ID:0CVDk2cO
仕事の効率が悪いのは不合理を上から押し付けられている例が多い。
「上」の典型例が役所だ。
あとITの観点からは全く無能と言っていい経営が合理化の阻害要因になっている会社もまれにある。
そういう会社は競争に負けて速やかになくなっていくからいいけどね。
2018/05/17(木) 12:05:52.20ID:khB37Je6
そうそう
薄汚いクソフォーマットのエクセルファイルや
メンテナンス性を完全に放棄したとしか思えないクソVBAコードとかね
押し付けられた方は無駄な作業を強いられてたまったもんじゃない
2018/05/17(木) 12:10:09.02ID:0CVDk2cO
経営者は会社と従業員のために戦ってほしい。戦いに負け続けるようではダメな経営者だ。
喧嘩する相手は役所ね。頑張って。
910デフォルトの名無しさん
垢版 |
2018/05/17(木) 12:19:54.47ID:HOl2IMkD
ちょっと質問失礼
自PCにあるブックをコピーしてサーバーに新規ブックを作るとファイルのタイムスタンプの日時がよくわからない日時になってるんだけど、何の原因が考えられそうですか?
2018/05/17(木) 12:24:50.78ID:x/H/6cVB
一緒に戦えよw 傍観してるだけじゃ何事も手には入らんわ
何もいらない奴だけが傍観してろよ

多くを手にしている経営者がなんで自らリスキーな戦い挑むと思うんだ 欧米じゃあるまいし
2018/05/17(木) 12:32:34.08ID:x/H/6cVB
サーバに新規ブックを作る ってトコが書き間違いだと思うが コピーや移動やアップロードだとして
そのサーバは目の前にあるのかクラウドとかで見知らぬ国なのかでも変わってくる
ファイルのタイムスタンプも 作成時、更新時、アクセス時などなど様々
913デフォルトの名無しさん
垢版 |
2018/05/17(木) 13:16:33.83ID:oeUhwWkR
VBAしか使わせてくれない会社に合理化とかアホか?
きちんと合理化してる所は今時エクセルなんか最低限しか使わんだろ
2018/05/17(木) 14:07:27.73ID:dB6H+z10
‘配列1(セル範囲から配列にする場合)
Dim Arr as String
Arr = Range(“A1:A3”)
‘取り出し方
For each i in Arr
Debug.print i
Next

‘配列2(普通の配列)
Dim Arr(3) as String
‘取り出し方
For each i in Arr()
Debug.print i
Next

【質問1】この「括弧無し配列(配列1)」と「括弧付き配列(配列2)」の違いを教えていただけないでしょうか

配列1と配列2で取り出し方が違います。
つまり同じ物として運用するとエラーになってしまいます。

例えば通常の括弧付き配列は
Returnnum = Arr
として戻り値として配列を返せますが、括弧無し配列はできません

【質問2】
「括弧無し配列(配列1)」を「括弧付き配列(配列2)」に変換する一番スマートな記述を教えていただきたいです。現状動的配列にループで収納しています

以上、ご教授願います。よろしくお願いいたします。
2018/05/17(木) 14:20:43.91ID:dB6H+z10
すみません、配列1はVariant型じゃないと駄目でした。。
正しくは以下です

‘配列1(セル範囲から配列にする場合)
Dim Arr as Variant
Arr = Range(“A1:A3”)
‘取り出し方
For each i in Arr
Debug.print i
Next
2018/05/17(木) 14:23:23.12ID:0CVDk2cO
>>914
> Dim Arr as String
> Arr = Range(“A1:A3”)

この As String は As Variant の間違いかな?
それと、括弧無し配列もVariant 戻り値として返せるよ。
括弧付き配列はSAFEARRAY構造体というもので、括弧無し(Variant変数)はそれを値として内部に抱えている。
2018/05/17(木) 14:23:48.83ID:0CVDk2cO
おっとかぶった
918デフォルトの名無しさん
垢版 |
2018/05/17(木) 17:43:16.02
>>914
質問2は一発ではできないとおも

てか、Variant型のほうで統一すりゃいいじゃん

なんでだめなの?
919デフォルトの名無しさん
垢版 |
2018/05/17(木) 20:41:16.86ID:oSMlM+BJ
質問です

入力した文字列の時刻の値を比較して結果を出したいのですがどうすればいいでしょうか?
例えば↓のようなことがやりたいです
このままだと何を入力しても12時前になって困っています

Function Calc(val As String) As String
 If val < Time(12. 0. 0)
  Calc = "12時前"
 Else
  Calc = "12時以降"
 End If
End Function

よろしくお願いします
2018/05/17(木) 20:44:04.78ID:bbBVanOj
ggrks
2018/05/17(木) 20:59:43.69ID:gqrxfWnu
>>919
TimeVale("12:00") じゃね
2018/05/17(木) 21:00:24.39ID:gqrxfWnu
uが抜けたTimeValue
923919
垢版 |
2018/05/17(木) 21:12:45.95ID:oSMlM+BJ
>>921
有難う御座います
TimeをTimeValueにして試してみます
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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