Excel VBA 質問スレ Part33at TECH
Excel VBA 質問スレ Part33 - 暇つぶし2ch444:デフォルトの名無しさん
14/03/31 01:55:50.99 nFhjZp0H
>>438
処理に数時間もかかるの?
それなら、変わらない部分をメモ化すれば?

1日に1行ずつ増えるんでしょ?
前日までの行が変わらないなら、
その結果をファイルに書いておけばよい

出来れば、毎回する同じ計算を避ける(メモ化)

445:デフォルトの名無しさん
14/03/31 15:01:50.77 Ial2Eqsw
>>444
いや、そういうことするより、まず何にどれだけ時間がかかってるか計測するのが先。

446:デフォルトの名無しさん
14/03/31 16:48:16.50 3GCmwtHU
エクセルで256×256のセルに数字が入っている状態で
BMPの画像を作るにはどうしたらいいでしょうか?プログラミングの技術が
ないと不可能でしょうか?

447:デフォルトの名無しさん
14/03/31 17:05:56.79 r3mdI7xZ
C言語でBMP作るのは、そういうのがあるってことは知ってる。それと同じことをvbaでやりたいってことなら
(それがvbaで出来るかどうかは知らんけど)当然
>プログラミングの技術がないと不可能
じゃないの?

448:デフォルトの名無しさん
14/03/31 18:23:52.03 L50LbWDs
そうですよね・・・
自分には敷居が高そうなので諦めます。すみません

449:デフォルトの名無しさん
14/03/31 18:28:43.68 8V+7Or/W
はい敷居きた

450:デフォルトの名無しさん
14/03/31 18:31:32.29 Ial2Eqsw
>>448
「セルに数字」じゃなくて実際に色を付けて、セルの幅と高さを1:1に保って小さくして、枠線を消して
クリップボードにコピーして、BMPで書き出せば?

451:デフォルトの名無しさん
14/03/31 20:37:19.25 S+MvAbw+
図としてコピー
あれVBAからつかえんの?

452:デフォルトの名無しさん
14/04/01 01:26:03.72 5tQShRLT
三項演算子とか連想配列を最近知ったものですが
上記のような便利機能が他にも紹介されてるサイトってないですか

453:デフォルトの名無しさん
14/04/02 00:30:48.39 +8s/Qgvh
If Not IsNumeric(data) Then

ElseIf (data > 0) Then

ElseIf (data < 0) Then

Else

End If

数値か文字として渡されるdataの判定を上記のようにしたんですけど、
冗長なのでSelect Caseにしたいです。どうしたら良いですか?

454:デフォルトの名無しさん
14/04/02 00:53:09.51 9+cif8YO
>>453
Sgn

455:デフォルトの名無しさん
14/04/02 01:25:50.89 +8s/Qgvh
>>454
おお、ありがとうございました!

456:デフォルトの名無しさん
14/04/05 19:04:50.32 zCQPlUhY
ちょっとズレるけど
ここのセミナーってどうなの?
ステマとかじゃなく純粋に気になった
URLリンク(sugoikaizen.com)

457:デフォルトの名無しさん
14/04/05 19:07:13.30 Crk62Mwa
>>456
すごくおすすめだよ
行っておいでw

458:デフォルトの名無しさん
14/04/05 20:05:46.77 eYN2DOjD
VBAをVBE以外で書きたいんですけれども、誰かVBE以外のエディターで開発されてる方いますか?
いる方は、何をお使いになってますか?

VBEで以下の不満があり、関数のアウトライン機能がないこと、列挙体変数をTabで選択せずそのまま入力するとその入力された変数名に変更されてしまうなどがあり、困ってます

459:デフォルトの名無しさん
14/04/20 20:06:57.56 FLwMWrjy
dir を使って、配列にいれたファイルをチェックするマクロを作りたいのですが、
「インデックスが有効範囲にありません」というエラーがでてしまって困っています。

Sub チェック()

Const Target As String = "C:\Users\user\Desktop\格納\"

Dim tmp() As String
tmp = Split("Scr14", "Scr16")

For i = 1 To 2
If Dir(Target & tmp(i) & ".txt") <> "" Then '←エラーの出る場所(tmp部分)
Else
MsgBox tmp(i) & vbCrLf & "が存在しません"

End If

Next
MsgBox "確認できました"

End Sub


Dirに配列を使ってチェックするのは無理なのでしょうか?ご教授願います。

460:デフォルトの名無しさん
14/04/20 20:12:33.50 I6Nwishv
>>459
配列のアクセスに関するエラーだからDirは関係ないかな
Split("Scr14", "Scr16")は、Split("Scr14,Scr16", ",")の間違いだとして、
tmpは
tmp(0) = "Scr14"
tmp(1) = "Scr16"
こうなってる

なんで、ループは0 To 1にしなきゃいけない

461:デフォルトの名無しさん
14/04/20 20:26:26.65 FLwMWrjy
>>460
回答ありがとうございます。

配列に関しても理解が足りてなかったようです。

単純に文字の配列を作りたいだけなので、

Dim tmp() As String = {"Scr14", "Scr16"}

のようにしたいのですが、 = のところで、コンパイルエラーが出てしまいます。(修正候補:ステートメントの最後)

どのように修正したら良いでしょうか。

462:デフォルトの名無しさん
14/04/20 20:36:06.91 kzevG+UG
>>461
VBAではVBみたいな書き方はできない

Dim tmp
tmp = Array("Scr14", "Scr16")

463:デフォルトの名無しさん
14/04/20 20:36:17.19 I6Nwishv
>>461
VBAでは変数は宣言時に初期化できないので、これで

Dim tmp(1) As String
tmp(0) = "Scr14"
tmp(1) = "Scr16"

Variantでよければ
Dim tmp
tmp = Array("Scr14", "Scr16")

464:alchemist ◆IOGp1zS1sA
14/04/20 20:41:04.41 FLwMWrjy
>>462
>>463

ありがとうございました。成功しました。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch