Excel総合相談所 39

このエントリーをはてなブックマークに追加
941名無しさん@そうだ選挙にいこう:2005/12/07(水) 16:07:07
>>940
ツールバーをリセットする
方法は・・・・・ググれ
あるファイルを消すだけだからな


つーかVBA入門書1冊書けるだけのレベルって結構スゲーなw
942940:2005/12/07(水) 16:24:01
>>941
解決しました。ありがとうございました。

はい、読んだだけです。3時間程度で読めるやつをw
943名無しさん@そうだ選挙にいこう:2005/12/07(水) 17:35:06
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 NO
【4 VBAでの回答の可否】 否

A  B
1番 山田
2番 山本
3番 山下

既に入力済みがあり、以降 Aに1番と入れるとBに山田。これの逆で、Bに山田と入力すると1番。
と出るようにしたいです。どのようにしたら良いのでしょうか?
944名無しさん@そうだ選挙にいこう:2005/12/07(水) 18:15:31
【1 OSの種類         .】 Mac OS 10.3
【2 Excelのバージョン   】 Excel2004
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可

次のような駅伝タイムの表を作りました。
http://img218.imageshack.us/full.php?image=book16pz.jpg
今回のデータを入れると最速記録を超える記録を入力した場合、最速記録が自動更新されるようにしたいです。

画像での説明ですと、C2に今回のAさんの記録「53」を入力します。
Aさんの最速記録は「56」で、最速記録より早くなったので、今回入力の「53」が
B2の最速記録に自動的に書き換わって欲しいです。

Bさんの場合、逆にタイムが悪くなったので、最速記録の時間は変わらない。
Cさんの場合もタイムに差が無いので、最速記録は換わらない。

欲を言えば、最速記録よりも10%遅くなった場合に「反省点の記入:」というようにDに表示させたいです。
よろしくお願いします。
945931:2005/12/07(水) 18:24:48
>>933-934
有難うございます。出来ました。
946名無しさん@そうだ選挙にいこう:2005/12/07(水) 18:42:59
>>943
MATCHとINDEXで一致行対象列の値を返す式を
A列B列双方に入れておけば可能
ただし循環参照になるので、オプションで反復計算設定必須

あと、当たり前だがA4に2番と入力して、B4に山本が返された後
B4を山下に修正してもA4は2番のままで山下に対応する3番にはならない

そういう部分や反復計算でエラーが返るのが不満ならVBAだな

>>944
Mac+Excel2004の環境がないから動くかわからないが
Winだとこれで記録更新時の書き換えと、10%以上遅くなった場合の処理が出来る

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("C2:C4")) Is Nothing Then
  If Target.Value < Target.Offset(0, -1).Value Then
   Target.Offset(0, -1).Value = Target.Value
  ElseIf Target.Value >= Target.Offset(0, -1).Value * 1.1 Then
   Target.Offset(0, 1).Value = "反省点の記入:"
  End If
 End If
End Sub
947名無しさん@そうだ選挙にいこう:2005/12/07(水) 18:53:30
【1 OSの種類         .】 Windows XP Pro SP2
【2 Excelのバージョン   】 Excel 2003 SP1
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 Excel MSComm
PC1: Excel使用
PC2: シリアル通信ソフト使用
PC1からPC2に以下のプロシージャで"hoge"が送れました。
Private Sub Command1_Click()
Set mscomm1 = CreateObject("MSCOMMLib.MSComm.1")
mscomm1.CommPort = 1
mscomm1.Settings = "9600,N,8,1"
mscomm1.PortOpen = True
mscomm1.Output = "hoge"
mscomm1.PortOpen = False
End Sub
PC2からデータを受け取ろうと、以下のようにDo...Loopを使ったところ、
負荷がかかりすぎるようでExcelが応答なしになってしまいます。
どのようにすればよいか教えてください。
Private Sub Command1_Click()
Set mscomm1 = CreateObject("MSCOMMLib.MSComm.1")
mscomm1.CommPort = 1
mscomm1.Settings = "9600,N,8,1"
mscomm1.PortOpen = True
mscomm1.Output = "hoge"
Do Until mscomm1.CommEvent = comEvReceive
Loop
MsgBox mscomm1.Input
mscomm1.PortOpen = False
End Sub
948943:2005/12/07(水) 19:07:49
>>946
MATCHとINDEXで試してみました、今確認した限り問題はありません。
もし、不満等出てきたらVBAを勉強しようと重います。どうもありがとうございました。
949名無しさん@そうだ選挙にいこう:2005/12/07(水) 19:12:31
>946
ありがとうございます!!!
950名無しさん@そうだ選挙にいこう:2005/12/07(水) 19:16:48
>>947
> Do...Loopを使ったところ、
> 負荷がかかりすぎるようで
ループの中が空なんだから当たり前だろ
mscomm1.CommEvent = comEvReceive
の比較演算を、一致するまで絶え間な繰り返せって命令してるんだからな

WaitかAPIのSleepでも入れなよ
951名無しさん@そうだ選挙にいこう:2005/12/07(水) 21:42:04
1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel 2003
【3 VBAが使えるか    .】 否
【4 VBAでの回答の可否】 可
【5 検索キーワード     】

棒グラフ上に、統計で使う有意差があることを示す記号をつけるには
どのようにしたらよいのか教えて下さい。記号の名前がわからないのですが、
[ を横にしたようなものに、*がついているものです。
拙い質問ですみませんがよろしくお願いします。
952名無しさん@そうだ選挙にいこう:2005/12/07(水) 21:49:13
1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel 2002
【3 VBAが使えるか    .】 初心者

Dim R As String
R = "Range("A3", Range("A65536").End(xlUp))"

これだと、コンパイルエラーが出ます。
ヘルプると「プロシージャ呼び出しで、かっこが正しく使用されていません」とのことですが、何が悪いんでしょうか?
953名無しさん@そうだ選挙にいこう:2005/12/07(水) 22:05:17
>>951
Excelには用意されてないのでオートシェイプ等で作れ

>>952
どっちがやりたいのかしらんが
Dim R As String
R = "Range(""A3"", Range(""A65536"").End(xlUp))"

Dim R As Range
Set R = Range("A3", Range("A65536").End(xlUp))
954名無しさん@そうだ選挙にいこう:2005/12/07(水) 22:12:17
Dim R As String
R = Range("A3", Range("A65536").End(xlUp))

まさかな
955名無しさん@そうだ選挙にいこう:2005/12/07(水) 22:16:44
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel 2000
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

いま、ほとんど何も分からずに、マクロ組んでます。
質問なんですが、特定のセルに現在時刻を打ち込みたいのです。
そのようなモジュールかプログラミングは、
どのようにしたもんでしょうか?
「Ctrl + :」を自動マクロで拾ってみたのですが、
同じ時刻だけでてしまい、使い物になりませんでした。
956名無しさん@そうだ選挙にいこう:2005/12/07(水) 22:33:29
>>954
そっちの方向だとするとVariant型で配列受け取りかな
RがStringだと、EndプロパティがA3を返す場合以外はエラーになる

>>955
Range("A1").Value = Time
957952:2005/12/07(水) 23:11:15
>>953
ありがd!
958名無しさん@そうだ選挙にいこう:2005/12/07(水) 23:28:02
>>955

Cells(1, 1).Value = Now()
Cells(2, 1).Value = Time()

とか
959名無しさん@そうだ選挙にいこう:2005/12/07(水) 23:47:23
>このスレってレベル高いので、いつも参考になります

そう思える人って凄いね(w
知ったかクソの間違いレスも多いのに・・・
960名無しさん@そうだ選挙にいこう:2005/12/07(水) 23:56:46
真ん中に印刷できません
メニューから「ファイル」→「ページ設定」を選択
「余白」タブ→「ページ中央」欄にある「水平」をチェック
でいいはずですがどうしても右寄りです
初歩的な質問ですがよろしくお願いします。
961名無しさん@そうだ選挙にいこう:2005/12/08(木) 00:24:33
Excelの印刷時の位置合わせは文字単位ではなくセル単位なので
例えば
[          123456789]
というセルを
┃                              ┃
の中で中央に配置すると
123456789を中央に配置した
┃ [          123456789]            ┃
ではなく、[ ]を中央に配置した
┃       [          123456789]      ┃

┃                 123456789       ┃
のようになるされる
[ ]は罫線を入れてなければ見えないので右寄りに見えるが
これがExcel(及び、多くの表計算ソフト)の中央寄せの仕様
更には
[   ][   ][   ][   ][aaa ]
の場合、文字が入ってる5つめの[ ]ではなく、1つ目の[から5つ目の]までの単位で中央に寄せるので
┃     [   ][   ][   ][   ][aaa ]     ┃

┃                     aaa       ┃
のようになるが、これもきちんとした水平センタリングの結果
962名無しさん@そうだ選挙にいこう:2005/12/08(木) 00:39:23
失礼します。グラフのことで質問させてください。
y=300に他の補助線とは違う色の線を引きたいのですが
こういった場合はどうすればよいのでしょうか。

状況を説明すると、今縦の棒グラフを作っていて
y>300以上は平均以上、y<300なら平均以下というのを
わかりやすくするためにy=300に赤い境界線を引きたいのです。
初歩的な質問で申し訳ないですが、よろしくお願いします。


963960:2005/12/08(木) 00:48:00
早速のレスどうもです。
ですが、やや意図していること違うようで、
質問の仕方を変えてみます。

余白をすべて0にすると右は端まで5ミリくらいまで
表示できるのですが左端はまだ15ミリくらいは余白ができてしまいます。
右の余白を左と同じようにしようとすると
左端のセルが次ページになってしまいます。
何が原因なんでしょうか?
因みに表なので罫線は入っています。
964名無しさん@そうだ選挙にいこう:2005/12/08(木) 01:09:38
Excelは表計算ソフトなので細かいレイアウトは得意ではありません。
(にしても左端のセルが次ページに、て何が原因だろう?)
965名無しさん@そうだ選挙にいこう:2005/12/08(木) 01:11:04
>>960

プリンターの設定で、綴じ代とか設定されているんじゃないの?
966名無しさん@そうだ選挙にいこう:2005/12/08(木) 04:08:42
>>962
オートシェイプで線描画はダメ?
967907:2005/12/08(木) 09:43:21
ありがとうございます <<919
自動で変化したのをたとえば5日後に黒色の文字に戻すにはどう構文を追加すればいいでしょうか?
日付なら出来る気がしますが、文章だと??
タイミング的にはまた新規に入力された時や日にちがたった時にカラーインデックスを元に戻したいのですが。。
968名無しさん@そうだ選挙にいこう:2005/12/08(木) 10:38:23
1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel 2003
【3 VBAが使えるか    .】 少々
【4 VBAでの回答の可否】 可

あるリストから項目を選ぶと次の項目の選択肢が絞られて出て、点滅やフラッシュするとか出来るのかな?
vlookup使うのはわかるけどスクリプトか、、、
969名無しさん@そうだ選挙にいこう:2005/12/08(木) 10:39:30
▼━質問テンプレ ━━━━━━━━━━━━
【1 OSの種類         .】 Windows 2000
【2 Excelのバージョン   】 Excel 2000
【3 VBAが使えるか    .】 少し
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 「SaveCopyAs ユーザーフォーム」 「SaveCopyAs アプリケーションエラー」

ユーザーフォームを使った後、SaveCopyAsの後にSave関連を実行するとExcel自身がアプリケーションエラーで落ちてしまいます。
ユーザーフォームの中の関数を実行しなくても同じでした。

下記は実際に落ちてしまう例のソースコードです。

Sub test()
Load UserForm1
Unload UserForm1
ThisWorkbook.SaveCopyAs "c:\backup1.xls"
ThisWorkbook.SaveCopyAs "c:\backup2.xls"
End Sub

ユーザーフォームのコードの中身は空です。
フォームもVBEでユーザーフォームの挿入を行なっただけなのでコントロールの配置などは何も行なってません。

SaveCopyAsの前はロードしてアンロードしてるだけです。2度目のSaveCopyAsでアプリケーションエラーが発生しました。
この2度目のSaveCopyAsを、SaveやSaveAsに変えても同じでした。
ファイルは作成されるのですが、backup1.xlsもbackup2.xlsも元ファイル(22KB)よりも若干大きくなり、また両者ともサイズが異なりました。
backup1.xlsが27KB、backup2.xlsが37KBでした。
Excelが落ちた後はタスクマネージャを見るとExcelのプロセス自体は残っていて、backup2.xlsをつかんだ状態になっています。

どなたか、原因や解決策をご存じの方がいらっしゃいますでしょうか。
よろしくお願いします。
970名無しさん@そうだ選挙にいこう:2005/12/08(木) 11:54:06
>>969
[XL2000]UserFormオブジェクトでSaveCopyAs後にSaveを使用するとエラー
http://support.microsoft.com/default.aspx?scid=kb;ja;264712

これかな
971名無しさん@そうだ選挙にいこう:2005/12/08(木) 12:08:40
>>967
> 自動で変化したのをたとえば5日後に黒色の文字に戻すにはどう構文を追加すればいいでしょうか?
赤文字への変更をいつ行ったのかという情報をどこか(同シート内、別シート、外部ファイル)に保存して
その情報と照合して、赤文字で変更後5日以上経過していているものを任意タイミングで黒文字に戻せばよい

後出し条件なので、コードはご自分でどうぞ

>>968
リストって言ってもExcelには入力規則、フォーム、コントロール、ユーザーフォームといろんなリストがあるが、
入力規則やフォームツールなら、とりあえず絞り込みは「リスト 連動」などでググれば出てくる
コントロール、ユーザーフォームの方は、VB6のComboBox、ListBoxと同じなのでそっちを調べて

点滅は入力規則ならWorksheet_Changeイベントで変更を取って、Interior.Colorを任意間隔で交互に変更
フォームツールの場合はおそらく無理、コントロール、ユーザーフォームは上記と同じくVB6参照
972名無しさん@そうだ選挙にいこう:2005/12/08(木) 12:24:50
Excel VBA でMSCommを使おうとしていますが、
On_commイベントでの受信ができません。
Windows XP Pro SP2, Excel 2003 SP1, VBA(VB6.0相当?)
PC: Excel使用, 外部装置:何か来ると、ステータスを返す

以下のプロシージャで"hoge"が送れました。
Private Sub Command1_Click()
Set mscomm1 = CreateObject("MSCOMMLib.MSComm.1")
mscomm1.CommPort = 1
mscomm1.Settings = "9600,N,8,1"
mscomm1.PortOpen = True
mscomm1.Output = "hoge"
mscomm1.PortOpen = False
End Sub
外部装置からステータスが返ってきますが、下のイベントは発生しません。
Sub MSComm1_OnComm()
MsgBox "fuga"
End Sub
Comman1_Click() 内で Wait を使うと拾えます。
If Application.Wait(Now + TimeValue("0:00:1")) Then
data = mscomm1.Input
End If
アドバイスお願いします。
973907:2005/12/08(木) 12:36:16
>>907
ありがとうございます。後出しですみません。ただ
>>赤文字への変更をいつ行ったのかという情報ってのがどんな文で示したらいいのかさっぱり??
ご教授お願いします。
974名無しさん@そうだ選挙にいこう:2005/12/08(木) 12:51:01
975名無しさん@そうだ選挙にいこう:2005/12/08(木) 13:05:29
>>972
その内容は>>2・7だな

>>973
>>919のWorksheet_Changeの中でNowを書き出せばよい
書き出し先は自分で決めろ
これ以上ここでは聞くな
976名無しさん@そうだ選挙にいこう:2005/12/08(木) 14:01:36
みなさん即答できると思うのですが、シートを開いたときに文字を表示する方法教えて下さい。
977名無しさん@そうだ選挙にいこう:2005/12/08(木) 14:06:52
たぶん情報がきちんと出てれば即答出来るけど
(シート上に表示するのか、メッセージダイアログで表示するのか
シートを開くというのはシートをアクティブにすることなのか、ブックを開くの間違いなのか、etc・・・)
情報が少なすぎて回答出来ないので、>>2※を読んだ上でご自分で頑張ってください
978名無しさん@そうだ選挙にいこう:2005/12/08(木) 14:09:03
>>977
即答できない人はいりません
979名無しさん@そうだ選挙にいこう:2005/12/08(木) 14:27:51
シートを開いたときに文字を表示する方法。

それはシートを開いたときに文字を入力すればいいんだよ。
入力無しでとも自動でとも書いてないもんな。
これも文字を表示出来る方法には違いない。

よし、解決したな。
980名無しさん@そうだ選挙にいこう:2005/12/08(木) 14:46:47
> 即答できない人はいりません
もう質問から数十分経ってるし、
今更答えても即答にはならないから、もう回答は要らないってことだね。
981名無しさん@そうだ選挙にいこう:2005/12/08(木) 16:00:16
>>976 適当なセルに「文字」を入力→上書き保存→終了
982960:2005/12/08(木) 16:03:06
>>965
印刷可能領域を標準から最大に変えることで解決しました。
ありがとうございました
983名無しさん@そうだ選挙にいこう:2005/12/08(木) 21:43:39
>>968
入力規則が連動したドロップダウンリストなら分かるけど

http://www.relief.jp/itnote/archives/000822.php
フラッシュや点滅は分からないです。
この方法じゃないものをお探しなら
神の出現を一緒に待ちましょう。私も知りたい。
984名無しさん@そうだ選挙にいこう:2005/12/08(木) 23:12:14
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel 2003
【3 VBAが使えるか    .】 ほんのり
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 エクセル マクロ メーター
マクロを画面固定にして進行具合のメーター表示が可能である、と友人から聞きました。友人自体
は詳細については昔やった事がある程度でvbaのツールボックスが以前のバージョンと異なるため、といった理由で
今はどうやるか即答できませんでした。検索かけたのですが現在具体的な情報がつかめません。結果質問も、どうやるの?
としかいいようがありません。どうやるの?
985名無しさん@そうだ選挙にいこう:2005/12/08(木) 23:49:54
>>984
プログレスバーコントロールでぐぐれ
986984:2005/12/09(金) 00:06:00
>>985
いただきました。良いお年をお迎え下さい。
987名無しさん@そうだ選挙にいこう:2005/12/09(金) 00:52:13
【1 OSの種類         .】 Windows98
【2 Excelのバージョン   】 Excel 98?
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 三次元グラフ

質問です。
3つの要素(XYZ)から関係性を追っています。
三次元上(X,Y,Z:要素)で棒グラフ(or散布図)を書くことは出来ないでしょうか?
988955:2005/12/09(金) 10:09:21
>>956>>958
おそくなりましたが、ありがとうございました。
できました!
989名無しさん@そうだ選挙にいこう:2005/12/09(金) 18:15:25
次スレキボン
990名無しさん@そうだ選挙にいこう