Excel VBA質問スレ Pa ..
[2ch|▼Menu]
666:664
08/02/05 12:55:45
>>665
うを、ホントだ。素で知らんかった。Activesheetを拾うっぽいね。 どうもありがd。


667:デフォルトの名無しさん
08/02/05 13:56:32
>>664
その定義方法がですね、textboxから、プロシージャをcallする場合は
分かるのですが、この逆になると、textboxのchangeなのかenterなのか
keydownなのかどこで定義したらいいのか・・・そもそも不可能なのか・・

668:デフォルトの名無しさん
08/02/05 14:10:50
>>667
イベントプロシージャを使うつもりなら、どのイベントで処理するか決めるだけじゃないの?
つか、どういう動きをさせたいの?


669:デフォルトの名無しさん
08/02/05 14:11:31
>>667
もしかして、フォームのプロシージャから標準モジュールをサブルーチンとして使いたいのか?
だとしたら、フォーム自身なりテキストボックス自身をそのtest()に渡してやればいい。
やりたいこととやっていることの説明くらいできないようじゃ、先が思いやられるけどね。

670:デフォルトの名無しさん
08/02/05 15:14:50
お付き合い頂き感謝します。
標準モジュールから、ユーザーフォームのテキストボックスを呼び出して、
なおかつそのテキストボックスに任意の文字列を表示させたいです。

テキストボックスのプロシージャから、標準モジュールを呼び出すのは
何とかできるのですが、逆がどうしても出来ません・・

671:デフォルトの名無しさん
08/02/05 15:18:49
面倒だから、全ての自作オブジェクトの一覧と全てのプロシージャの一覧出しちゃえよ。
状況説明できない馬鹿にいくら聞いても説明しても無駄だって判ったからさ。

672:デフォルトの名無しさん
08/02/05 15:21:08
>>670
いや、だから・・・
何かしらの処理が実現できない、っていう相談じゃなくて、コードの書き方が分からんってこと?

標準モジュールに記述したプロシージャは、どこかから呼ばれるまでは処理が走らない。
その前提の上で、特定のフォームの部品を扱いたいなら、○○(Userform名).Textbox1
例えば、デフォルトのオブジェクト名であれば、Userform1.Textbox1.Value でアクセスできる。
TextBox1.Value だけでは対象が分からんからエラーになる。 単にValue とだけ書くようなもん。


673:デフォルトの名無しさん
08/02/05 15:24:36
うぜーーーー

Sub foo()
  UserForm1.TextBox1.Text = "abc"
  UserForm1.Show
End Sub

674:672
08/02/05 15:29:26
>>670
あー、ごめん、よく考えたら 672の書き方じゃ絶対に分からんな。
まずはフォームの実体を取得しなきゃならんので、どこかから呼び出されるのを前提で、
”基本的には”標準モジュールのプロシージャに引数として処理対象のオブジェクトを渡すか、
フォームのインスタンスを作るトコから全て標準モジュールの処理で書かないといけない。


675:デフォルトの名無しさん
08/02/05 15:39:12
>>972-974
でけた^^
コードの書き方の問題なのかも分かりませんでした・・orz
ありがとうございました!

676:デフォルトの名無しさん
08/02/05 15:40:29
感謝まで明後日の方向向いているよ。どうしようもねぇな。

677:672
08/02/05 15:42:12
ワロタw


678:デフォルトの名無しさん
08/02/05 15:44:13
>>674
なんか勘違いしてない?
インスタンス化はアクセスされると自動的に行われるよ?

679:672
08/02/05 15:55:59
>>678
勘違い、つか、VBが特殊な使い方ができるだけで、
インスタンスを作ってから使うのが基本だと俺は思ってるから、自然とそういう書き方になった。
複数のインスタンスが持てないわけでもなし、何故突っ込まれるのかが分からんが。


680:672
08/02/05 16:00:40
>>678
あ、スマン、書き込んでから言いたい事が分かった・・・。確かに、勘違いしてるように見える。
申し訳ない。


681:デフォルトの名無しさん
08/02/05 16:04:15
少なくとも、VBA/VB6では、規定のインスタンス(暗黙のインスタンス化)を使うのが、
まぁデフォですので・・・。

682:デフォルトの名無しさん
08/02/05 16:16:38
Windows XP + Excel 2000SP3です。

MouseWheel Fixをアドインマネージャに起動時/ロードで設定すると、VBEを開こうとすると
「インストールの準備中」のダイアログが出て先に進みません。

ただ、なぜだかその状態で一度Excelを終了させてすぐに起動すると、そのダイアログが
終了してVBEが立ち上がるようになります。

「起動時/ロード」を設定せずに、Excel起動後にロードしようとしても、やはり最初の一回は
「インストールの準備中」から先に進みません。

何か、解決法はあるでしょうか?




683:デフォルトの名無しさん
08/02/05 16:40:58
自作のDLLをDeclareで参照して使うと、Excelを終了させないとDLLがアンロードされないみたいなんですが、
強制的にDLLをアンロードするにはどうすればいいですか?

684:デフォルトの名無しさん
08/02/05 16:57:04
>>683
日本語訳はヘンテコなんでこっちで。

PRB: Loading and Unloading DLLs in the Design Environment
URLリンク(support.microsoft.com)

685:≠683
08/02/05 17:17:18
つまり、Declare宣言を編集しようと試みると強制的にアンロードされるってことでいいのかな?

686:デフォルトの名無しさん
08/02/05 17:36:25
>>685
Declareの"r"を削除して行を離れると、強制コンパイルされてDLLがアンロードされるから、
その行に戻って"r"をタイプして元通りにしろってことね。

687:デフォルトの名無しさん
08/02/05 23:14:50
i = 3

Do While Cells(i, 1) = "東京"
If Range(i, 10) = 1 Then
Range("i" & Columns.Count).End(xlUp).Value = st4 & st5
st1 = Range(i, 8)
st2 = Range(i, 9)

With ws2.Range("A" & Rows.Count).End(xlUp)
.Offset(0.1) = st1
.Offset(0.2) = st2

End With

i = i + 1
Loop

恐れ入ります。
A列3行目から”東京”となっている間ずっと、
もしその行の10列目が”1”であるなら”1”の一つ右の行を確認、
空白だったらST4とST5の文字列を貼り付ける。空欄でなかったらさらに一つ右の行を確認・・・(ループ)
さらにST1、ST2の文字列を貼り付け・・・
というのをループさせたいのですが、

”1”の一つ右の行を確認、空白だったらST4とST5の文字列を貼り付ける。空欄でなかったらさらに一つ右の行を確認・・・(ループ)
の部分がよく分かりません。また、実行してみてもLOOPに対するDOが無いとのエラーになってしまいます。

おばかな質問で恐縮ですが、よろしくお願いします。



688:デフォルトの名無しさん
08/02/05 23:33:09
i=i+1の前に end ifがいる。

689:デフォルトの名無しさん
08/02/06 06:52:49
>>682
そんな現象なったことないが、原因分かんないならVectorとかで同種のソフト拾ってきて使えば?
もしくはExcelを再インストールして様子見るとか

690:デフォルトの名無しさん
08/02/06 09:48:27
>>682
他のアドイン機能はちゃんと動作するのか確認して、異常がないようなら
MouseWheel Fix を一旦登録解除(クラスライブラリ)してから、再登録してみたら?


691:682
08/02/06 10:50:25
>>689,690
コメントありがとうございます。

他のアドインは正しく動きました。また、MouseWheel Fixをregsvr32 /uして再登録してみたんですが
状況が改善しませんでした。

いろいろと検索していると、同種のアドインが見つかりましたので、それを試してみたらうまく
動作しているようなので、とりあえずはこちらを使うことにします。

AddAutoScroll for VB6/VBE6
URLリンク(homepage1.nifty.com)

692:デフォルトの名無しさん
08/02/06 11:30:49
OS vista
excel 2007

Dim i As Integer
Dim x(10), y(10) As Single
For i = 1 To 10
x(i) = i
y(i) = i
Next
Cells(1, 1).Value = Application.WorksheetFunction.LinEst(y, x)

linest関数を使いたいのですが、試しに上記のようなプログラムを作成したところ
肝心のlinest関数のところで「linestプロパティが取得できません」とエラーがでます
基礎的な間違いをしてる気がするのですが、どうかアドバイスをお願いします


693:デフォルトの名無しさん
08/02/06 11:53:18
  'テキストファイルを開きます。
  Workbooks.OpenText Filename:=strFileName, _
    Origin:=xlWindows, _
    StartRow:=2, _
    DataType:=xlDelimited, _
    TextQualifier:=xlNone, _
    ConsecutiveDelimiter:=False, _
    Tab:=False, Semicolon:=False, Space:=False, Other:=False, _
    Comma:=True, _
    FieldInfo:=Array( _
      Array(1, 2), Array(2, 1), Array(3, 2), Array(4, 2), Array(5, 2), _
      Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2), Array(10, 2), _
      Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 1), Array(15, 1), _
      Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 2), Array(20, 2), _
      Array(21, 2), Array(22, 2), Array(23, 2), Array(24, 2), Array(25, 2), _
      Array(26, 1), Array(27, 2), Array(28, 2), Array(29, 2), Array(30, 2), _
      Array(31, 2), Array(32, 2), Array(33, 2), Array(34, 2), Array(35, 2), _
      Array(36, 2), Array(37, 2), Array(38, 2), Array(39, 2), Array(40, 2) _
    )


上記処理にてWinXP SP2 Office2003 SP3環境では問題なくシート表示するのですが、
WinXP SP2 OfficeXP (SP状態は不明です)の環境では文字化けして表示されます。
化けるフィールドとしては2バイト文字のところで、
テキストファイルとしては半角カナも全角漢字も混在のCSVで
改行コード、文字コードはCRLFのSjisです。

原因と対策がよくわからなくて困っております。
何かご存知でしたら教えていただければ、と思います。
よろしく頼みます。



694:デフォルトの名無しさん
08/02/06 12:28:21
>>692
xの配列を渡さずに ~.LinEst(y) と書いたら動くから、パラメータの与え方が違うのかな?
スマンが使った事が無いので、識者を待つか、ヘルプを見れ。
URLリンク(office.microsoft.com)


695:692
08/02/07 07:29:16
すみません。
ただの宣言ミスでした。

Dim x(10) as single, y(10) As Single
としたら動きました。
>>694
どうもありがとうございます。
聞く時はもっと気を付けてからにしようと思います。


696:デフォルトの名無しさん
08/02/07 12:10:10

激しくスレ違いかもしれませんが、質問です。

PCゲームを多重起動しようと試みたのですがダメでした。
大抵のゲームはWindowsのアカウントを2つ作成し、別々のアカウントで起動すれば問題ありません。

現在、Vistaを使っているのでXPではどうなるかはわかりませんが(XPは右クリックから別ユーザーで起動が可能)、
Vistaでその手法をとる場合、runasコマンドを使用することになります。
しかしこのコマンドで別々に起動しても、後から起動したほうが無効になってしまいました。

で、ここからがわけわかめなのですが、同一のデスクトップからの起動はダメでも、
Windowメニュー→ユーザー切り替えをし、別々に起動すればうまくいきました。

この違いはいったいなんなのでしょうか?
 

697:デフォルトの名無しさん
08/02/07 13:28:40
RMTでもやんのか?

どちらにしても激しくスレ違いだから帰れ。

698:デフォルトの名無しさん
08/02/07 13:43:46
激しくスレ違いまで読んだ

699:デフォルトの名無しさん
08/02/08 10:06:37
激しくまで読んだ

700:デフォルトの名無しさん
08/02/08 22:02:52
sageがないので読んでない

701:デフォルトの名無しさん
08/02/09 15:17:19
Base64でファイル添付してメールを送りたいのですが、その方法があれば教えてください
CDO.Messageを使ってQuotedPrintableでの送信はできています

702:デフォルトの名無しさん
08/02/09 15:29:15
本文に追加すればいいことじゃないの

703:デフォルトの名無しさん
08/02/09 15:36:00
某エクセルスレで、以前に聞いたが全く回答の反応なしだったので、
ここでも、あまり、適切な話題ではないかもしれないが教えてくれ。
2002 + XP VBAマクロ、ドロップダウンリスト入力セル、関数式埋め込みセルが
あり、各ブックの大きさは700K〜2M程度の5つの同種類のブックを作ったのだが、
ブックによって、左下のステータスバーに(通常コマンドと表示されているところ)
が、セル移動で「再計算」が表示されるものと、「再計算」は表示されないものとの
2通りあるようになった。selection_changeイベント等求めている機能はいずれも
正常に動いている。

皆、コマンド、入力の表示のみで、再計算表示がされないようにしたいのだが、
どうしたらいいですか。


704:701
08/02/09 16:03:05
>>702
Excelでソケット通信も含めて自作しろといってるようにしか聞こえないが

705:デフォルトの名無しさん
08/02/09 16:32:41
某エクセルスレで、以前に聞いたが全く回答の反応なしだったので、
ここでも、あまり、適切な話題ではないかもしれないが教えてくれ。
2002 + XP VBAマクロ、ドロップダウンリスト入力セル、関数式埋め込みセルが
あり、各ブックの大きさは700K〜2M程度の5つの同種類のブックを作ったのだが、
ブックによって、左下のステータスバーに(通常コマンドと表示されているところ)
が、セル移動で「再計算」が表示されるものと、「再計算」は表示されないものとの
2通りあるようになった。selection_changeイベント等求めている機能はいずれも
正常に動いている。

皆、コマンド、入力の表示のみで、再計算表示がされないようにしたいのだが、
どうしたらいいですか。


706:デフォルトの名無しさん
08/02/09 16:34:13
>>704
最近のメーラは添付ファイルがアイコンなんかで表示されたりして隠蔽されて
いるけど,昔は送りたいバイナリをテキストにエンコードして文字通りメール
本文の下に貼り付けてましたよ。
↓こんなイメージ

-------ここから------------------------
encoded by なんちゃらかんちゃら
risdgfniefngoenogfaenogengopenoanongoneogneoagnoengea
fbwhibfiwbfiwbfiwbfiwbfibwibfiwbfiwbfiwbifbiwfbiwbfiw



707:デフォルトの名無しさん
08/02/10 03:48:29
OS XP、Offce 2003
A1には半角英数字のみが入ってるとします。
このファイルには複数シートがあり、全シートにA1には違う文字列があります。
各A1の文字や文字数はシート毎にバラバラですが、半角英数字は変わりません。

質問としては、各シートのA1内に入っている半角大文字のみ
それぞれのシートB2に出力するのは可能?可能ならばヒントをお願いしたい
です。

708:デフォルトの名無しさん
08/02/10 08:19:57
>>707
・セルA1内の文字列を取得する
・大文字があるか検索する
・文字列を組み立てる
・セルB2に設定する
・それらを全てのシートについて行なう

709:デフォルトの名無しさん
08/02/10 15:33:57
リテラルの中に、"(ダブルクォテーション)を含めるには、
どう書けば良いのでしょうか?



710:デフォルトの名無しさん
08/02/10 15:50:51
””

711:デフォルトの名無しさん
08/02/10 16:07:26
すいません。

A1からA4まで文章があります。

A2の横のセル(B2)にA4をカットペースト(A1A2A3は何もしない)をしたいのです。

For X = 1 TO 100 で
A 4*X+2の横のセル(B 4*X+2)にA 4*X+4をカットペースト
4*X+3 : 4*X+5 行を削除
Next i

というのをやりたいのですが、、初心者で分かりません。
特にセルのところをどうすればいいのか分かりません。教えてください。
どなたかお願いします。

712:デフォルトの名無しさん
08/02/10 16:11:50
Cells(r, c).Value

713:デフォルトの名無しさん
08/02/10 16:23:57
>>704
補聴器買ったほうがいいと思うよw

714:デフォルトの名無しさん
08/02/10 16:36:38
音は出てないから補聴器買ったところで聞こえようが無い

715:デフォルトの名無しさん
08/02/10 16:38:40
>>713

>>704 には幻聴が聴こえるようだから精神科を薦めた方が良いのでは?

716:デフォルトの名無しさん
08/02/10 16:56:47
そんなにいぢめてやらんでも・・・

717:デフォルトの名無しさん
08/02/10 17:02:23
わかんねーから教習所に通ってんのに、お前らはなんにも教えてくれない自動車教習所の教官。
へたっぴな運転を見てからかってる。

718:デフォルトの名無しさん
08/02/10 18:29:04
>>717
ウェ〜

719:デフォルトの名無しさん
08/02/10 18:47:18
違うな、教習場に行けばいいのにこんな場末の練習場に来ている阿呆を見に来ている暇人だな。

720:>711
08/02/10 20:01:51
やりたい事と合ってるかわ解らんが参考にしとくれ
行を削った後座標がズレるけど良いのか?

Sub TEST()
For I = 0 To 99
Cells(I + 4, 1).Cut Destination:=Cells(I + 2, 2)
Range(Rows(I + 3), Rows(I + 5)).Delete
Next I
End Sub

721:デフォルトの名無しさん
08/02/10 21:12:35
質問です。

例えば、Aの列にはデータを10〜20個入れたとして、
B1にデータ一個を入れます。
このとき、Cの列にはC1=A1-B1、C2=A2-B1・・・というように、
AのデータとB1の差を代入したいと思うのですが、簡単なやり方がわかりません。
確かコピペですいすいいけたと思うのですが・・・
ご教授お願いします。
使ってるのはXPsp1のexcel2002です。

722:デフォルトの名無しさん
08/02/10 21:28:24
>>721
減算で。

Sub test001()
Range("A1").Resize(20).Copy Range("C1").Resize(20)
Range("B1").Copy
Range("C1").Resize(20).PasteSpecial Paste:=xlPasteAll, Operation:=xlSubtract, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

723:デフォルトの名無しさん
08/02/10 21:29:34
For i=startRow To endRow
Cells(i,3).Value=Cells(i,1).Value-Cells(1,2).Value
Next

つかVBAの質問なの???

724:デフォルトの名無しさん
08/02/10 21:34:29
>>721
C1に=A1-$B$1
C1の右下つかんで下方向にびろ〜んとする

725:デフォルトの名無しさん
08/02/10 21:54:21
>>722>>723
すいません、理解できませんwww
>>724
ありがとうございます〜

726:デフォルトの名無しさん
08/02/10 22:09:59
>>720
ありがとうございます。。
というか自分、何やってんだorz

727:デフォルトの名無しさん
08/02/11 20:33:25
プログラミングは詳しくないのですが、どなかたご助力下さい。
(質問内容)
フォルダ内で「読取パスワードが設定されいてるEXCELファイルを検索する」

どなかた該当の命令文をおしえていただけないでしょうか。

728:デフォルトの名無しさん
08/02/12 03:00:10
DOS窓を表示させないまま、DOS窓のコマンド使って標準出力の内容が欲しい場合ってどうすればいいですか?
Execだとウィンドウ非表示にできないし、Runだと標準出力につなげないんですが

729:デフォルトの名無しさん
08/02/12 03:19:36
>>728
FAQ

730:デフォルトの名無しさん
08/02/12 03:55:12
ぐぐれ
コンソール プロセスを生成して標準ハンドルをリダイレクトする方法

731:デフォルトの名無しさん
08/02/12 04:04:03
KB173085

732:デフォルトの名無しさん
08/02/12 07:47:07
いまだにDOS窓とか使ってるやつおるんかねぇ

733:デフォルトの名無しさん
08/02/12 09:13:59
>>732
GUIがないソフトがあるんで使ってる。

734:デフォルトの名無しさん
08/02/12 12:20:00
DOS窓とコマンドプロンプトは別物

735:デフォルトの名無しさん
08/02/12 12:20:53
と言うか、WinXPにDOS窓って存在するの?

736:デフォルトの名無しさん
08/02/12 12:53:06
>>735
アレを、ほとんどの人はDOS窓と呼ぶのだ。

737:デフォルトの名無しさん
08/02/12 13:12:58
二つのテキストファイルABを読み取り比較した結果を表示するマクロを作りたい。
Aに行が挿入されてBになっている場合、Aにも挿入した分だけ空白行を入れて表示したいが、いい例はないものか。

738:デフォルトの名無しさん
08/02/12 13:21:08
つ[/usr/bin/diff]

739:デフォルトの名無しさん
08/02/12 13:25:56
Excel VBAスレでその回答はどうだろう

740:デフォルトの名無しさん
08/02/12 13:33:00
抽象的な質問には抽象的な回答を。

741:デフォルトの名無しさん
08/02/12 14:05:52
W9x Wme の DOS 窓は文字通り DOS 窓って言って良いんだけど
コマンドプロンプトは DOS とは互換性がないからなぁ

742:デフォルトの名無しさん
08/02/12 14:08:38
コマンドプロンプトってDOSのエミュレートじゃないの?
DOSプログラムは、コマンドプロンプトでは動かないの?

743:デフォルトの名無しさん
08/02/12 14:12:13
DOSプログラムも動くからDOS窓でいいじゃん

744:デフォルトの名無しさん
08/02/12 14:12:41
>>271
本尊乙

745:デフォルトの名無しさん
08/02/12 18:44:34
質問です。
以下のが「スタック領域が不足しています」で通りません。
多分再帰が問題なんだろうけど、よくわかりません。
VistaのExcel2007です
If文以降に問題があると思うんですけど…

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ein As Integer
Dim Fin As Integer
Dim Year As Integer
Dim Month As Integer

Year = Range("C2").Value
Month = Range("E2").Value

Ein = Weekday(Year & Month & "1", 1)

Cells(5, 1 + Ein) = ("1")

If Month = 2 Then
Fin = 28
Else
Fin = 31
End If

Cells(10, 10).Value = Fin
End Sub

746:デフォルトの名無しさん
08/02/12 18:50:08
>>745
Application.EnableEvents = False
Cells(5, 1 + Ein) = ("1")

If Month = 2 Then
Fin = 28
Else
Fin = 31
End If

Cells(10, 10).Value = Fin
Application.EnableEvents = True


747:デフォルトの名無しさん
08/02/12 19:01:08
>>746
ありがとうございますm(_ _)m
おかげさまで解決しました

748:デフォルトの名無しさん
08/02/12 19:04:58
>>742
コマンドプロンプトは純粋なWin32プログラム。
仕様面でDOSの流れを大きく受け継いでいるけど。

コマンドプロンプトの中でDOSプログラムを動かすときには、
NTVDM (NT仮想DOSマシン)でDOS環境をこさえて、
その中でcommand.comを起動し、それから目的のプログラムを実行する。

それ以外だと直接NTVDMから始まるが後は同じ。

749:デフォルトの名無しさん
08/02/12 22:45:34
コマンドプロンプトとDOS窓の区別が付いてないやつはVBAとマクロの区別も付いていない

間違いない

750:デフォルトの名無しさん
08/02/12 23:45:26
>>727
無理せずテンポラリファイルにリダイレクトして読め

751:デフォルトの名無しさん
08/02/12 23:45:31
んなもん、どーでもいい。

752:デフォルトの名無しさん
08/02/13 10:24:27
>>738
それをEXCEL VBAでやりたい。
(UNIXでやれよ、というのは不可)

753:デフォルトの名無しさん
08/02/13 10:43:48
>>752
行が挿入されたものか、一部改変されたものかの判断って、どうやるつもり?
判別の難しさと、それに伴う処理速度考えたら現実的じゃないと思うが。
前後データまで絡める判別はVBでは実用的じゃないし、ロジックの問題なら他スレ行け。


754:デフォルトの名無しさん
08/02/13 11:22:17
>>752
私だったらピボットテーブル使う。
それぞれのテキストをA列に、B列にはどっちのテキストなのかわかる記号を入力しとく。後はわかるでしょ。

755:デフォルトの名無しさん
08/02/13 11:34:02
diffのソース読めばいいよ

756:デフォルトの名無しさん
08/02/13 12:21:30
アドバイス多謝。

>>753
>行が挿入されたものか、一部改変されたものかの判断って、どうやるつもり?

一部改変については、次の行を比較して、一致なら改変、そうじゃなければ挿入と考えるつもり。
(二行改変は考慮しない)

問題は、挿入か削除か。
そのセルを上方検索し、見つかれば削除、でなければ挿入って判断かな。

ロジックってこの板?

757:デフォルトの名無しさん
08/02/13 12:47:07
他人を巻き込んでダラダラやらずに、diffのソース読んだほうが早いって

758:デフォルトの名無しさん
08/02/13 13:14:21
shell c:\windows\windiff.exe

759:デフォルトの名無しさん
08/02/13 16:50:59
つfc.exe

760:デフォルトの名無しさん
08/02/13 16:52:35
"c:\program files\support tools\windiff.exe" /?

761:デフォルトの名無しさん
08/02/13 23:07:24
良回答認定>>760

だがスレ違い

762:デフォルトの名無しさん
08/02/14 09:57:51
>>758-760
神認定


と思って報告したら、
「入ってるPCと入ってないPCがある」と言われたorz

763:デフォルトの名無しさん
08/02/14 23:26:24
winmerge

764:デフォルトの名無しさん
08/02/15 23:36:29
cdiff.vbs

765:デフォルトの名無しさん
08/02/16 12:41:39
2つのExcelファイルをdiffするのをVBAでやりたいのですが?

766:デフォルトの名無しさん
08/02/16 12:47:32
やればぁ?

767:デフォルトの名無しさん
08/02/16 13:34:31
やってくださいよ

768:デフォルトの名無しさん
08/02/16 17:25:09
つc:\program files\support tools\bdiff.exe

769:デフォルトの名無しさん
08/02/16 18:52:16
エクセルの機能にある、「Webページとして保存」ではなく

1.htmlを記述してあるシートをコピー
2.メモ帳に貼り付け、test.txtとして保存。
3.2のtest.txtをtext.htmlに名前を変更。

というような動作をVBAで自動化できるでしょうか。
もし、似たようなことが可能であれば教えてください。

770:デフォルトの名無しさん
08/02/16 18:58:33
できるけどエクセルでやるようなこと?

771:デフォルトの名無しさん
08/02/16 19:05:58
メモ帳を自動化するのはむずかしい

772:デフォルトの名無しさん
08/02/16 19:12:24
セルの内容をそのままファイルに出力すればいいんじゃ?

773:デフォルトの名無しさん
08/02/16 19:16:09
>>769
シートの内容をプレーンテキストに出力して拡張子を.htmlにしたいなら
メモ帳なんて使うまでもないが、770も言ってるとおりExcelの仕事じゃない
>>2★3,4

>>771
vbsとかで自動化するのは難しいけど
VBAというかVB言語ではSendMessage使えるから簡単だよ

774:769
08/02/16 19:51:14
ありがとうございます。
具体的な目的を言うと、複数の条件でhtml記述を変化させている
シートがありまして、そのhtmlをブラウザでプレビューするのを
先ほどの手順でやっていたのですが、それを簡素ができないものか
と思っていたのです。
もう少し考えて見ます。


775:デフォルトの名無しさん
08/02/16 23:19:25
>>772じゃ駄目な理由をまず聞こうか。

776:デフォルトの名無しさん
08/02/17 00:02:38
簡単なSendMessageを使ってもらおうか

777:デフォルトの名無しさん
08/02/17 13:24:27
教えてください!
Excel2007のOfficeボタンを非表示にする方法ってあるのでしょうか?
マイクロソフトのライブラリを見てもまだ情報がなくて……。どなたかご存知の方ご教授いただけませんでしょうか。

778:デフォルトの名無しさん
08/02/17 15:37:44
Officeボタンとは何かというところから解説してください

779:デフォルトの名無しさん
08/02/17 15:39:09
OS:XP、Excel2000でワークシート関数を使用したいと思います。
引数にシート範囲ではなくVBAの配列を指定したいのですが
そのままでは出来ません。
引数に配列を指定する方法があれば、ご教授願います。

dim a(10) as long
dim b as long

b = WorksheetFunction.Max(a)

780:デフォルトの名無しさん
08/02/17 16:09:12
>>778
「Officeボタン」とはExcel2007から追加された、いままでで言う「ファイル」メニューのようなGUIになります。
新しく追加されたGUIのため、Officeボタンのオブジェクトライブラリを操作すれば非表示にすれば良いのか、xmlを編集すれば操作できるのかどうしても判らないんです。
ご存知でしたらご教授戴けると幸いです。


>>779
動的配列のサマリを計算するメソッドのようなものがあればそれを代用すれば良いのかもしれませんが、
自分には以下のような方法でいつも計算させてしまっています。

Sub subTEST()
Dim a(10) As Long
Dim b As Long

For inCnt = LBound(a) To UBound(a)
b = WorksheetFunction.Max(a(inCnt))
Next a
End Sub




781:デフォルトの名無しさん
08/02/17 19:13:16
>>780
ご回答ありがとう御座います。
ただ、そのコードだとa(10)の値がbに入るだけではないでしょうか?

782:デフォルトの名無しさん
08/02/17 20:41:33
>>780
なるほど
あいにく2003なので力にはなれません
でもApplicationクラスのどっかにCommandBarsみたいにあると思うから、
地道に探してみるしかないんじゃ

783:デフォルトの名無しさん
08/02/18 14:43:42
zzって何者?
ヴァッカじゃねーのwww
氏ねよwww

チラシの裏でスマソ

784:デフォルトの名無しさん
08/02/18 15:39:11
>>781
たまたま>780がmax()の仕様を知らなかっただけだろ。
どうしてもワークシート関数を使いたいなら配列を1要素ずつ処理すればいいと言う点では同意。
max()の場合なら、b = worksheetFunction.max(a(inCnt), b)とでもすれば使える。
# average()なんかはそうはいかないけど。

785:デフォルトの名無しさん
08/02/20 07:04:05
関数の引数にセル位置を「A1」の形式で入れたいとき、
行を変数にはできないんでしょうか?
たとえば変数xをSUM関数につかう場合、=SUM(A1:Ax)としてもエラーになりますよね・・

786:デフォルトの名無しさん
08/02/20 08:08:49
このすれ頭から読み直せ


787:デフォルトの名無しさん
08/02/20 11:53:43
HYPERLINK関数で質問です。
HYPERLINK関数では、特定の文字を含むリンクは張れないのでしょうか?

現在、HYPERLINK関数を用いたシートの目次を、
マクロで作成しております。
ですが、シート名に記号を含むと参照できないようです。
(@や#などほとんどの記号は駄目ですが、
 アンダーバーだけは大丈夫なようです・・・。)

しかし、マクロではなく、編集メニューの
[挿入]→[ハイパーリンク]から同じシートを指定した場合は、
参照できるようですorz
これら2つの操作は全く別物なのかもしれませんが・・・orz

---------------------------------------------
<参照できる例>
=HYPERLINK("#シート名!A1", "シート名")

<参照できない例>
=HYPERLINK("#@シート名!A1", "@シート名")

Excelのバージョン:2002(10.2614.3311)
---------------------------------------------

参照できない例のようなシート名で、
HYPERLINK関数で参照する方法はありますでしょうか?

何かわかる方がおられましたら、ご助言ください。
よろしくお願いします。

788:デフォルトの名無しさん
08/02/21 12:29:39
Officeボタンも知らないヤツが、質問スレで回答側に回ろうとするなよw

789:デフォルトの名無しさん
08/02/21 13:27:23
目先の問題の回答は出来なくても質問の仕方を教えるのはできるだろ

790:デフォルトの名無しさん
08/02/21 19:44:50
エクセルで計算した数値は少数桁何桁精度なのでしょうか?

791:デフォルトの名無しさん
08/02/21 19:59:12
3桁

792:デフォルトの名無しさん
08/02/21 20:11:40
>>790
IEEE 754倍精度はある。

793:デフォルトの名無しさん
08/02/21 23:07:20
Perlについての質問箱スレから誘導されて来ました。
Excel VBAからDOSコマンドを実行することはできますか?
具体的にはPerlスクリプトを実行させて、結果をExcelで受け取って
表示するまでを1クリックで行いたいと思っています。
環境はWindowsXP Home Edition、Excel 2003 です。
よろしくお願いします。

794:デフォルトの名無しさん
08/02/21 23:51:57
>>793
>Excel VBAからDOSコマンドを実行することはできますか?
ちょいと命令忘れたができる。
VBAからPing送ったりbatを呼び出したりしたりもできるから間違いない。

>具体的にはPerlスクリプトを実行させて、結果をExcelで受け取って
>表示するまでを1クリックで行いたいと思っています。
上の内容を具体的にしたつもりだろうが、上ができたとしてもこちらは関係ないだろ?
PerlからExcelにイベントでも起こさせられれば可能。

795:デフォルトの名無しさん
08/02/22 00:06:30
XPにDOSは載ってません

796:793
08/02/22 01:09:30
>>794
ありがとうございます。では情報があることを信じて
再びgoogleの海へと漕ぎ出すことにします。
>上ができたとしてもこちらは関係ない
言われてみたらその通りでした。
いつPerlの処理が終わったかExcel側で知る必要がありますもんね。

>>795
すみません、XPではコマンドプロンプトでしたか。

797:デフォルトの名無しさん
08/02/22 01:46:04
>>793
>>728-731

798:デフォルトの名無しさん
08/02/22 02:00:35
active perlはどう?

799:デフォルトの名無しさん
08/02/22 12:22:22
>>792
つまり何桁ですか?

800:デフォルトの名無しさん
08/02/22 20:07:05
>>792
倍精度の前のIEEE 754って、何を規定した規格の番号ですか?

801:デフォルトの名無しさん
08/02/22 21:39:25
>>800
ググれ
浮動小数点数の規格だ

802:デフォルトの名無しさん
08/02/22 23:55:17
>>800
Excel2000辺りは倍精度だけど、2003辺りからは拡張倍精度になっているから要注意。
前者は10進数で概ね15桁、後者は10進数で概ね19桁の精度があることになる。

803:693
08/02/23 16:40:39
解決したよ。

Origin句を定数xlWindowsから、
Shift-Jisのコードページである"932"へ変更してみたところ
文字化けなく開くことができたのでご報告。

その辺の細かな挙動の違いにだいぶ時間使いました・・・。
今後の何かの参考になれば、ということで、ひとつ。

804:デフォルトの名無しさん
08/02/23 16:45:14
VBAやEWCELのlog関数で計算して、その答えから逆算してもとに戻してみたら3桁精度しかなかったのです。
精度をあげる方法がありましたら教えてください。

805:デフォルトの名無しさん
08/02/23 18:30:23
寡聞にしてEWCELなるものは存じ上げませんが、VBAでやってみたということでしたら
ソースをご提示願えませんでしょうか。

806:デフォルトの名無しさん
08/02/23 18:44:19
EXCELの前身のアプリじゃね

807:デフォルトの名無しさん
08/02/23 20:11:53
WinXP+Office 2k7です。
ワークシート上部のいくつかのセルに任意の数値を入力するとそれに基づいて全体が計算されるシートを作りました。
B8というセル(自分で数値を入力する)の値がいくつならセルI818が0になるか、というのを探すためにLoopを使ったのですが、

Dim x As Integer
x=0.1
Do
x=x+0.0001
Range("B8").Value=x
Loop Until Range("I818").Value=0

とやってもI818が0になっても普通に通り過ぎてしまいますorz
ひょっとしてワークシート上でI818が計算されるのを待たずにLoopが続いてしまうんでしょうか。。?
お知恵をお貸しください

808:デフォルトの名無しさん
08/02/23 20:23:28
お前、小卒か?
整数って意味を知ってるか?

809:デフォルトの名無しさん
08/02/23 20:28:32
あ、integerじゃなくてdoubleでした。
こっちに書くとき間違えた\(^o^)/

810:デフォルトの名無しさん
08/02/23 20:33:09
> B8というセル(自分で数値を入力する)の値がいくつならセルI818が0になるか
自分でマクロ書かなくても、それはExcelのゴールシークを使えばいいのではないかと思う。

811:デフォルトの名無しさん
08/02/23 20:36:45
>>810
うは・・・全然知りませんでした('A`)
お手数おかけしました。ありがとうございます

812:デフォルトの名無しさん
08/02/24 11:00:13
すれ違いでしたら誘導お願いします。
「マクロを有効化する」を出さずfor文相当の機能を実現しようと思ってます。
直接forは使えないので、富豪的にセルのマスを記憶装置にする方針です。

やりたいことは、以下の状況で
「列Bが「新」の行の数値を抜き出して
それをコンマで連結して指定のセル(例えばD100)に入れる」です。
 列A 数値(1ずつ増えていく)
 列B 「新」「旧」のどちらかの文字

一旦、以下の式をC列に入れて、ドラッグでオートフィルします。
=if(B1="新",A1,"")
これはうまく行き、C列には「新規」の行のみに数値が表示されます。
次に、D列の先頭にC1の値を入れます(forの初期条件)
次に「同じ行のC列に値があれば、一つ上のD列の値をコンマで連結」
  「同じ行のC列に値がなければ、一つ上のD列の値をそのまま表示」
をforのステップ条件としてD2にかき、D100へオートフィルしようとしたのですが
=CStr(D1) & "," & CStr(C2)やCStr(val(D1)) & ..といった式ではうまくいきません。
アドバイス頂けないでしょうか

以上長文失礼しました。

813:812
08/02/24 11:03:55
↑訂正「新規」ではなく「新」ですね

814:デフォルトの名無しさん
08/02/24 11:37:49
Vlookupじゃね?

815:デフォルトの名無しさん
08/02/24 12:12:23
>>804

> VBAやEWCELのlog関数で計算して、その答えから逆算してもとに戻してみたら3桁精度しかなかったのです。
log関数は数値が小さいと精度は悪くなる。
少し値が変わると急激に値がかわるからな。    
自分で精度のよい関数を作るのがよい。
級数展開とかやれば作れる。

>>805-806
おまえら厨房だな。

816:デフォルトの名無しさん
08/02/24 13:44:03
質問なのですが適当な大きさのユーザーフォームを作成してフォームの中にラベルや
ボタンを設置します。設置したラベルやボタンが常にフォーム幅の真ん中に設置
させる方法はありますでしょうか?フォームの大きさを後で変更しても真中に自動で
なるようにしたいです。

817:812
08/02/24 15:25:46
>>814
それだとコンマをくっつけることができませんでした。
しかし、結局、こんな感じで解決しました
if(C2<>"",concatenate(D1,",",text(C2,"#")),D1)


818:デフォルトの名無しさん
08/02/24 21:05:38
>>816
算数レベルで処理


819:800
08/02/24 22:00:00
>>802
Thanks。概ねという留保付けは、このせいですか?
Excel で浮動小数点演算の結果が正しくない場合がある 2007年3月19日
URLリンク(support.microsoft.com)

820:デフォルトの名無しさん
08/02/24 22:38:32
816さんどーゆうことですか?


821:802
08/02/24 22:49:22
あーそうそう、そこの精度の欄にある、暗黙と仮数を足した53ビットを10進で表わすと概ね15桁ってこと。
つまり、log2(2^53)≒15.95=15~16桁。

822:デフォルトの名無しさん
08/02/25 10:04:55
教えていただきたいのですが、エクセルで、Aの列に任意のセルのカーソルが
ある場合のみ(B列やC列ではプログラム自体が稼動しなくしたいのですが)
FANCTIONを実行したいのですが、うまくいきません。
どうしたらうまくうごくのでしょか?


823:デフォルトの名無しさん
08/02/25 11:18:34
>>822
もうちょっと分かるように説明しる。あと、どんなFUNCTIONよ?
ボタン押したときに、カーソルが特定の列にある場合にのみ処理を有効にしたいってことか?


824:デフォルトの名無しさん
08/02/25 11:38:48
822です。
>カーソルが特定の列にある場合にのみ処理
まさにこの事です。エクセルの行列のデーター
をVBで計算させてるのですが、キーの列をA列にして
そこからActiveCell.Offset(0, x)とActiveCell.Offset(0, x+1)
を足してActiveCell.Offset(0, x+2)へ答えを出しなさいとしてるのですが、
いかんせん、キーにしているA列以外にセルがある場合も実行していまうので
ActiveCell.Offset(0, x+2)の書き込みたいところデーターのあるActiveCell.Offset(0, x+3)
とかに上書きしていまうので、何とかしたいのです。FANCTIONは
ActiveCell.Offset(0, x+3)=ActiveCell.Offset(0, x)+ActiveCell.Offset(0, x+2)
を変数にしたものです。


825:デフォルトの名無しさん
08/02/25 11:42:10
すいません。間違いました。FANCTIONは
ActiveCell.Offset(0, x+2)=ActiveCell.Offset(0, x)+ActiveCell.Offset(0, x+1)
を変数にしたものです。
です。




826:デフォルトの名無しさん
08/02/25 12:17:05
>>825
単にFANCTIONとやらの先頭で、ActiveCellがA列じゃなければ終わればいいだけじゃね?

827:825
08/02/25 12:58:53
ActiveCellがA列じゃなければが、
書けないのです・・・


828:デフォルトの名無しさん
08/02/25 13:12:22
そもそも>824のxはどこから出てきたのか知らんが、
offsetプロパティに辿り着けるくらいならcolumnプロパティくらい見つけられるだろ。
試しにmsgbox activecell.columnして味噌。


829:825
08/02/25 14:11:10
If ActiveCell.Column = 1 Then で出来ました!
828さん ありがとうございます。
感謝 感謝!


830:デフォルトの名無しさん
08/02/25 15:57:11
基本的な質問でスミマセン!
ワークシートに新しい埋め込みグラフを作成(Addメソッドによる)したいのですが

Dim co As ChartObject
Set co = Worksheets("sheet1").ChartObjects.Add(50, 40, 200, 100)

は正常に動くんですが

Worksheets("sheet1").ChartObjects.Add(50, 40, 200, 100)

は、構文エラーになります。なんで?
わざわざ変数に格納しないと、機能しないのはなぜなのでしょうか?
詳しい人おられましたらご教授いただけないでしょうか?

831:デフォルトの名無しさん
08/02/25 16:00:26
そういう構文だからだろ。疑問を持つところじゃない。

832:デフォルトの名無しさん
08/02/25 17:16:37
Rng AS Range
Rng1 AS Range
Rng2 AS Range

Rng=Range("A1:G10")

このRngから一番右の範囲をRng1に入れたい。
またRngから一番右の列を除いた範囲をRng2に入れたい。

どのようにすればよいでしょうか?

833:デフォルトの名無しさん
08/02/25 18:32:27
union

834:デフォルトの名無しさん
08/02/25 18:45:36
>>830
Callステートメント

835:デフォルトの名無しさん
08/02/25 18:49:27
>>832

Rng1=Rng.Resize(Rng.Row.Count-1,Rng.Columns.Count).offset(1,0)
Rng2=Rng.Resize(1,Rng.Columns.Count).offset(1,0)

836:デフォルトの名無しさん
08/02/25 22:51:26
>>830
Worksheets("sheet1").ChartObjects.Add 50, 40, 200, 100

837:デフォルトの名無しさん
08/02/25 23:07:06
ところで君たちは未だにVB独特のハンガリアン記法を守っているのかい?
今度VBAをメンテすることになって読みにくいなあと思ってるんだが・・・。


838:デフォルトの名無しさん
08/02/25 23:21:31
なんでExcelでシステムハンガリアン使うん?

839:デフォルトの名無しさん
08/02/25 23:40:24
>>835
はぁ?

>>832
Set Rng1 = Rng.Columns(Rng.Columns.Count)
Set Rng2 = Rng.Resize(, Rng.Columns.Count - 1)

840:デフォルトの名無しさん
08/02/25 23:55:21
質問です、デスクトップでユーザーフォームだけ残してエクセルは最小化する方法はありますでしょうか?

841:デフォルトの名無しさん
08/02/26 00:00:18
任意のxisファイルを2個各シートに読み込みたいのですが
どうやってもできません・・・
ファイルの読み込みってどうやればいいのでしょうか?

842:デフォルトの名無しさん
08/02/26 00:17:49
>>841
ブックを開いておいて、シートを移動すれば医院で内科医。

843:デフォルトの名無しさん
08/02/26 00:27:13
vbaを使用してRS232cで計測するはめになったんですが、エクセルのvbaはvb6のようなタイマがないので、
擬似的なタイマを作成するときに、何か注意点とか欠点教えてください

844:デフォルトの名無しさん
08/02/26 00:28:18
ご愁傷様。

845:デフォルトの名無しさん
08/02/26 00:30:47
>>842
VBAでボタンでファイルを選択って出したいのです!
でも参照とか選択ってBOXの出し方すら分かりません・・・

846:デフォルトの名無しさん
08/02/26 00:56:58
>>845
ファイルを開くダイアログ
URLリンク(www.serpress.co.jp)

847:デフォルトの名無しさん
08/02/26 01:14:15
質問です、デスクトップでユーザーフォームだけ残してエクセルは最小化する方法はありますでしょうか?

848:デフォルトの名無しさん
08/02/26 01:15:58
>>846
おお、これでBOX造れるんですね!どうも!
またちょっと頑張ってみます

849:デフォルトの名無しさん
08/02/26 07:10:38
>>847

こういう事?

Private Sub UserForm_Initialize()

Application.Visible = False
UserForm1.Show

End Sub

850:デフォルトの名無しさん
08/02/26 08:29:10
Dim a As Integer
a = Count("a1:a4")
For i = 1 To a
Beep
Next i

シートのデーター数だけ繰り返し処理したいのですが
a = Count("a1:a4")ここんとこがエラーになってしまいます。
どう処理したらいいのでしょう?




851:デフォルトの名無しさん
08/02/26 12:43:24
a = WorksheetFunction.Count(Range("a1:a4"))
でどう?
試してないけど。

852:デフォルトの名無しさん
08/02/26 16:50:49
851さん 850です。動きましたありがとうございました。


853:デフォルトの名無しさん
08/02/26 19:00:35
Renge(RefEdit1.Value)と使いたいのですが
RefEdit1.Valueを『セル範囲』かどうか調べる方法はありますでしょうか?
よろしくお願いします。

854:デフォルトの名無しさん
08/02/26 20:10:29
フォームから入力するVBAを作成しました。
プログラムを走らせ、フォームがでますが、
何も入力せずに放置するとFrame内だけが白くなります。
改善する方法はありますでしょうか?

855:デフォルトの名無しさん
08/02/26 21:57:03
830です。
>>834 さん
なるほど!。値を渡す構文になってしまっていたのですね!
>>836 さん
本当だ!動きました。ありがとうございました。
834さん。836さん。お陰様で疑問が解決しました。感謝!感謝!


856:デフォルトの名無しさん
08/02/26 22:29:04
>>854
気にすると体に毒だぞ

857:デフォルトの名無しさん
08/02/27 09:51:07
>>856
つまり対策はないと?

858:デフォルトの名無しさん
08/02/27 09:52:18
モニタの色温度を変えると白を赤っぽく変えたりできるよ

859:デフォルトの名無しさん
08/02/27 18:33:00
>>857
俺ら低レベルではわからないんだよ。

860:デフォルトの名無しさん
08/02/27 21:33:21
>>854
再現する最低限の構成で、ブックもしくはユーザーフォームモジュールをうp
情報全く無しじゃ、さすがに改善法どころか改善可能か否かすらもわからんわな

861:デフォルトの名無しさん
08/02/27 23:22:06
俺らはそれだけVBAをさわってないってことさ。


862:デフォルトの名無しさん
08/02/28 00:26:29
現実の出来事かどうかすらあやしい

863:デフォルトの名無しさん
08/02/28 05:23:21
他のフォームでも同じ現象になるのか検証したの?

864:デフォルトの名無しさん
08/03/01 04:27:20
エクセルで作った表を画像として保存するマクロってありますかねぇ?

865:デフォルトの名無しさん
08/03/01 04:55:31
>>864
VBAの範囲だけじゃ無理だけど実現可能

866:入院中の側近 ◆0351148456
08/03/01 08:15:23
>>864
(っ´▽`)っ
暇なので作ってみたよ☆

Option Explicit

Private Declare Function GetVersionExA Lib "KERNEL32.DLL" ( _
  ByRef pVersionInfo As OSVERSIONINFO _
) As Integer
Private Declare Sub keybd_event Lib "USER32.DLL" ( _
  ByVal bVk As Long, _
  ByVal bScan As Long, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long _
)
Private Const VK_SNAPSHOT As Long = &H2C
Private Const VK_MENU As Long = &H12
Private Const KEYEVENTF_KEYUP As Long = &H2

Private Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128
End Type

(次レスに続く)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4790日前に更新/253 KB
担当:undef