1 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 19:07:54 ] ExcelのVBAに関する質問スレです 前スレ pc12.2ch.net/test/read.cgi/tech/1241885130/ ★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。 ★2 ExcelのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Application』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。 ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。 ★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
252 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:52:15 ] >>250 浮動小数点の問題ね As Double を As Currency にしてみたら・・どうなるかな!
253 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:11:06 ] 四捨五入せずに For a = 0 To 2 Step 0.1 b = 2 - a Debug.Print a, b Next でやってみ。誤差が見えるよ。 あとPrintメソッドで「 , 」を使うとTabの働きをする。これ豆知識な
254 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:20:08 ] 通貨型 (Currency) 通貨型 (Currency) の変数は、64 ビット (8 バイト) の変数です。 整数形式で表され、10,000 倍されて整数として記憶された、15 桁の整数部分と 4 桁の小数部分を持つ固定小数点数です。 -922,337,203,685,477.5808 〜 922,337,203,685,477.5807 の範囲の値をとります。通貨型の型宣言文字は、アット マーク (@) です。 通貨型 (Currency) は、金額に関連する計算に役立つデータ型です。また、固定小数点を含む計算にも役立ちます。
255 名前:250 [2009/07/28(火) 23:14:54 ] >>251-254 試してみて0.1ステップだと誤差で21回目に2より 少しだけ大きな値になってしまうことが理解できました。 Printメソッドでの「 , 」も勉強になりました。 通貨型でも期待通りの動作をすることを確認できました。 こういった誤差に強い型だとわかりました。 ご回答ありがとうございました。
256 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:14:45 ] 応用は利かないけど、こうするな For a = 0 To 20 Step 1 b = ( 20 - a ) / 10
257 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:21:19 ] > あとPrintメソッドで「 , 」を使うとTabの働きをする。これ豆知識な 豆知識ではなく基礎知識じゃね? ;で区切ると結合になって、末尾に;入れると改行されないのとセットで
258 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 10:09:22 ] メインのSubで動的配列を Dim A() As String Dim B() As Long Redim A(10) Redim B(10) と宣言して別のルーチンで配列の中身をいじりたい時 ルーチンの呼び出しと呼び出し側の指定はどう書いたら良いですか? 配列操作 A(), B() private sub 配列操作(ByRef A() As String, ByRef B() As Long) な感じでしょうか、それとも 配列操作 A, B private sub 配列操作(ByRef A As String, ByRef B As Long) な感じでしょうか
259 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 11:05:06 ] >>258 配列は自動的にByRefになるので省略できます。逆にByValは指定できません。 Call 配列操作(A(), B()) Private Sub 配列操作(A() As String, B() As Long)
260 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 11:23:33 ] ()は必要なんですね、ありがとうございます。
261 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 11:50:09 ] >>259 おい、嘘つくな。
262 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 11:53:36 ] 直後にすみません、もうひとつひっかかってしまいました。 Split関数で文字列をAというVariant型の配列に格納した場合、この変数は 配列操作 A Private Sub 配列操作(A As Variant) とすれば配列を維持したままByRefで渡せるんでしょうか?
263 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:12:18 ] 自分で実験すれば済むことをここで聞くか?
264 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 13:37:55 ] 聞けばわかるのにわざわざコード組むか? なんだろ どちらも真理だ
265 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 14:31:15 ] わかったら終わりなの?結局コードは書かなくていいの? 宿題?
266 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 14:37:35 ] >聞けばわかるのにわざわざコード組むか? ただの疑問なら聞けば済むだろうが ここで出る質問のほとんどは最終的に組まないと終わらないだろ? まぁ実験の仕方がわからないって場合は仕方ないかも知れんが
267 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 15:44:29 ] 結局コード組むんだから間違ってるかも知れない面倒はやりたくないのだよ!
268 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 15:55:18 ] いきなり成功するより、いっぺん間違えた方が身に付くし 理解が深まって応用がきくようになる
269 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 16:59:34 ] それは当然 だが結果しか望まない者もいるのだよ・・・
270 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 17:18:10 ] Sub test() Dim V() As Variant ReDim V(10) V(0) = "自分で調べろ" VVV V End Sub Private Sub VVV(V As Variant) MsgBox V(0) End Sub
271 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 17:57:12 ] >>270 そのコードは冗長的だな 今後の保守のためにもこうすべき Sub test() 略 V(0) = "ググレ" 略
272 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 18:04:34 ] >>271 そのコードは冗長的だな 今後の保守のためにもこうすべき ググレ
273 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 18:37:56 ] で、このスレの存在価値も無くなりましたとさ チャンチャン
274 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 18:43:57 ] ではこういうのは Sub b() Dim myStr As String Dim myMsg As String Dim i As Long Do myStr = Mid(Rnd(), 3, 14) If myStr = "718571858269" Then Exit Do sleep 1 Loop For i = 1 To 12 Step 2 myMsg = myMsg + Chr(Mid(myStr, i, i + 1)) Next Debug.Print myMsg End Sub >273 そもそも質問するスレだしな 答えたくないなら答えなければいいだけ・・・でもある
275 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 18:55:03 ] 桁が足りないな 素直に for ri = 0 to 5 Randomize rndStr(i) = mid(rnd()3,2) next
276 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 19:55:37 ] ワークシート関数を眺めていて、気になったのですが、 countif(range,"<100") のように、第2引数が文字列型(?)のように見えます。 試しに、 dim str as string str = "<100" msgbox 10 & str '← 10<100 と計算をさせたい。= true の結果を出したい。 と組んだのですが、 結果は 10<100 と文字列で表現されるだけでした。 引数に含まれる演算子をそのまま読み込ませる方法はありますでしょうか。 なにとぞよろしくお願いします。
277 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:20:41 ] それをやるのはevaluate()だが、お前が本当にやりたいのはworksheetfunction()じゃないか?
278 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:48:18 ] str = "<100" MsgBox CBool(Val(10 & str))
279 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:52:22 ] つまらん
280 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:52:34 ] sumif関数について質問です。 検索条件を2つ指定する場合はどのようにしたらいいのでしょうか? A列にある「あ」という文字とB列にある「い」という文字があるときの C列にある数値の合計。 よろしくお願いします。
281 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 21:00:45 ] >>280 ここはvbaの質問スレだけどvbaの回答でいいのか? (なんとなくスレ違いっぽい文章に見えたので念のため確認)
282 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 22:51:02 ] >>277 いや、ワークシート関数をVBAで使うって話ではなくて、 例えば、countif だと条件2個はネストしないと出来ないので、 それを1つの関数で出来るようにユーザー定義関数を作ろうと思ったのです。 その時に、ワークシートの countif は、第2引数に文字列で条件を入れてるのに、 それをダイレクトに演算式に代入出来てる事を疑問に思いまして。
283 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 22:59:55 ] そうならそうと最初から言え馬鹿
284 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 23:00:54 ] 私の政策はブレてません。
285 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 05:32:07 ] 馬鹿ではないでしょ。読めば分かるし。 >282 Rangeオブジェクトのように、セル範囲を" "で囲んであるものも有りますよね。 これはVBAがコードをコンパイルする時に、区別しやすくするためだと思います。 なので必ず文字列として機能している訳ではないです。 最終的にはマシン語で動く訳ですから。
286 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 06:24:27 ] VBAはコンパイルはしないだろ
287 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 07:35:20 ] メニュー > デバッグ > VBAProject のコンパイル
288 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 07:41:11 ] そういう表記だとしてもコンパイルじゃないよね? コンパイルの意味わかってる?
289 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 07:42:52 ] 機械語に訳すとならったが、ちがうのか?
290 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 07:51:58 ] そうだね。 それでVBAは機械語に訳した実行ファイルを作るのかい?
291 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 07:53:31 ] VBAはコンパイラじゃなくて、インタプリタだろ?
292 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 09:02:19 ] VBAはインタプリタ言語でもあり、コンパイル言語でもある
293 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 10:04:31 ] アセンブラのほうが好みだわ
294 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 10:31:03 ] 機械語を吐くのは「狭義の」コンパイル。工業高校レベルの回答。 「Pコードマシン」でぐぐれ。
295 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:08:27 ] Excel2007のVBE、インテリセンスが効かないんだけど何か設定がいるの?
296 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:10:25 ] ああ、オブジェクトの種類によって効かないやつがあるのか Rangeならいけるわ
297 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 19:10:58 ] すみません、ご助言お願いいたします。 OS:Vista、Excel:2007 コンパイルを実行すると ”プロシージャの呼び出し、または引数が不正です”と表記されます。 この際、黄色い帯で示されるエラー部分が、 Public Function Zn(CZn, X, W, b, K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11) Zn = 2 * (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 - K8 * X * W - K9 * X * W ^ 2 - K10 * X * W ^ 3 - K11 * X * W ^ 4) / _ (K1 * X + ((K1 * X) ^ 2 + 4 * K2 * X * (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 _ - K8 * W * X - K9 * X * W ^ 2 - K10 * X * W ^ 3 - K11 * X * W ^ 4)) ^ 0.5) End Function のZnの式の部分です。 色々考えたのですが原因がわからず、試しに、上手くいく類似のプログラムの Znを代入してみたところ、エラーは出ませんでした。 代用したZnの式は Zn = 2 * (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 - K8 * X * W - K9 * X * W ^ 2) / _ (K1 * X + ((K1 * X) ^ 2 + 4 * K2 * X * (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 _ - K8 * W * X - K9 * X * W ^ 2)) ^ 0.5) です。 (K10とK12の項を削除したものです) 最初のZn式がエラーを示す原因等、ご助言お願いいたします。
298 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 19:48:59 ] 0.5
299 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:09:56 ] ^ 0.5
300 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:15:46 ] >>298 >>299 早速のご助言ありがとうございます。 0.5とは、最後のですよね。 ただ、エラーが出るZn式にも、出ないZn式にも含まれているのですが・・・?
301 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:28:09 ] そのエクセルほしいな 2kしかもっていないけど、基本的に^は整数しか出来ない Zn = Application.Power(〜〜 ,0.5) で代用
302 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:38:13 ] >>301 細かいけど前に「2 *」が抜けてないか?
303 名前:302 mailto:sage [2009/07/30(木) 20:40:41 ] 不足指摘してるのもまだ不足してたな さすがにそこまで応用力のないやつはいないか
304 名前:297 mailto:sage [2009/07/30(木) 20:46:40 ] >>301 ありがとうございます! 恥ずかしながら、301さんのスレを見て初めてVBAでワークシート関数の利用が 出来ることを知りました。。。 ほしいというのは、やはりここに書いただけではエラーの理由の解明が 難しいということでしょうか?
305 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 21:08:48 ] いや、全部確固内に記述しちゃえばよかろ
306 名前:297 mailto:sage [2009/07/30(木) 21:46:24 ] アドバイス頂いた方法でやってみたのですが、だめでした 最初のZnの式を Zn = 2 * (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 - K8 * X * W - K9 * X * W ^ 2 - K10 * X * W ^ 3 - K11 * X * W ^ 4) / _ (K1 * X + Application.WorksheetFunction.Power(((K1 * X) ^ 2 + 4 * K2 * X * (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 _ - K8 * W * X - K9 * X * W ^ 2 - K10 * X * W ^ 3 - K11 * X * W ^ 4)), 0.5)) としたのですが、 「worksheetFunctionクラスのPowerプロパティを取得できません」 とのことです。。。
307 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:01:33 ] いろいろ変えてみたら
308 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 22:24:23 ] これなら通るんだよね。 Sub test() Debug.Print 2 * Zn(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) ^ 0.5 End Sub Public Function Zn(CZn, X, W, b, K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11) Zn = (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 - K8 * X * W - K9 * X * W ^ 2 - K10 * X * W ^ 3 - K11 * X * W ^ 4) / _ (K1 * X + ((K1 * X) ^ 2 + 4 * K2 * X * (CZn - X - K3 * b * X - K4 * b ^ 2 * X - K5 * b ^ 3 * X - K6 * b ^ 4 * X - 2 * K7 * b * X ^ 2 _ - K8 * W * X - K9 * X * W ^ 2 - K10 * X * W ^ 3 - K11 * X * W ^ 4))) End Function
309 名前:デフォルトの名無しさん [2009/07/31(金) 00:02:27 ] Excel.Range("Sheet1!$A$1").Find(What:="") What:= ←ここに255文字以上入れると、動かんのだが。
310 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 00:36:05 ] Sub test() Dim HashedData Set HashedData = CreateObject("CAPICOM.HashedData") HashedData.Algorithm = CAPICOM_HASH_ALGORITHM_SHA1 HashedData.Hash "abc123あいう" MsgBox HashedData.Value End Sub 暗号化プログラムを作っているのですが、予定では 「f95439120bf5c5d2b962cbe3a530199226f1ed2e」 と出る予定だったはずなのに違う値が出て来るヽ(`Д´)ノ
311 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 01:21:08 ] >>310 半角のみと全角のみで確認
312 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 07:04:59 ] Excelを勉強したくてスレ検索しました ここがヒットしました。普通のExcelとExcel VBAとの違いはなんですか? エクセルとは、プログラムしたエクセルに同じ動作を繰り返させるものだとホームページで読みました。
313 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 07:24:10 ] >>312 >普通のExcelとExcel VBAとの違い 比較する対象ではありません。 ExcelはExcel VBAを含みます。 しかし、例外もあり、含まないExcelもあります。 >エクセルとは、プログラムしたエクセルに同じ動作を繰り返させるもの 再帰的な定義ですね。 その「ホームページ」には「プログラムしたエクセル」の定義は書いてありましたか?
314 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 07:41:40 ] 暗号化なんてやったことないわ
315 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 09:58:31 ] >>297 Functionの最初に Debug.Print CZn; X; W; b; K1; K2; K3; K4; K5; K6; K7; K8; K9; K10; K11 ってのを追加して、エラーが出た時のパラメータを教えて
316 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:36:30 ] >>297 マイナスの平方根をとろうとしてる 実数解を期待してるなら、式かパラメータかどっちかがおかしい
317 名前:デフォルトの名無しさん [2009/07/31(金) 14:06:05 ] Excel2003使用 sheet1にある表のB列に「特定」があれば、その行をコピーして sheet2の2行目から下へ順番に貼り付けたいのですが、 sheet2への貼り付けがうまくいきません。 Rend = Range("c65536").End(xlUp).Row For i = 7 To Rend If Range("b" & i) = "特定" Then Worksheets("sheet1").Rows(i).Select Selection.Rows.Copy Worksheets("sheet2").Rows(i).PasteSpecial End If Next Worksheets("sheet2").Rows(i).PasteSpecialの変数(i)を Rend2=Range("a2").end(xldown).offset(1,0)を作って それを当てはめてもうまくいきません。 解決方法を教えてください
318 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 14:46:12 ] なにがどううまく行かないのかと シート2のセルをカウントする変数を組み込めばいいんじゃね
319 名前:317 [2009/07/31(金) 15:19:14 ] >>272 ありがとうございます。^^ おかげさまで解決しました。
320 名前:デフォルトの名無しさん [2009/07/31(金) 16:17:05 ] 【回答は】Excel VBA質問スルナ Part13【ググレ】
321 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 20:03:47 ] >>317 おそらく、sheet2をアクティブにしていないから
322 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 07:56:11 ] すいません。 一般的な関数(例えばsinなど)では EXCELのセル上で 『 =sin( 』を入力すると 入力セルの近くに『 SIN(数値) 』というクイックヒントがでます。 しかしVBAでユーザー定義関数をつくり、 同様にセル上で作成した関数を入力してもクイックヒントが出てきません。 どのようにすれば自作の関数でもクイックヒントがでるようになるのでしょうか。 教えてください。 Excel2003、WindowsXPです。
323 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:50:04 ] ヒントはヒントとして定義しなきゃ出ないよ Functipnプロシージャを書いただけじゃ、関数と引数を定義しただけだ とはいえ、Excelでユーザー定義関数のヒントを定義するのは面倒なので 「関数の引数」ダイアログを使う方法をオススメする こちらは定義というか宣言した引数がそのまま出てくる
324 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:32:00 ] WindowsXP Excel2000で作っています。 url = "http://・・・/a.html" Workbooks.Open Filename:=url という形で、社内のイントラネット上のhtmlファイルをブックとして開きたいのですが、 インターネットのファイルや、PC内のファイルは開けるのに イントラネット上のファイルは開けません。 なにか、特別な認証が必要なのでしょうか?
325 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:02:08 ] 社内イントラ上のhtmlファイルの参照を、http://・・・としてるの? それだと開くわけないよね。
326 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:46:15 ] んなわけなかろ いや端末アドレスがそうなってるなら問題ないだろ
327 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:07:40 ] IEや他のブラウザでurl = "http://・・・/a.html"が開けるかどうかだね
328 名前:324 mailto:sage [2009/08/02(日) 00:05:27 ] みなさんありがとうございます。 IEなどのブラウザでは開けます。 ちなみに、イントラネットのファイルのアドレスは 192.168.1.10/ 〜/〜.html みたいにIPアドレスになってます。
329 名前:デフォルトの名無しさん mailto:age [2009/08/02(日) 22:32:07 ] cells(x,y)="" cells(x,y)=Empty の違いってなんでしょうか?
330 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 03:28:45 ] >>329 EmptyはVariant型で「変数が初期化されていない」という意味の特殊な値。 "" はString型で長さが0の文字列。ただしCellsに代入した場合は自動的にEmptyに変換されるので 結果は同じになる。
331 名前:322 mailto:sage [2009/08/03(月) 05:41:14 ] >>323 ありがとうございます。 「関数の引数」ダイアログ理解しました。 しかしできることなら、やはりヒントを定義したいのですが その場合はどのような方法でやればいいのでしょうか?
332 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 06:37:59 ] 君には無理だ。やめておけ。
333 名前:デフォルトの名無しさん [2009/08/03(月) 14:57:23 ] シートを保存する時に書式を含む値のみを保存しているのですが、条件付き書式も 通常の書式に変換(&削除)したいのですが、何か良い方法がありますでしょうか?
334 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 17:31:03 ] >>333 新規のシートに はりた
335 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 17:32:32 ] 新規のシートに 貼りつけて保存すればいんじゃね
336 名前:デフォルトの名無しさん [2009/08/03(月) 19:54:43 ] OS -> Windows Vista Excel Office2007 ある文字列をカウントする関数Function()を作ってみたけど 参照しているセルの値が変わっても自動計算されません。 なぜでしょうか? Excelの自動計算はONにしてます。 また、マクロも有効になっています。 数式バーにカーソルを合わせてEnterキーを押すと そのセルだけが更新されます。
337 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:45:52 ] 参照式とFuncitonの内容を書きなさい。 それだけの情報だとなんともいえない。
338 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 00:23:59 ] あるシートに別ファイルシートのイベントマクロをコピーしたいのですが、 たくさんのシートがあるので、手作業でなく、コピーそのものをマクロ化する方法を教えて下さい。
339 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 00:43:47 ] >>338 モジュールのインポート、エクスポート
340 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 06:17:42 ] >>336 それだけの情報だとApplication.Volatile使えとしかいえない。 >>338 VB言語でVBプロジェクトを弄る方法は、表計算(Excel)とは関係ないので >>339 の方法がお気に召さないならそれ以上はスレ違いって話になる しかし、あるブックの複数シートで同一イベントを起こしたい場合 シートモジュールでのWorksheet_Changeの変わりに ブックモジュールでWorkbook_SheetChange使えば良いだけの話だがな
341 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 08:57:24 ] はぁ? VBEこそ、もろこのスレ向きの話題だろうが
342 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 09:03:08 ] >341 ハァ? (゚Д゚)y─┛~~
343 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 09:56:25 ] Microsoft Visual Basic for Applications Extensibilityを参照してImportで一括インポート Application.VBE.を使用して挿入 好きなほうをどうぞ
344 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 13:47:39 ] >>336 なんでCOUNTIFがあるのに自作するのか分らんが、関数の参照してるセルはきちんと引数に入れてるのか? 一部の揮発性関数をのぞいて、基本的に関数は引数が変化したときだけ自動では再計算する。 =COUNTIF(A1:A10,C1)ならA1:A10のいずれかのセル、またはC1が変更されたときだけだ。 だから自分で関数を作るときも範囲と検査値の二つの引数を入れるように作らないと駄目だ。 Application.Volatileで逃げるのは間違った解決策だから気をつけろ。
345 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 15:25:14 ] URLをページタイトルに置換するスクリプトなのですが動作が不安定です。 どこを修正したらよいでしょうか。どなたご教授お願いします。 Sub GetWebPageTitle() Dim objIE As Object Dim lngLastRow As Long Dim i As Long Dim strURL As String On Error GoTo ErrHandler 'IEのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.Application") '最終行取得 lngLastRow = Me.Range("A65536").End(xlUp).Row For i = 1 To lngLastRow strURL = Me.Cells(i, "A").Value objIE.Navigate strURL '表示完了まで待つ Do While objIE.Busy = True And objIE.ReadyState <> 4 DoEvents Loop Me.Cells(i, "B").Value = objIE.Document.Title Next i objIE.Quit MsgBox "タイトル取得完了" Finally:
346 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 15:25:55 ] >>345 の続き Set objIE = Nothing Exit Sub ErrHandler: With Err MsgBox .Number & vbCrLf & .Description, vbCritical End With Resume Finally End Sub
347 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 15:46:44 ] あ、そっかFalseにするんだ。 自己解決しました。 すみません。
348 名前:338 mailto:sage [2009/08/04(火) 19:41:57 ] >>339-343 ありがとうございます。 インポートは、シートでなくmodule にくっついてしまいだめでした。 教えていただいた方法を順に試してみたいと思います。 excel のvbaしかやったこと無いので、イベントをしらべだしてから VBEなどがあるのを最近知った初心者です。
349 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:55:33 ] , -'"´  ̄`丶、_ ,.∩ `ヽ 〃∪'´ ̄`二二人\ ヽ | ツ´ ̄ ̄ ̄ ̄´ ヾ ヽ. ', |ハ ,ニ、 ,. - 、 | | | l | | ハ ィハ ,二ヽ. | | | | | 同じ板にコピペするとそのままだけど、 | | | じ' |トJ〉 /)} l | 違う板にコピペすると鬼のような怖い顔 | ハ 、'_,  ̄,, 厶イ川| に変わる摩訶不思議な佳子様コピペ。 l l /\ .. イV\川 | ,' l l ,イ `l ̄´ / /ヽl l l | l ハ `メ、 〃 ヽヽ、__ノ l ∨ └‐イ「ト--ァ'´ ハヽ__ノ ヽ/ } l」」 / / }`ー 〈_n| 八 / / /ノ 〈二二人 c /\/ / , イ / /厂 /\__>< {_
350 名前:336 [2009/08/04(火) 20:03:33 ] Excelのセキュリティの設定で常にマクロを有効にするか 確認するように変更したら自動計算されました。 >>344 複数の検索値でクロス集計するようにしています。 確かに範囲と検索値を引数に入れるようにしたほうがいいですね。 ありがとうございます。
351 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 07:54:36 ] まさかピボットテーブルでやった方が簡単なことを関数、しかも自作の関数でやってるんジャマイカ?
352 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:52:18 ] セルをビットに見立てて、エクセルで扱えないデータを格納・演算出来ることに気が付いたんだけど そもそも使わないんだよな……無意味なことをした