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


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

Excel VBA 質問スレ Part23



1 名前:既定のプロパティさん mailto:sage [2012/01/29(日) 00:05:13.16 ]
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/
15 pc12.2ch.net/test/read.cgi/tech/1271261239/
16 hibari.2ch.net/test/read.cgi/tech/1280045912/
17 hibari.2ch.net/test/read.cgi/tech/1289182437/
18 hibari.2ch.net/test/read.cgi/tech/1298240666/
19 hibari.2ch.net/test/read.cgi/tech/1305754555/
20 hibari.2ch.net/test/read.cgi/tech/1312435844/
21 hibari.2ch.net/test/read.cgi/tech/1316931607/

前スレ:
Excel VBA 質問スレ Part22
toro.2ch.net/test/read.cgi/tech/1322400978/


648 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 01:51:43.73 ]
>>642
そのExcelが使えるってどの程度のレベルの使えるなの?

男でもある?

649 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 02:01:33.59 ]
>>647
ありがとうございます。
散布図で何とかできました。

650 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 02:05:46.33 ]
>>648
バイト価格だね

651 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 02:17:39.55 ]
VBAが使えるといえば普通は
Oracle SQLが使えるというのも含む

652 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 05:00:10.04 ]
VBAが正しく使えれば
DelphiだろうがJavaScriptだろうがJavaだろうがCだろうが
そんなに難しくない筈
むしろVBAのほうが難しいくらいかも
ただSQLはちょっと毛色が違うからVBAが使えることとSQL
が使えるということは同じだとは思わないほうがいいかも

653 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 06:51:56.55 ]
vbaで使うデータベースはなにが良いのですか?いまはシートにデータ並べてますけれど

654 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 07:03:43.75 ]
ググってきたら

655 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 08:17:32.38 ]
>>625
波形を気合いで計算してWAVの頭の構造体を気合いでくっつけてdirectsound8

656 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 08:22:26.53 ]
>>653
一番相性がいいのはもちろんAccess



657 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 16:53:47.11 ]
こんにちあ!

コード書き終えたの
ですけど12時間以上処理してるの
でアドバイスくれし

658 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:07:40.25 ]
コードを載せろよ

659 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:30:36.11 ]
>>657
ScreenUpdatingとか、よくある高速化テクニックは使ってる?

660 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 18:33:58.45 ]
XP/Excel2000
csvファイルを出力させたいのですが、見よう見まねで固定のファイル名が出せるところまでは辿り着きました。
次にファイル名をセル参照なり変数でつけたいのですが、どうしたらいいでしょうか?

Private Sub CommandButton1_Click()
Const cnsFILENAME = "\test.CSV"
Dim FSO As New FileSystemObject
Dim TS As TextStream
Dim GYO As Long
Dim GYOMAX As Long

GYOMAX = Range("C65536").End(xlUp).Row
Set TS = FSO.CreateTextFile( _
Filename:=ThisWorkbook.Path & cnsFILENAME, _
Overwrite:=False)
GYO = 3
Do Until GYO > GYOMAX

TS.WriteLine FP_EDIT_CSVREC(GYO, 2, 3)
GYO = GYO + 1
Loop
TS.Close

MsgBox "OK"

Set TS = Nothing
Set FSO = Nothing
End Sub

661 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 19:32:54.15 ]
>>660
Dim cnsFILENAME As String
cnsFILENAME = "\test.CSV"

とか

cnsFILENAME = Range("C5").Text

とか

662 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 20:05:05.30 ]
とりあえずscreenupdating使って見たんだけど、最小化してまた大きくしたら画面真っ黒になっちゃったよ

進行状況だけ表示しとけばよかったかなあ

663 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 20:13:18.21 ]
関数をワークシートにたくさん埋め込んでいるんだったら、作業中はOffにして作業後にOnに戻す
これはかなり効く(たくさん埋め込んでいたらの話だけど)

664 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:12:15.18 ]
どうやってoffにするのですかお

665 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:15:09.26 ]
もしかしてワークシート最小化にしてたらマクロ処理しないのですかお

666 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:19:50.44 ]
まずモニターのスイッチを切れ



667 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:22:44.25 ]
>>665

マクロの記録やってみれ

Excel2010では↓のようになった

Application.Calculation = xlManual

↓もとに戻す
Application.Calculation = xlAutomatic

668 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:23:06.41 ]
画面更新ができないような処理してるからだと

669 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:30:59.55 ]
>>640

VBA初心者レベル、Excelは基本操作もおぼつかない
当然ながらブラインドタイプとかはできないし、
ほかの言語などもまったく分からない。
というレベルで
週5日*1日8時間*時給1800円の仕事してます。
作業内容は一日分ずつのCSVファイルを一か月分にまとめたり
それをグラフにしたりするだけです。
チョー楽だけど退屈です。

670 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:42:43.01 ]
そういうことを出来るようにしてくれた人がいたってだけでしょ

671 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:44:29.82 ]
どういうこと?

672 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:45:11.50 ]
金で時間を買われてるな

673 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:48:16.20 ]
初心者っていう人がVBAでそういうことを出来るようにすることが出来るのかなって感じなんだけど

674 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:48:39.69 ]
>>672
時間を売って金を得て
金を使って時間を買うということ?

675 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:50:45.28 ]
ノルマこなして、お金もらってるだけでしょ

676 名前:669 mailto:sage [2012/03/15(木) 21:56:00.37 ]
>>673
会ったこともない誰かが作ったマクロを使ってます。
ところどころパラメータ(セルの行とか列とかの指定)を書き換えて実行するだけです。

>>675
ノルマは特に無いです
というかむしろ早く終わりすぎたらマズイらしくて
一年かけてダラダラやってます。



677 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:59:39.96 ]
VBA使って効率化出来るのを目の当たりに見ると怒る人がいる、世の中だからね
コンピュータで処理できるようにしたのに、
コンピュータが勝手に作ってる
とか、言われたときは...

678 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:59:45.52 ]
結局669はVBAを使ってはいるけれど
プログラミングの仕事ではないってこと?

679 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 22:01:22.71 ]
>>676
お役所?

680 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 22:04:50.80 ]
>>676
大阪市?
ここだけの話で

681 名前:676 mailto:sage [2012/03/15(木) 22:09:47.46 ]
>>678
一応、仕事の名目は
エクセルでのデータ整理です

>>679
公務員じゃないけど似たようなもんです。
業務の成果は求められてなくて、
ただ単に労働時間分の拘束をされてるだけって感じです。

>>680
ちゃいまっせ、ホンマにちゃいまっせw


682 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 23:12:01.77 ]
マクロの記録てこういうときにつかえるんだなあみつを

683 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 00:43:25.24 ]
ちょこっとわからない程度なら、部分的にマクロ記録のコードコピペしてます。
スピードも全く問題ないことがほとんど、使えなかった頃より実質こなせる業務がかなり増えた。

684 名前:586 [2012/03/16(金) 05:51:54.44 ]
忙殺されて、、、レス遅くなってすみません。

>>620->>624
皆さん、ありがとうございます。

会社のPC(WinXP Pro SP3/Excel 2003 SP3/メモリ2G)
でもやはり44シート目で実行時エラーでした。

手持ちのもう一つのネットブック(Win7 32bit版/Excel2010/メモリ1G)
で試したら、エラーは出ず、なんと、500シートでも動きました。

2003のバグですかね。。

ありました・・・これですね。
support.microsoft.com/kb/210684/ja

-------
ブックに定義済みの名前を付けて保存したり、次のサンプル コードのように、ブックを閉じることがなく複数回ワークシートをコピーするとこの問題が発生することができます。
-------

発生することができます・・って・・・・

685 名前:586 [2012/03/16(金) 05:52:55.59 ]
>>623
ええと、マクロ実行して、1004が出たての未保存のブックは、シートの追加はできても、シートのコピーはできません。
(エラーも出ず、一瞬画面がブレたようになって無反応)
いったん、保存して開きなおしたファイルだと、シートのコピーはできますが、再び、マクロを実行すると、

実行時エラー'1004':
シートの名前をほかのシート、Visual Basic で参照されるオブジェクト ライブラリまたはワークシートと同じ名前に変更することはできません。

となって止まり、
ブックをみると、test1を押した場合は、「テンプレ(2)」を、test2を押した場合は、「テンプレ2 (2)」のシートを追加しようとしてるところで、また同じ名前で追加しようとして、止まってる感じ・・・
ActiveSheet.Name =
がうまくいってないような感じです。

しかもエラーの回数はなんか毎回、44です。。PCに他にどんな重い処理をさせていても44。。会社のPCもそうでした・・。

なんだコレ・・私のやり方が何かおかしいのか・・・

686 名前:586 [2012/03/16(金) 05:55:19.72 ]
このKBを見る限り、2007でも、2010でも発生するみたいですね。。
www.microsofttranslator.com/BV.aspx?ref=CSSKB&lo=SS&from=en&to=ja&a=http://support.microsoft.com/kb/210684/en-us?fr=1

テンプレートで保存して呼び出して使えって・・・。Vlookupで引っ張ってて、複数のシートがあっても大丈夫なんかな・・・

それとも100シートごとに保存するか・・・

それともシート挿入→末尾に移動→値の貼り付け→書式の貼り付け→印刷設定の貼り付け
という関数を作っておくか・・・

印刷設定がちゃんとなってるシートの印刷を手前において、反映したいシートを複数選択し、
印刷設定を開いてそのままOKボタンを押すと、複数のファイルに印刷設定が反映されるって
書いてあって、実際その通りだったけど、ウィンドウ枠の固定と、印刷タイトルの設定が反映されてなかった・・・

これだけ一個一個やるように関数に組み込むしかないのか・・・



687 名前:586 [2012/03/16(金) 05:56:10.36 ]
そろそろ眠い・・・

しかもこの仕事を引き継ぐ人がマクロとか難しくて嫌だから、手作業でやりたいと言い出して、
このマクロは使われない可能性が高くなってきた・・・

中身なんて知らなくていいから、黙ってボタン押せっつーの!くそ・・・!

でも自己満で作るけどさ。

事務の世界っていつもこうなる・・・やっぱり私に事務は向かないのか・・かと言って、バケモンだらけのPGの世界ではこれ以上やってく自信がない・・・

>>677
あるあるあるあるあるある

=Exact() で簡単に同じかどうかのチェックなんて出来るのに、「目視確認でやった方が確実だから、目視でやって」、とか ┐(´д`)┌


チラ裏すみません。眠いです・・・

688 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 08:09:03.03 ]
>>661
サンクス

689 名前:デフォルトの名無しさん [2012/03/16(金) 09:49:02.14 ]
Valueエラーが出るけどどこが悪いか分かる方いますか?
Function sealtime(A As Range, B As Range)

'Application.Volatile '自作関数を自動再計算させます。
Dim time As Double
time = Application.WorksheetFunction.ATAN((B - A) / 1)

If time < 0.005 Then
sealtime = "OK"
Else
sealtime = ""
End If

End Function

690 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 09:55:24.55 ]
とりあえず
Application.WorksheetFunction.ATAN
より
Atn
のほうがいんじゃね

691 名前:デフォルトの名無しさん [2012/03/16(金) 10:30:21.14 ]
>>689
ワークシート関数が全部VBAで使えるわけじゃない


692 名前:デフォルトの名無しさん [2012/03/16(金) 11:13:02.48 ]
ダブルクリックで画像を挿入したくてネットで調べて色々コピペして作ったんですけどたまにエラーが出ます
あと画像を開こうとしてキャンセルすると『1004 指定したファイルが見つかりませんでした』って出ます
どこを直せばいいでしょうか お願いします

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myRange As Range
Set myRange = Range("C2:G10,C312:G21,C24:G32")
If Application.Intersect(Target, myRange) Is Nothing Then
Exit Sub
End If
Dim objFileName As String
Dim objShape As Shape
objFileName = Application.GetOpenFilename _
Set objShape = ActiveSheet.Shapes.AddPicture( _
Filename:=objFileName, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=Selection.Left, _
Top:=Selection.Top, _
Width:=242#, _
Height:=120#)
Cancel = True
End Sub

693 名前:デフォルトの名無しさん [2012/03/16(金) 11:32:07.34 ]
あ なんかいけたっぽい こうしたらスムーズになった

sFile = Application.GetOpenFilename(FileFilter:="gif,.gif")
If sFile = "False" Then Exit Sub

694 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 12:12:14.79 ]
エクセル2003のグラフのことで教えてください。
グラフ上のマーカーの上にマウスカーソルを乗せるとデータが表示できますが、
その表示されたデータを取得することはできないでしょうか?
もしくは、そのマーカーに対応するセルをアクティブにする方法でもいいです。
どなたか、よろしくお願いします。

695 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 12:32:19.74 ]
>>694
できません

696 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 12:50:50.80 ]
>>694
マーカーに透明なラベルを被せたら余裕で何でもできる



697 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:24:36.03 ]
for each でレンジ範囲の文字列数え上げるとき、数え残すことある?

698 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:27:49.62 ]
>>697
例えば?

699 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:35:26.75 ]
count = 0
for each a in range("a1:e5)
if("あほ"=a.value) then
count =count +1
end if
next a

で、

for b =1 to a
にしてるんだけど、bがバグる


700 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:35:57.24 ]
さいごにnext bは入れてる

701 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:41:28.29 ]
>>699
aって何?

702 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:41:47.29 ]
>>699
○ For b = 1 To count
× For b = 1 To a


703 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:45:00.17 ]
ああcountにしてるけどバグる

704 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:45:45.84 ]
>>703
バグる?

705 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:52:53.95 ]
>>699
699がかなりあほってことでよろしいか?

706 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:54:53.70 ]
bに同じ数続くことがあるのでする



707 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 15:57:41.20 ]
マクロ記録をそのまま使ってる人いますか?
やはり自分で全部書くのが普通でしょうか。

708 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 16:22:56.46 ]
>>707
状況によるけど
そのままでは使い物にならないことが多い

ていうか、記録した方が早い部分と、自分で書いた方が早い部分とがあるので
うまく組み合わせた方が結果的に早くプログラムが完成する

709 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 23:26:58.50 ]
>>696
> >>694
> マーカーに透明なラベルを被せたら余裕で何でもできる
やり方教えてクレクレ

710 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 23:51:19.86 ]
DOSのコマンドライン引数を取得できないの?

Sub Workbook_Open
For I = 0 To ARGC -1
Debug.Print ARGV(I)
とか。

711 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:08:29.34 ]
>>709
そんな態度で教える馬鹿がいるか

712 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:09:20.05 ]
うっはwwwwwwいま気づいたんだけどもしかして時間かかる作業させるときってさいごにシート保存するコードとか入れたりするの当たり前だったりするわけですよねですよねえええ

713 名前:デフォルトの名無しさん [2012/03/17(土) 00:11:35.15 ]
あたりまえだ

714 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:14:16.48 ]
ああもしかして指定時刻にセーブする処理とか入れてリスク管理してみたりするのかあああ

715 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 00:34:43.42 ]
>>711
おしえれ

716 名前:デフォルトの名無しさん [2012/03/17(土) 10:26:53.14 ]
>>710
> DOSのコマンドライン引数を取得できないの?
>

GetCommandLine関数



717 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 10:58:03.30 ]
>>711
おしえれ ksg

718 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 11:47:45.96 ]
>>716
ありがとうございます。
msdn.microsoft.com/ja-jp/library/cc429108.aspx
ってこれ外部ライブラリ・コールか何かせんとあかんのやね、きっと。

719 名前:デフォルトの名無しさん [2012/03/17(土) 14:02:53.16 ]

Private Declare Function GetCommandLine Lib \\\"kernel32\\\" Alias \\\"GetCommandLineA\\\" () As Long
Private Declare Function lstrcpy Lib \\\"kernel32\\\" Alias \\\"lstrcpyA\\\" (ByVal lpString1 As String, ByVal lpString2 As Any) As Long

Sub Workbook_Open

Dim sBuf As String

strBuf = Space$(255)
Call lstrcpy(strBuf, GetCommandLine())

Debug.Print strBuf

end Sub


720 名前:デフォルトの名無しさん [2012/03/17(土) 14:05:29.66 ]
ごめん、p2で書いたら変な「\」がついちゃった

Private Declare Function GetCommandLine Lib "kernel32 " Alias "GetCommandLineA" () As Long
Private Declare Function lstrcpy Lib "kernel32 " Alias "lstrcpyA " (ByVal lpString1 As String, ByVal lpString2 As Any) As Long

こうね

721 名前:694 mailto:sage [2012/03/17(土) 22:07:32.08 ]
グーグル先生ってすごい!
クリックで値が取れた!

722 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 15:07:11.33 ]
>>669
派遣ですか?
正社員がいいのですが

723 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 15:17:58.27 ]
腐るからやめろよ

724 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:42:41.53 ]
こんにつあ質問ですお

A1-E1に1,2,3,4,5値が振ってあって
A2-E2,A3-E3,....,A100-E100まで数値がランダムに入っています。
このとき各行を、それぞれ列の昇順で並べかえたい。つまりA2-E2,A3-E3,....,A100-E100とそれぞれ昇順に並べかえたいのですが、
そのとき1-5の値の対応を残したいのです。どうすればよいでしょうか!!

725 名前:669 mailto:sage [2012/03/18(日) 17:09:54.42 ]
>>722
私は正社員ですがパートさんも居ます。
ただ、求人かけてないので・・・

あと、あまり詳しく書くと特定されそうなので
もうこれ以上書かないことにします。
とりあえず大阪府も大阪市も一切関係ない民間企業です。


726 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 18:18:26.86 ]
>>724
説明が下手すぎて質問が意味不明



727 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 18:31:41.37 ]
次の国会で青少年ネット規制法通すことにするわ
子どもたちを守るためには必要だよな

728 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:12:42.15 ]
>>724
おりあえず、A2:E2 をソートしたいらしい。

729 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:38:33.54 ]
>>724 とりあえずこれで皆の様子見てみて。
Sub Macro1()
' Version : Excel 2002 VB6.0

Range("A2:E2").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub

730 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:05:11.79 ]
たぶん要点は
>そのとき1-5の値の対応を残したい
だと思うんだが
具体的に何をどうしたいのかがさっぱり解らんな

731 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:42:22.24 ]
え…わたしの説明…ヘタすぎ!?

732 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:06:10.55 ]
んーとですねー
数値が入ってるセルを行毎に昇順で並び変えたときの、順番を取得しまして、
次にその順番を基準に、最初にセルがあった列番号を並べ変えてですね、
さらにそれにセルに入ってた数値を対応させたいのですけど、具体的にすればいいのかはわからなくて行を2行にするくらいしか思いつかないのですのでなにかよい方方法を教えてみて下さいマシマロ

733 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:21:45.79 ]
何言ってんだかさっぱりワカンネ

734 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:28:55.25 ]
ちゃんと説明しようとしない人間の質問に答える必要なし

735 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:40:34.77 ]
下記の様に作成したテキストボックスのShape objectを変数shSelに代入し
て、そこに文字列や書式設定をやりたい。

Sub mkTextBTest02()
  Dim shSel As Shape

    Set shSel = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
      48#, 20 + 16 * lC, 10#, 16#)

    shSel.Characters.Text = lC '←$文字列を書く
    With shSel.Font '←$フォントの設定
      .Name = "MS ゴシック"
      .Size = 9
    End With
    shSel.ShapeRange.Line.ForeColor.SchemeColor = 1 '←$フォントの設定
End Sub

←$印の所でエラーが起きる。
.Characters .Font .ShapeRange は、class Shapeのpropertyでないから。
"ActiveSheet.Shapes.AddTextbox(〜).Select"として変数shSelの代わりに、
Selectionと書くとエラーが起きない。
class Shapeのproperty Characters,Font,ShapeRangeを指定するにはどうす
ればいいでしょうか。


736 名前:729 mailto:sage [2012/03/18(日) 21:59:27.07 ]
こんな感じ? F-J は順列番号
BEFORE:
 A1   B1   C1   D1   E1  
+-------+-------+-------+-------+-------
  1    2    3    4    5  
 21   20   19   18   17  
 31   32   33   34   35  
 45   44   43   42   41  
 56   52   53   54   55  
 61   65   63   62   60  
+-------+-------+-------+-------+-------
AFTER:
 A1   B1   C1   D1   E1   F1   G1   H1   I1   J1 
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------
  1    2    3    4    5    1    2    3    4    5  
 17   18   19   20   21    5    4    3    2    1  
 31   32   33   34   35    1    2    3    4    5  
 41   42   43   44   45    5    4    3    2    1  
 52   53   54   55   56    5    1    2    3    4  
 60   61   62   63   65    2    5    4    3    1  
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------



737 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:05:40.66 ]
説明が分からないから答えようがないのかそれとも説明は分かるけれども態度が気に食わないから答えないのかもし仮に後者なら貴方こそレスする必要は無いし説明が分からないならば分からない箇所を指摘してくれれば返答できるのだが!!!

738 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:07:03.60 ]
736まさにそれですそれを2行にするか1行に続けて書くか以外になにか案はありますかないのならば1行に続けて書いた方がスマートなんでそうしますが

739 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:14:21.32 ]
元データの末尾に列番号を加える
元のデータ
12 54 . 8 23 36
これを
121.542 83 234 365
にしてから並べ替えれば、下1桁をチェックすれば元の位置がわかる

740 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:20:57.88 ]
>>737
ちゃんと例を上げて処理をひとつずつ説明しろ
変な言葉遣い止めろ

741 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:36:53.87 ]
なるほどおおおお0.0001とかにすれば誤差も出ないしいい感じですなあ

742 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:30:16.99 ]
>>741
どんだけ低脳なんだよ
いいわけないだろ
ただ複数の値を保持したいだけなんじゃないのかよ
データ用と表示用で表を分けるとか
Idプロパティ使うとかすればいいだろ
Idなら、
A.Idを降るプロシージャ(1〜5)
B.それぞれの行を並べ替えるプロシージャ
C.IdとValueを入れ替えるプロシージャ
を作って、ABで並べ替えた後、
CBCで元の並びに戻る


743 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:36:09.02 ]
あっはあidプロパティねthx!

744 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:40:58.34 ]
真性か・・・

745 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 04:38:22.65 ]
'
↑これを
エクセルのシート上で
="'"&A1
と書くとセルA1の文字列の前に ' が
連結されるのですが

VBAで

dot = "'"
Cells(A, 5) = dot & Cells(A, 1)

と書いてもA5セルの文字列(A1の中身)の前に ' が
表示されずA5セルをクリックすると
上部のセルの中身が見れるバーには ' が文字列の前に
表示されています。
A5セルを他のセルにコピーしても
文字列だけコピーされて ' はコピーされません。

VBAを使って、文字列の前に ' を連結させたいのですが
良い方法ありませんか?

746 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 05:08:10.31 ]
>>745
まず自分で調べろ
俺も知らなかったけど
ググったら載ってたぞ

いい加減にしろ!!



747 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:02:09.18 ]
>>746
VBAのプログラムがおかしいかと
何時間も考えたけど
ぐぐったら1分で解決しました
ありがとう

748 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:01:31.40 ]
>>735
以下の様に、変更するとテキストボックスをかけるようになった。

Sub mkTextBTest02()
  Dim shSel As Shape

  Set shSel = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
    48#, 20 + 16 * lC, 10#, 16#)

  shSel.TextFrame.Characters.Text = lC '←$文字列を書く
  With shSel.TextFrame.Characters.Font '←$フォントの設定
    .Name = "MS ゴシック"
    .Size = 9
  End With
  shSel.Line.ForeColor.SchemeColor = 8 '←$フォントの設定
End Sub

VB Editorのヘルプを調べてわかった。
各くオブジェクトのpropertyと、propertyのobjectを定義するclassの区別
がついていなかった。







[ 続きを読む ] / [ 携帯版 ]

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

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