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


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

●EXCEL・VBA質問スレ Part2●



1 名前:デフォルトの名無しさん [2007/05/27(日) 00:06:58 ]
・まじめにExcelの機能を追及してみようと思う奇特なひと
・スキルがないのに無理やりVBAの仕事を押し付けられた普通のひと
・VBAなんていまさらやりたくないのに業務で仕方なく使っているひと
・とにかく漏れにこんな仕事まわすなと怒っているひと
そんなM$大好きなひとからアンチM$なひとたちまで幅広くカバーするスレです

前スレ
pc11.2ch.net/test/read.cgi/tech/1168308855/

893 名前:デフォルトの名無しさん [2007/09/08(土) 07:14:41 ]
>>889
Dim FSO As Object
Dim Fds As Object
Dim Fd As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Fds = FSO.GetFolder(FdPath) 'Fdpathにフォルダのパスを指定

For Each Fd In Fds.SubFolders

Fd.Name '←サブフォルダフォルダの名前。やりたい処理を書く。AddiItemとか

Next Fd

Set FSO = Nothing
Set Fds = Nothing

まぁ、間違ってるかもしれないけど。

誰か>>861
スレ違い?

894 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 09:28:57 ]
>>888
VB系だとあまりCOMそのものを勉強する必要はないと思う。
COMのことは裏に隠蔽して普段は意識せずに済むようになっているから。

895 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 11:48:35 ]
>>892>>893
ありがとうございます
ためしてみます

896 名前:デフォルトの名無しさん [2007/09/08(土) 14:26:15 ]
VBAでワークシート関数を使いたいのですが
範囲のところにVBAの変数を指定することは可能でしょうか?
よろしくお願いいたします。

WorksheetFunction.Average(範囲)

897 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 15:47:19 ]
やってみればいいのに

898 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 15:48:08 ]
ホントなんでやってみないんだろ?

Dim Rng As Range
Set Rng = Range("A1:A3")
Debug.Print WorksheetFunction.Sum(Rng)

899 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 09:33:31 ]
名前付き引き数に変数(文字列)を使用したいのですが、どう組んだらよいですか?
ちなみに、:="名前" って感じのものです

900 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 09:59:50 ]
>>899
hlpym!ks!


901 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:14:06 ]
Sub sample()

Dim bbb As Integer

Selection.AutoFilter Field:=8, Criteria1:="#VALUE!"
bbb = Rows.SpecialCells(xlCellTypeVisible).Select
Selection.Delete

End Sub

フィルターをかけて「#VALUE!」行を削除したいのですが
上のだと項目名も選んでしまうのですが、何を付け加えたらいいでしょうか
ご指導お願いします



902 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:49:29 ]
iserror

903 名前:デフォルトの名無しさん [2007/09/09(日) 15:43:52 ]
Excel VBA とFortran どっちが早いでしょうか?
コンパイラはフリーのものなんですが。
だいぶ違うのでしょうか?

904 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:58:44 ]
そりゃぁ、馴れている方が早く書けるだろ。

905 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 16:12:43 ]
>>901
項目名を選ばなかったらいいんじゃないか
それと6行目は何をしたいのかわからない
たぶん不要

906 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 17:31:51 ]
>>903
開発されたのは、Fortranの方がずっと"早い"。


907 名前:デフォルトの名無しさん [2007/09/09(日) 18:41:36 ]
VBAより遅いコンパイラなんてあんのかいな

908 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 18:47:15 ]
腐るほどある

909 名前:903 [2007/09/09(日) 19:00:03 ]
>>904->>908
実行速度です。
使い勝手はExcel VBAがいいんですけど、速さを考えると
Fortranのほうがいいのかなと。セルの参照とかしなければ
いい線いくのかなと。



910 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 20:47:59 ]
なんでもかんでもRange作戦なら実効速度が稼げる
しかしソースが汚くなる諸刃の剣
切羽詰まったやつ以外にはオススメできない

911 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 22:51:08 ]
>>909
計算精度を求めるのならFORTRAN(もしくはCOBOL)

Excelの小数点以下の計算精度は酷い。
VBAで計算するのなら、Currencyとか使うと精度が良いが小数点以下桁数の制限が大きい。



912 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 23:45:16 ]
doubleをlongに入れると親切に四捨五入してくれるからなあ
ずいぶんはまったよ

913 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 01:20:08 ]
>>911
それは、精度がいいんじゃなくて、
Centuryの誤差の出方がDoubleのそれより人間の感覚に近いというだけ。

914 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 01:45:23 ]
世紀の誤差か

915 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 11:08:25 ]
>>913 はCurrencyをCenturyと書き間違えて説得力が低いけど、
>>911 が言う「Excelの小数点以下の計算精度は酷い」は嘘っぽい。
根拠があって言ってる?

916 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 11:44:34 ]
single、doubleとも本来の精度以上に悪いとは思ったことはないが
ただ計算の時にどの型になってるかよくわからないんで
全部cdblにしたりしたな

917 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 18:33:29 ]
>>915
Excelに限定すると

ttp://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.shtml

とか。普通にExcelの参考書類にも載っている話だけれど

918 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 18:56:17 ]
ヒント:丸め誤差

919 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 19:03:02 ]
>>917
それはexcel限定の話じゃない

920 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 19:18:52 ]
>>917
FORTRANでもまったく同じことが起きます。
COBOLは、十進数で計算するのでVBAのCurrencyと同様ですが、
あらかじめ桁数を決めておくのが普通なので、
考えようによってはCurrencyよりも使いにくい場合があります。

921 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 19:24:40 ]
>>917
そのページ、怪しくない?
「0.1 は、実は 0.1000…000555115123…625です」みたいな書き方しているけど、
右側(小数点以下20桁以降)は、ただのゴミ。
それだけの桁数をもっているわけじゃない。



922 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 22:23:56 ]
>>921
>「0.1 は、実は 0.1000…000555115123…625です」みたいな書き方しているけど、

初心者にも画面上で分かりやすいように画面表示上での最高桁を使っているわけで
説明しやすくするための方便かと。
日経ソフトウェアではなくビジネスマン向けの「日経PC21」だし無駄に厳密にやっても混乱させるだけだし。
一応フォローとして同じ連載中で「IEEE 754浮動小数点数」の仕組みとかもやってるが。

# Excelのワークシート関数利用に関しては結構マニアックな雑誌なので一般ユーザに渡すと結構重宝されたりするけど>日経PC21

あと >>917 の通り、これ以外でもぐぐればいくらでもある。

そういや8bit機であるMSXのBASICの浮動小数点がBCD利用で
PC98のN88-BASIC(86)より精度が高かったことを思い出した
その分、元々遅いのが更に遅くなっているが。

923 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 22:50:32 ]
BCDなら固定小数点じゃないの?

924 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:17:50 ]
>>922
どんだけぐぐったって、Excelの小数点以下の計算精度がFortranよりも酷い
なんてことが書いてあるページは見つからないと思うけど。


925 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:21:21 ]
何故10進型を使おうとしない

926 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:22:01 ]
922ってそんなこと主張してるか?

927 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:22:20 ]
>>923
MSXのMATHPACKはBCD浮動小数点が使えたはず。

928 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:27:30 ]
まあ考えたらBCDでも浮動小数点は可能だな

>>925
足し算引き算ぐらいなら使ってもいいが


929 名前:デフォルトの名無しさん [2007/09/10(月) 23:32:37 ]
もうちょっとCPUが賢く安くなれば
10進数浮動小数点演算器載せるだろうな、あと何年待てばいんだろ

930 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:35:51 ]
>>924
明らかに >>921-922 の流れはFORTRANとは無関係です。
Excelに対するFORTRANの計算精度の優位性について言及しているのは >>911 だけだし。

FORTRANはよく知らないが同じBASICでもMSXと98で精度が異なるように、処理系依存の部分も多い希ガス

931 名前:デフォルトの名無しさん [2007/09/10(月) 23:39:59 ]
つうか計算精度なんて言語じゃなくてCPUの性能によるんじゃないの?
まぁソフトだけで計算すりゃ精度は出るだろうが、馬鹿みたいに遅い気がする



932 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:43:21 ]
言及ったってどう酷いかいってくれないとなあ

933 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:44:44 ]
だから10進型使えっつーの

何が優位性だ半可通が

934 名前:デフォルトの名無しさん [2007/09/10(月) 23:51:30 ]
まぁ世の中の殆どは近似値で事足りる
精度のいるモノは高いアプリやらマシーン使ってるだろうし
浮動小数点使って馬鹿みたいなプログラムを組むと引っ掛かる

935 名前:デフォルトの名無しさん [2007/09/11(火) 00:17:13 ]
メールについて質問!

VBAからダイレクトにメールを打つサンプルはよくあるんですが、
メーラーを開き、新規メール画面にセルの文字列を入れて、送信はしない、
って状態を作りたいのですが、どうすれば良いでしょうか?

メーラーはOutlook Expressじゃなく、「通常使うメーラー」を使いたいです。

よろしくお願いします。

936 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:30:08 ]
>>935
メーラーにコマンドラインで渡せばいいんじゃないか

937 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 02:39:14 ]
Select Caseの分岐に変数のリストを渡して使えないでしょうか

Dim IntA = "1,3,5" As Integer
Dim IntB = "2,4,6" As Integer

Select Case Int
   Case IntA
      〜
   Case IntB
      〜

みたいな。
上のだと当然型エラーが出るし、stringにすると「1,3,5」という文字列にマッチしてしまう

たくさんのわりとランダムっぽい数値で分岐させたく、
なおかつよく数値が変更されるので見通しの良いところにおいておきたいのです。

938 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 06:53:59 ]
ヒント:偶数、奇数

939 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 06:56:43 ]
ってランダムか
規則性がないものは都度判定するか連想配列に登録するしかないと思われ

940 名前:935 [2007/09/11(火) 07:41:35 ]
>>936
ありがとうございます。
今、メーラーはBeckyなのですが、Becky側では、コマンドラインから
セット出来るのは、宛先To:のみなので、本文を処理出来ません。。
通常使うメーラー、無理なもんですかね?

941 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 08:30:21 ]
mailto:で呼び出したらいいんじゃないかな?
本文とかも指定できる。
ttp://www.shurey.com/Soft/JavaScript/mailto.html



942 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 19:04:00 ]
>>937
実際の分岐条件イメージが涌かないが、まずはHELPの使用例見ろ
その上での話なら、変則ではあるがこのようなやり方もある
Select Case True
   Case 条件式1
      〜
   Case 条件式2
      〜
   Case Else



943 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 19:28:45 ]
> 変則ではあるが
その手法は基本だろ?

944 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 20:51:56 ]
基本は
if 条件式 then
elseif 条件式
end if

945 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 21:50:07 ]
>>944
if 条件式 then
elseif 条件式 then
end if



これも基本だし>>942も基本のうち

946 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 23:17:18 ]
elseifなんかソース汚くなるしLIKE演算子に用があるときぐらいしか使わんわ

947 名前:デフォルトの名無しさん [2007/09/11(火) 23:54:01 ]
で?

948 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 00:33:43 ]
>>937の例だと
select case hoge
case 1,3,5
case 2,4,6
end select
とかでいいんでないの
magic numberだが

949 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:27:54 ]
>>946
ハゲは黙ってろw

950 名前:デフォルトの名無しさん [2007/09/12(水) 15:29:00 ]
>>937
配列渡しの関数作って戻り値をIF文で判定するしかないじゃね
select文に拘ってもしょうがない

951 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 20:45:54 ]
質問です。
本日、面接に行ったところ、1週間でVBAで計算機を作って来いと言われました。
ちなみに、VBAどころかプログラム自体、一切触ったことありません。

で、まだソース部分は全く手付かずなのですが、
ユーザフォームに0〜9ボタンや、+、-などのボタンとテキストボックスを貼り付け、
ボタンを押して、値なり結果をテキストボックスに返す感じで行きたいなと。
ただ、ユーザフォーム上で計算機としての動作が可能なのか、
アプローチが最初から間違っていないか、その点を教えていただきたいです。

探し方が悪いとは思うのですが、そういったものを紹介しているサイトも
見つけられなかったものですから…




952 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 20:51:35 ]
>>951
ちなみに面接官もここチェックしてるから


953 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 21:10:17 ]
vbaじゃなくてvisual basicで探せ

954 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 21:41:02 ]
>>951
それを自力で出来るかどうかを見てるわけだから不正をせず自力でやりましょう
不正をして採用されても、能力以上のことばかり要求されて辛い思いをするのは君ですよ

自分の能力に見合ったものを選ぶか、上を目指したければズルすることではなく己を高めることを考えましょう

955 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 22:08:06 ]
>>951
ひとつだけ言っておく

>ユーザフォーム上で計算機としての動作が可能なのか

可能

956 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 22:09:28 ]
>>951
考え方は合ってる
数字ボタン:値の取得
加減乗除などのボタン:フラグ
って考えれば良い


957 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:15:12 ]
"を文字列として扱いたいのですが、例えば
"My name is nanashi"という具合に"(半角)まで表示させるにはどうすればいいでしょうか?
環境はExcel2003です。

Dim tk as string
tk=""My name is nanashi""
だとエラーが出ます。

たぶん
 tk=???&"My name is nanashi" &???
が正解であると思うのですが???に何を入れればいいのか思い出せません。
PC-98時代のベーシックならCHR(??)だったような記憶があるのですが、VBAの場合どうすればいいのでしょうか?
お願いします。

958 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:18:56 ]
ググレカス

959 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:31:11 ]
>>957
Msgbox """ぐぐれ"""

960 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:42:44 ]
奇数個をはさんでも偶数個に修正するんだな

961 名前:デフォルトの名無しさん [2007/09/13(木) 01:58:19 ]
>>957
実はVBAにもCHRあるから同じように書ける








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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