205 :
190 :
2006/08/02(水) 01:02:51 すいません、 つっこまれると思ってたんですけど、それ(A,1)です
206 :
190 :2006/08/02(水) 01:03:41
> Workbooks("OpenFileName").Worksheets("PG1").cell("1,1").Copy Workbooks("book1").Worksheets("TP1").Range("1,1") めちゃくちゃ
209 :
190 :2006/08/02(水) 01:10:08
>>207 これでも勉強したつもりなのですが。
出来ればどの辺りがオカシイか教授いただけませんか?
無理なら無理で結構ですので
210 :
190 :2006/08/02(水) 01:10:42
いや、勉強したつもりはオカシイ。勉強してる最中ですね。
>>210 作業をさせたいところのみを早く調べたいのはわかるけど
ググれば初心者向けにVBA解説してるところとか、サンプルコードを載せて
くれてるところがあるはずだよ。
先に言われている通り、、かなり滅茶苦茶だから面倒臭がらずに調べて
みよう。
そんなあなたに やりたいことを マクロに記録 して勉強しましょう
セルの操作は基本中の基本だよ。
cell("1,1")もRange("1,1") もRange(A,1)も間違ってます。
>>212 マクロの自動記録は無駄が多いし、セル操作を学ぶには不向きだよ。
誰も正解を書かない件について。 # やりたいことがわからないというレスは却下
>>213 も言ってるけどさ、基本的な命令(予約語)ってExcelに入力すると頭文字が大文字になるのね。
それを踏まえて、さっきから貼ってる自分のソースを見てごらん。
それと自分が初心者だという自覚があるなら、コピーとペーストを命令分けて書いて
ステップ実行させなさい、そうすりゃどっちがおかしいかわかるから。
Range文の間違い、わからなければヘルプを。
明らかにヘルプを見る手間を省いた質問に、優しく答える人は少ないよ。
つ〜か指摘してるっぽい人達もなんでcell()に触れないのかわからん…
> マクロの自動記録は無駄が多いし、セル操作を学ぶには不向きだよ。 セル操作を学ぶレベルには到底達していないのだが それに無駄以前のレベル 間違いに気付ければ丸儲け
218 :
190 :2006/08/02(水) 02:22:21
グダグダ言わずに正解おしえろよ、クズども
>>216 コピーとペーストに分けて、って書いただろ
面倒だから書くわ
Workbooks("Book2.xls").WorkSheets("Sheet1").Cells(1,1).Copy _
(Workbooks("Book1.xls").WorkSheets("Sheet1").Range("A1"))
>>577 > Sub HideColumns(xcolumns As String)
> Dim strColumns As String
> strColumns = xcolumns
> columns(strColumns).Select
> Selection.EntireColumn.Hidden = True
> End Sub
>>578 > Sub HideColumns(strCcolumns As String)
> Columns(strColumns).EntireColumn.Hidden = True
> End Sub
上記は別スレの内容だけど
無駄であっても、
個々の内容が理解できていないと無理
そうでないと、ちょっと変えただけで???となるでしょ
最初のうちは、あえて無駄な行があってもいいと思うけどな
>>190 悪い事は言わん。手でコピペしとけ。
CellsとRangeも使えなくて出来るほど
VBAはガキのおもちゃじゃない。
これは君への皮肉じゃなく本心だ、
>>213 も同じように思って書いたんだと思うぞ
◆MutsukiYtk
224 :
213 :2006/08/02(水) 07:00:20
「セル操作が出来ないと、Excelで何も出来ないな」と思って書きました。 どこが間違ってるか分からないと探しにくいだろうと思って セル操作に関して間違っている箇所を上げておいただけなのですが…。
225 :
190 :2006/08/02(水) 13:12:51
>>221 Cellsでしたか。ありがとうございます
ガキではないですが、もう少し勉強してからここに来ることにします
226 :
デフォルトの名無しさん :2006/08/02(水) 19:16:33
クイックソートを再帰を使わずに書きたいのですがよく分かりませんorz A列の配列を並び替えたいのですが・・・
>>226 逆に聞くけど、再帰使わない利点って何なの?
228 :
182 :2006/08/02(水) 20:30:08
レスください・・・・・・。 184でマクロさらしてます。
>>226 よく解らないということは、全く解らないわけでは無いんだな。
んじゃ、丸投げしないで出来てる部分だけ晒せ。話はそれからだ。
というか、コードを書くことだけに走らないで、まずはクイックソートの
アルゴリズムをきちんと理解しろ。
>>227 高速化だろ。Subプロシージャの呼び出しって結構遅い。Functionはもっと遅いけど。
あと、配列要素の上下限算出を盛り込める。
一般的にクイックソートは「配列, 配列要素下限,配列要素上限」などと3つの引数を渡すが
再起使わず内部ループにすると、プロシージャの頭で上下限算出すればいいから配列変数だけポンと渡せる。
>>228 さようなら。
>>228 たぶんVBAでは無理なのでWin32APIを呼ぶ
231 :
226 :2006/08/02(水) 21:52:30
>>227 大量のデータを処理する時は再帰だとできんとか言ってました。
>>229 内部ループのとこを詳しく教えて頂きたいのですが
>>231 クイックソートでググればたくさんでてくるぞ
アルゴリズムが理解できないなら
VBのコードもあったからそれコピペすれば?
233 :
226 :2006/08/02(水) 21:56:03
学校の授業で VBAを使ってゲームを作る事になったんですが、VBAの事をほとんど何も教えてもらって無い状態で、作業が全く進みません 生徒もやる気が無いけど、それ以上に教師にやる気が無くて困っています 頑張って、本に書いてある通りにプログラムを打ち込み、シューティングゲームを作ったんですけど、ありえないぐらいクソゲーで、もう自分の力ではどうしようも無い、ということを悟りました ですので、どこか いいプログラム置いてある場所知りませんか? 邪道かもしれませんが、それをコピーして貼り付けよう思います どなたかお願いします
俺か。
学校に行ってるって事は、お金払って教えてもらってるんだよね。 「お金払ってるんだから、きっちり教えて下さい(義務を果たして下さい)」とか言ってみたらどう? まぁなかなか言いづらいけどさ。 親が払ってるのか自分で払ってるのか分からないけど 汗水流して得たお金払ってちゃんと教えてもらえないなんて、腹立たない?
【Excel 2003】 Workbooks.Add で新規作成したブックの ThisWorkbook モジュールに、 Workbook_SheetChange 等のイベントを記述する方法を どなたかご存じないでしょうか?
240 :
238 :2006/08/04(金) 10:47:43
>>239 意外と簡単に実装できるってコトですか・・・?
まさか、
コードウインドウ開いて入力するとか、じゃないですよね?
Workbooks.Add したブックへ自動的にWorkbook_SheetChange 等のイベントを
挿入したいんですが・・・。
当たり前のことを聞いてたら申し訳ありません。
>>239 わかった上で言ってるんなら是非とも教えて欲しい。
少なくとも簡単に実装できるものではないと思う
>>240 Addではなく、既にSheetchange等マクロが入ったファイルをコピーするのではダメか?
中のソースをいじらせる必要があるのか?
方法が思いつかないわけじゃないが、試した事がないからな。とりあえず
>>239 先生の回答を待ってみてくれ
242 :
238 :2006/08/04(金) 12:45:40
>>241 ファイルをコピーするのは思いついてはいるんですが、
一応、ブック単体での動作を予定しているので・・・。
VBとかみたいにリソースファイルを扱えるならよかったのですが・・・。
244 :
238 :2006/08/04(金) 12:59:38
>>243 ウイルスか、
まぁ、確かにそうですよね。
限りなく実現不可能そうですね。
参考URLも見てもう一度検討してみようと思います。
245 :
243 :2006/08/04(金) 13:13:33
246 :
238 :2006/08/04(金) 13:45:32
>>245 おお、その手がありましたか。
私のほうも追加したブックを独立させて動作する必要は無いので
参考になりそうです。
ありがとうございます!
>>229 A列を並べ替えるならsortメソッドが最速じゃないか?
今からVBA始めるって人にお勧めする参考書や教材って何かないかな?
> A7:自分で実際に読んで(閲覧して)、自分のレベルに合っていて解りやすいと思うものを利用しましょう。
>>248 VBAの本なんて星の数ほどあって
その中で自分の知ってる本はほんのわずか。
しかもどんどん新刊が出て入れ替わる。
とても特定の本をお薦めできる状態じゃないね。
一つの方法として、アマゾンのサイトで検索してみて
売れている純に表示させ、読者レビューを読んでみる
といいかも知れない。当てずっぽうで買うよりマシだろう。
どうせ、1冊ですむはずも梨
>>250 どんな言語でもそのような状況なのに、なぜお勧め本が存在するんだろう?
まず1冊買う。 難しすぎると感じたら、易しそうな本を買う。 易しそうなら、その本の内容を理解しつくして、難しそうな本を買う。 ちょっとだけ難しいなと思ったら、その本がたぶん正解。理解するまでがんばる。 以下繰り返し。
大村なんてらの本買っときゃ、まず間違いない。
257 :
デフォルトの名無しさん :2006/08/06(日) 10:05:50
VBAでOLEは使えるのでしょうか?
____ /⌒ ⌒\ ング ング / (●) (●)\ /::::::⌒(__人__)⌒:::: \ チュパチュパ | ( \ | \_ ヽυ ::\ / \ .:::\
>>258 OLEのツールボックスの出し方さえわからないのです・・・orz
初心者プログラマにOLEは敷居がたかいのかな・・・
君の跳躍力が一般人よりk
262 :
デフォルトの名無しさん :2006/08/06(日) 15:03:53
マクロの記録で自動作成されたコードを読むことを繰り返しております。
Range("A5").Select ActiveCell.FormulaR1C1 = "nurupo" もうあほかと。
>>257 VBAでWordやExcelの操作をすることからしてOLEのおかげ。
265 :
デフォルトの名無しさん :2006/08/06(日) 18:24:44
なんか勘違いしてたかも・・・ VBAとブラウザを連動させたかったのですが、 それはOLEで実現するのは間違いなのでしょうか?
エクセル2000でセルの書式で1を0001とか表示させてんのね。 そんでそれをCSVに出力すると1になっちゃうのを0001のまま出力するにゃどうすりゃいいの? 1の書式を文字列にして0001にしても同じじゃんよ? 読み込みはTextFileColumnDataTypesでできたんだけど出力さっぱりわからん
そのブラウザがOLEに対応してるかどうかで変わってくるな。 つーか、VBA(VB言語でMS Office Applicationを操作)の話ではなく 普通のVisual Basic(VB言語で汎用的な処理)の分野の話なので本スレでどうぞ。 このへんのやり方は、VBAでやるにしてもVBとやり方変わらないし。
>>266 それこそVBAの分野だろ。
ワークブックのメソッドを使ってCSV保存するのなんてVBA使ってるとは言わん。
マクロの記録そのままでもいけるからな。
VBA使ってセルのデータを取得し、テキストに書き出す部分を自前で実装してこそ
VBAを使ってると言える。これなら値の取得を.Valueではなく、.Textにすることで
セルの値ではなくセルの表示結果が取得できる。
>>266 ん?俺のExcel2000は
ゼロ付きのままcsv保存されるよ
どうやって保存してんの?
がんばります
脳が千切れそうです
273 :
デフォルトの名無しさん :2006/08/07(月) 21:29:23
エクセルでファイルを開くと同時に、VBAを起動する為には SUBとEND SUBの間にどう入力すればいいでしょうか。
274 :
デフォルトの名無しさん :2006/08/07(月) 21:37:07
Workbook_Open()?
Sub Auto_Open() ………… End Sub
276 :
デフォルトの名無しさん :2006/08/08(火) 00:34:25
Sub miko_test() Dim i As Integer, j As Integer, n As String, nn As String Application.ScreenUpdating = False i = Sheets.Count n = ActiveWorkbook.Name For j = 1 To i Sheets(j).Copy nn = ActiveSheet.Name With ActiveWorkbook .SaveAs "C:\My Documents\" & nn .Close End With Next Application.ScreenUpdating = True End Sub すみません。これが動かないのはなぜですか?
勘:Activeを使うとろくなことがない
278 :
デフォルトの名無しさん :2006/08/08(火) 00:39:22
どーいうことですか? はじめてVBAを使おうとしてます。。 明日会社で必要なの。だれか教えてください!
>>278 nn = ActiveSheet.Name
↓
nn = Sheets(j).Name
うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。 例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。 その上で、どううまくいかないのかを具体的に書きましょう。 エラーが出るなら、何処でどういうエラーが出るのか、 想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。
>>276 パスがねえんだろ
おまいのマイドキュメントはホントにそこにあんのか?
ところで、n=ActiveWorkbook.Nameは必要なの?
Copyメソッドに何かが足らない たぶんソレ シート毎に分割して保存するならな
リストボックスで右寄せにすると一番右の字がスクロールバーに隠れちゃうのってデフォなん? 回避する方法ある?
>>286 うぉぉぉおぉ本当だ!!今まで気づかなかった。
スクロールバーが無いときを基準に右寄せしてるっぽいね。
消極的にいくと..全ての値の後に空白入れるとか、ラベルとSpinbuttonで擬似的に作るか..
288 :
287 :2006/08/08(火) 21:22:10
案2(思いつき):ColumnCountを2にしてうまいこと調整する
値だと後ろに空白入れることできないんじゃん?できるのかな? 文字列にして後ろに入れればいいんかな?
290 :
287 :2006/08/08(火) 23:11:30
>>289 色々試してみたけど、やはり Column.Count=2 で二列目に空白データぶち込んで
ColumnWidth = (リストボックスの幅-15) ; (10) に指定すると中々よい感じ。
なんだが、スクロールバーが出ない少ない量になると不自然な空白が現れる。
あと、環境によってスクロールバーのデカさが変わってくると....
291 :
デフォルトの名無しさん :2006/08/09(水) 01:48:09
Public Const WM_USER As Long = &H400 Public Const WM_CAP_START As Long = WM_USER Public Const WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25 Private Declare Function SendMessageAsString Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Public Function capFileSaveDIB(ByVal hCapWnd As Long, ByVal FilePath As String) As Boolean capFileSaveDIB = SendMessageAsString(hCapWnd, WM_CAP_FILE_SAVEDIBA, 0&, FilePath) End Function ↑で、クリップボード中の画像をファイルにして保存したかったりするわけですが FilePathを---\hoge.bmp にすると約800KBのファイルが出来ます FilePathを---\hoge.jpg にしても約800KBのファイルが出来ます これ、どうにかなりませんか せめて1/5ぐらいのサイズになりませんか どこかで見つけたDoodle2というDLL使うと bmpとjpgではかなりサイズに差が出るんですけど、できればこのDoodle2使わずに。。。無理ですか?
>>291 ※文句は受け付けません。
Sub jpgsss()
Dim jaws As Chart
Set jaws = ThisWorkbook.Charts.Add
jaws.Paste
Debug.Print jaws.Export("c:\2ch.jpg", "jpg")
End Sub
ありがとうございます サイズは1/10ぐらいまで縮めることが出来ました Debug.Print jaws.Export("c:\2ch.jpg", "jpg") は Debug.Print jaws.Export("c:\2ch.jpg", "jpeg") ですよね いや、そんなことはどうでもいいんですけど このやり方は、まず貼りつけちゃうわけですよね これってグラフ? で、何というか、その。。。あ、いえ何でもないです おやすみなさい
294 :
292 :2006/08/09(水) 04:52:33
>>293 まだしばらく起きてるので答えられる範疇だったら何でも答えますよ。
295 :
デフォルトの名無しさん :2006/08/09(水) 13:24:14
質問です。 アクティブになっているシートからグラフを作りたいんですが どのようにすればいいですか? とりあえず、ここまで作ったんですが、よろしくお願いします! Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Sheets("sheet1").Range("A1:G4354"), _ PlotBy:=xlColumns ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=sheet1!R2C1:R4354C1" ActiveChart.SeriesCollection(1).Values = "=sheet1!R2C2:R4354C2" ActiveChart.SeriesCollection(1).name = "=""系列1""" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "HD" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "xxxxx" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "yyyyy" End With
297 :
295 :2006/08/09(水) 14:22:29
マクロの記録を使ってもシート名が出てできないんです 助けてください
>>297 マクロの記録ができないんだったら、それはマクロでは書けないという事じゃないかな。
299 :
デフォルトの名無しさん :2006/08/09(水) 14:44:57
マクロの記録だと始めからアクティブになっているからできないんだよ
300 :
292 :2006/08/09(水) 14:58:07
一番最初にset なんちゃら =activesheet にしてActiveChart.SetSourceData Source:=Sheets("sheet1").とかの sheets("sheet1")の部分を「なんちゃら」に変えてやればよし。 しかしまず、「ActiveChart」という表現を使うのはやめたほうが吉だと思う
301 :
295 :2006/08/09(水) 15:25:39
ありがとうございます! ActiveChart以外の作り方があったら教えてください!
>>301 それくらい類推してくれ。「active」で苦しむのを身をもって体感したばかりだろ?
chartも同じように set どーたらこーたら = charts.add
としてあげて、あとは全部withブロックで囲むとか。
みんなスキルすげえなw
しょうがないので左に列を1個増やして0を入れたです 値が入ってない列入れてもその列無視された