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)
87 名前:デフォルトの名無しさん [2009/07/20(月) 17:22:16 ] winXP,excel97 ユーザーフォームに6個のオプションボタンを配置し、3つまで選択可能にしたいです これは可能なのでしょうか? できるなら、方法を教えてください プロパティをいじってみたけど上手くいきませんでした
88 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 17:32:04 ] グループ化 でぐぐれ
89 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 17:39:13 ] ・グループネームを全部違うのにして全部選択可能にする ・押された時のイベントで全部のボタン調べて3つ以上チェック入ってたらキャンセル でどうだろう コードはわかんね
90 名前:デフォルトの名無しさん [2009/07/20(月) 17:43:06 ] >>87 普通はオプションボタンは、一つを押すと他の唯一あるTrueの奴が消えることになる。 たとえば、 ○○●●●○ のとき、 一番左のを押すとどれをFalseにすればいいかわからないから、根本的に無理のはず。 やりたいなら、チェックボックス6個に Trueにしたときに、 それをあわせてTrueが3つになったらなら 他のFalseなチェックボックスを選択不能にする。 Falseにしたときに、 他のチェックボックスを選択可能にする。 的なことを書けばいいと思う。
91 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 17:46:44 ] >>85 たとえば暇つぶしに作った業務システムが知らないうちに改修されてて、 コメントしたアニメセリフとかエロ話とか上司の悪口とかを書いてて、 しかもそれが削除されないまま全社配布されたとかそんなの?
92 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 17:48:09 ] オプションボタンを1フレームごとに配置するとかだな? フレームの非表示って出来たっけ
93 名前:デフォルトの名無しさん [2009/07/20(月) 18:03:36 ] >>49 これを使わせていただきます。 コードが1/3以下になりました。 他、レスしてくれた方もありがとうございました。
94 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 18:08:01 ] >>92 プロパティのvisibileをfalseにすれば良いんじゃね?
95 名前:87 mailto:sage [2009/07/20(月) 18:24:56 ] みなさんレスありがとうございます グループ化を試してみます 無理なら>>90 の案を試してみます
96 名前:デフォルトの名無しさん [2009/07/20(月) 20:58:53 ] Windows XP X64 Excel2003 を使用しております。 エクセルにボタンを追加して、 Sub Botton_Click() 'Book1を開く Workbooks.Open "C:\Book1.xls" 'Book2にあるSheet1をBook1のSheetにコピー Workbooks("Book2.xls").Worksheets("Sheet1").Copy _ After:=Workbooks("Book1.xls").Worksheets("Sheet1") End Sub といった感じにボタン押下時に別なブックにシートをコピーしたいのですが 「インデックスが有効範囲にありません」 というエラーが出てしまいます。 VBA初心者で初歩的な質問で申し訳ありませんが、どのようにすれば宜しいでしょうか?
97 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:10:08 ] コピー先のシートをactivateしてみるといんじゃね
98 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:28:31 ] >>97 アクティブにするのを見落としてました・・・ ありがとうございましたm(__)m
99 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:38:55 ] シートのコピーとか確かActiveでなくても普通にできた気がするから釈然としないけどそれで解決したんならいいのか・・・ Book2.xlsが開いててシート名も間違いなければそのままでなぜ駄目なのか?
100 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:47:43 ] Workbooks.Open "C:\Book1.xls" でBook2が非アクティブになったためか、 Workbooks("Book2.xls").Worksheets("Sheet1").Copy _ After:=Workbooks("Book1.xls").Worksheets("Sheet1") Sheet1が2つあるためか
101 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 23:37:54 ] 環境 ・WindowsXp ・Excel2003 sub 修正() On Error Resume Next Dim i as Integer For i 136 to 140 step 1 If Range("AT7").value=Range("C"&i) then Select Case Range("AT7").value Case "お菓子" Range("AT7").Activate Activecell.offset(-43,-4).Activate ←ここでB6がアクティブにならない Activecell.value="お菓子購入" End Select End If Next End sub 上記のコードで矢印の部分「Activecell.offset(-43,-4).Activate」でB6がアクティブにならず、 AT7がアクティブのまま「お菓子購入」が入力されてしまいます。何が原因でしょうか? すみませんがよろしくお願いします。
102 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 23:58:26 ] わからんがとりあえずOn Error Resume Next を外せばデバッグしやすいんじゃね
103 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 00:00:05 ] あーわかった Activecell.offset(-4,-43).Activat にしてみ
104 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 00:15:04 ] AT7からB6なら ActiveCell.Offset(-1, -44).Activate だな
105 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 00:17:38 ] >>102 参考書に書いてあったのでよく分からないままいつも使ってたんですが 初心者はあまり使わないほうがいいんでしょうか? >>103 >>104 ありがとうございます。RowとColumnを逆にしてたんですね。初歩的なミスで質問してしまってすみませんでした
106 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 00:26:19 ] vbに限らずgoto系は使わんほうがいいらしいぜ
107 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 01:20:19 ] >>105 もう見てないかもしれないけど「Activate〜Active」とか「Select〜Selection」が並んでいた場合は 1行にまとめて書けることが多い。 Range("AT7").Activate Activecell.Offset(-1, -44).Activate Activecell.Value = "お菓子購入" ↑この3行は1行にまとめられる。↓ Range("AT7").Offset(-1, -44).Value = "お菓子購入"
108 名前:デフォルトの名無しさん [2009/07/21(火) 13:36:15 ] 現在Excelでソルバーをマクロで操作するプログラムを作っています。 Sub ソルバーループ() With Worksheets("jack") For i = 1 To 10 With Worksheets("jack") Solverok setcell:="$E$1", MaxMinVal:=2, ByChange:="$A$2:$D$2" ‘目的セルをE1として、その最小値を求める。変数はA2:D2。 SolverAdd CellRef:="$F$1", Relation:=1, FormulaText:="$G$1" SolverSolve Userfinish:=True SolverFinish KeepFinal:=1 Worksheets("Sheet1").Cells(i + 0, 5) = Worksheets("jack").Cells(1, 5) Worksheets("Sheet1").Cells(i + 1, 1) = Worksheets("jack").Cells(2, 1) Worksheets("Sheet1").Cells(i + 1, 2) = Worksheets("jack").Cells(2, 2) Worksheets("Sheet1").Cells(i + 1, 3) = Worksheets("jack").Cells(2, 3) Worksheets("Sheet1").Cells(i + 1, 4) = Worksheets("jack").Cells(2, 4) End With Next End With このプログラムのなかの SolverAdd CellRef:="$F$1", Relation:=1, FormulaText:="$G$1" という制約条件で、$G$1 を $G$10 まで変化させていき、各制約条件ごとに一つずつ 結果をワークシートのsheet1に書き込んでいきたいのですが SolverAdd CellRef:="$F$1", Relation:=1, FormulaText:="$G$1"の部分に どのようにして i を組み込めばいいでしょうか? ほんの少しのヒントでも非常に有難いので、お力添えくだされば幸いです。 皆様お忙しいでしょうが、どうぞよろしくお願いいたします。。。
109 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 13:43:38 ] ア
110 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 15:27:22 ] Excelで選択したセルの端をドラッグすると切り取りと張り付けになると思うんですけど この機能自体を使用禁止にすることって出来ますか?
111 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 16:21:06 ] >>108 &
112 名前:デフォルトの名無しさん [2009/07/21(火) 17:13:53 ] すみません質問です。 C列に"abc"という文字列があった場合、その行全体を削除し 上に詰めるというマクロを組みたいのですが どなたか教えていただけますでしょうか。 尚、オートフィルタを使わないやり方でお願い致します。
113 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:23:40 ] 上? 左じゃなくて?
114 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:28:01 ] >>112 1.C列に文字列abcがあるなら行削除 2.配列に
115 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:30:25 ] とりあえず4000行見るマクロ Sub aaa() For a = 1 To 4000 If Cells(a, 3) = "abc" Then Rows(a).Delete shift:=xlUp Next End Sub
116 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:39:44 ] >>112 Sub a() For r = ActiveCell.SpecialCells(xlLastCell).Row To 1 Step -1 If Cells(r, 3) = "abc" Then Rows(r).Delete Next End Sub >>115 上からだとabcが連続していた時に消えない
117 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:41:30 ] >>115 これだと2行つづいて"abc"があった場合抜けてしまわない? オートフィルタを使った方法を教えて欲しい
118 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:47:51 ] オートフィルタはabcが隠れるだけで本当に消えるわけじゃないからなあ
119 名前:デフォルトの名無しさん [2009/07/21(火) 18:11:41 ] >>108 そんなの余裕だろうが。 SolverAdd CellRef:="$F$1", Relation:=1, FormulaText:="G(1+i)" で一発だ。
120 名前:108 [2009/07/21(火) 19:24:43 ] >>109 ,>>111 ヒントをどうもありがとうございます。 ただ、&の意味がわからないのですが、どういうことでしょうか? $だと固定だから&にしろということでしょうか・・・? 無知ですいません。
121 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:30:31 ] >>120 "$G$" & i &は文字列の結合
122 名前:108 [2009/07/21(火) 21:36:02 ] >>121 無事プログラムがうまく動きました! どうもありがとうございます!
123 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:38:52 ] Dim 日数 As Integer Dim 本日 As Date 本日 = Date 日数 = DateDiff("d", "2009/7/10", "本日") とやったところ、型が一致しませんとでます。 本日までの日数を求めたいのですがどうすればいいのでしょうか?
124 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:44:33 ] Excel立ち上げず書いてるからおかしかったら突っ込みよろしく >>117 sub オートフィルタを使った方法() Dim 元シート as WorkSheet,作業シート as WorkSheet Set 元シート=ActiveSheet 元シート.Copy Set 作業シート=ActiveSheet 作業シート.Range("C1").AutoFilter 1,"<>""*abc*""" 作業シート.Cells.SpecialCells(xlCellTypeVisible).Copy 元シート.Cells. 作業シート.Parent.Close False End sub
125 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:47:28 ] >>123 "本日" w
126 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:47:51 ] >>123 変数の本日にはダブルクォーテーションいらんよ 「本日」という文字列は計算できんじゃろ
127 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 22:08:31 ] 125に代わっていうと 日数 = DateDiff("d", "2009/7/10", "本日") は 日数 = DateDiff("d", "2009/7/10", Now) 日数 = DateDiff("d", "2009/7/10", Date)
128 名前:124 mailto:sage [2009/07/21(火) 22:12:34 ] あっコピー先の最後の「.」はいらんわな あとクライテリアの*abc*を囲う必要があったかなかったか自信ない
129 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 22:37:38 ] >>116 けつからやんのか。頭良いな。
130 名前:123 mailto:sage [2009/07/21(火) 22:40:21 ] レスありがとうございます。 無事できました。>>127 さんのようにしました。
131 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 00:02:50 ] >>129 基本中の基本。 君の頭が○○なだけです。
132 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 00:21:45 ] こんなんピボットでやれば一発だわwwwww
133 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 01:32:28 ] >>131 おまえにいってねえからwww
134 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 18:03:46 ] また堕ちるぞ
135 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:04:58 ] >>133 ワロスw
136 名前:デフォルトの名無しさん [2009/07/23(木) 00:42:00 ] 現在Excelで作ったxmlを特定のURLへ送信するプログラムを作成しています。 (Microsoft XML version2.0使用) Sub xml() Dim aaa As Integer aaa = "001" Dim bbb As String bbb = "001" Dim xmlDoc As MSXML.DOMDocument Dim xmlPI As IXMLDOMProcessingInstruction Dim node(3) As IXMLDOMNode Dim attr As MSXML.IXMLDOMAttribute Set xmlDoc = New MSXML.DOMDocument Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "TEST", "")) Set node(2) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "test1", "")): node(2).Text = aaa Set node(2) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "test2", "")): node(2).Text = bbb '作成されたxml確認用 xmlDoc.Save ("test.txt") End Sub @set nodeに入れたaaaとbbbですが、1と表示されてしまいます。001と表示するにはどうしたら良いのでしょうか。 A作成された値(xml)を特定のURLへ送信したいのですが、どのライブラリ?等を利用すれば宜しいでしょうか (値を送ると、<result>NG</result>といった値が返却される予定です) すみませんがお力添え頂けると幸いです。
137 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 02:07:25 ] >>136 Excel 2007 + MSXML3 (MSXML2がなかった)とVBScript 5.0 + MSXML2 (Officeがなかった)の2環境でやってみたが、 いずれもbbbのほうは001になったぞ。 それをHTTPで送りたいのなら、MSXML.XMLHTTPRequestを使えばいい。
138 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 03:52:34 ] 変数についてなんですが、 ----------------------------------- Dim 値 As Integer 値 = Range("A1") Range("A1").FomulaR1C1 = "COUNTA(R[1]C[1],R[1]C[10])" 'A行 Range("A1").Copy Range("A1").PasteSpecial (xlCellTypeValue) Range("B1").Activate Activecell,offeset(1,値).Select 'B行 --------------------------------------------------------- 上記のようなコードで実行するとA行で集計されたはずの数値がB行に来た段階で代入されていないようなのですが、 変数というのは、宣言の時点で代入される数値が決まっていないといけないのでしょうか?
139 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 06:29:56 ] Range("A1").FomulaR1C1 = "=COUNTA(R[1]C[1],R[1]C[10])" 'A行 いこーるつけなさい
140 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 07:47:58 ] >>138 エスパーするとやりたいのはこういうこと? Dim 値 As Integer 値 = WorksheetFnction.CountA(Range("B2:K2")) Range("B1").Offeset(1,値).Select 質問に直接答えれば宣言はいつしてもいいけど変数の使い方がおかしい Integer→Rangeに変えてSet 値 = Range("A1") 最後の行をActiveCell..Offeset(1,値.Value).Select
141 名前:デフォルトの名無しさん [2009/07/23(木) 18:06:57 ] >>138 Activecell,offeset(1,値).Select 'B行 ↑ 点の種類間違ってる 最後の行はたぶんoffeset→offset クライマックスの2行まとめて Cells(2,2+値).Select 'ともかけるます >>140 変数の使い方はあってない? Range("A1") を取得すると Range("A1").Value を返すしIntegerで足りるし 値.Copy とかやるでもないし
142 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 18:36:20 ] Excel2007です。 赤丸(背景色は透明)を作りたいのですが、背景色を透明にできません。 Shape.Line.BackColorの編集でできそうなのですが、検索方法が悪いのか見つかりません。(この予測は間違いですか?) Dim myShape As Shape With ThisWorkbook.Worksheets("Sheet1") Set addCell = .Cells(intRow, intCol) Set myShape = .Shapes.AddShape(msoShapeOval, addCell.Left, addCell.Top, addCell.Width, addCell.Height) myShape.Line.ForeColor.RGB = RGB(255, 0, 0) myShape.Line.Weight = 2 End With よろしくお願いいたします。
143 名前:デフォルトの名無しさん [2009/07/23(木) 18:48:15 ] >>142 myShape.Fill.Visible = msoFalse
144 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 19:52:54 ] >>143 無事、透明になりました。ありがとうございます。
145 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 22:14:47 ] >>141 あっ、そういう風に見れば 間違ってるのは変数「値」にA1の値を代入するタイミングだな
146 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 23:31:01 ] >>137 ありがとうございます!
147 名前:デフォルトの名無しさん [2009/07/25(土) 12:07:00 ] エクセル2000を使用しています。 コンボボックス2個、テキストボックス1個、コマンドボタンのユーザーフォームで シートに以下の図のようにデータがあります。 コンボボックス1にA列の値、コンボボックス2にB列の値を入れて、 コマンドボタンを実行すると、該当するC列の値をテキストボックスに表示する にはどうすればいいですか? A B C 1 ああ カカ 100 2 ああ キキ 200 3 ああ クク 300 4 いい ケケ 400 5 いい ココ 500 コンボボックス1に「ああ」、コンボボックス2に「クク」なら テキストボックスは「300」になるようにしたいです。 よろしくお願いします。
148 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 12:24:06 ] 曖昧だな
149 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 12:35:45 ] 1とA、2とBの合致をANDでもいいから組み合わせて、そのセルを変数に格納して、テキストボックス=セル(変数、3).バリューすればいいかも!
150 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 12:44:08 ] vbaが体系的に勉強できるサイトや本でおすすめあれば教えてください。
151 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 12:48:49 ] >>150 ここでROMがお奨め(;゚д゚)ァ
152 名前:デフォルトの名無しさん [2009/07/25(土) 13:27:13 ] 項目1, 項目2, 項目3, 項目4, 項目n・・・(最大:n=255) あああ, ううう, えええ, くくく, ・・・ いいい, , おおお, けけけ, ・・・ , , かかか, , ・・・ , , ききき, , ・・・ (最大:行=65535) とあった場合、 項目1, 項目2, 項目3, 項目4・・・ あああ, ううう, えええ, くくく いいい, ううう, おおお, くくく あああ, ううう, かかか, くくく いいい, ううう, ききき, くくく あああ, ううう, えええ, けけけ いいい, ううう, おおお, けけけ あああ, ううう, かかか, けけけ いいい, ううう, ききき, けけけ ・ ・ ・ のように、データを詰めて別のシートの同じ位置(例:A1)から出力したいです。 ※行・列は可変データです。
153 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 13:29:47 ] >>150 151もおすすめだけど「体系的」ではないわなw 確かスレ違いだったと思うから紹介はしないが適当にググればいくつか出てくるからサイトさがしはそんなに難しくない 本買うなら最初はあまり分厚いのでなくて初心者向けの簡単な入門書やってみれば 自分が身につけたいことが見えてきて次に本買うときは自分の好みに合った本選びできる
154 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 13:37:24 ] >150 excel vba 入門 に一致する日本語のページ 約 183,000 件中 1 - 10 件目 (0.35 秒)
155 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 13:39:59 ] >>152 これって 丸投げというか、依頼じゃね 何がわからないか書かないと答えられないだろ
156 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 13:45:47 ] >>152 nhngdおk
157 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 13:59:52 ] >152 この例だとfor〜nextループ4重で行数は2×1×4×2=16行。 組み合わせの問題で項目数が不定ということは再帰処理ができるとわかりやすいんだろうけど・・・・ 「excel vba 再帰」でググったら再帰プログラムができるらしい。 ひとつ間違えると無限ループになるし、項目数最大256個が大丈夫なのか、やってみないと なんともいえない。
158 名前:157 mailto:sage [2009/07/25(土) 17:28:56 ] >152 行基準(再帰処理)でやろうとしたら、こんがらがってしまい中断。列基準だとなんかできそう。 先に列数(4)と、列毎の行数を調べ、配列に設定。この際添え字は0〜列数+1とし、 配列(0)と配列(列数+1)の内容は1にしておく。 その結果、配列(0)=1、配列(1)=2、配列(2)=1、配列(3)=4、配列(4)=2、配列(5)=1 となる。 左端列(A列:列番号1)は当該列の要素("あああ"、"いいい"の2種類をそれぞれ左側の組み合 わせ数1回繰り返したものを右側の組み合わせ数(1×4×2=)8回出力する。 →あああ、いいい を8回 B列(列番号2)は当該列の要素("ううう")の1種類をそれぞれ左側の組み合わせ数2回繰り返した ものを、右側の組み合わせ数(1×4×2=)8回出力する。 →ううう、ううう を8回 C列(列番号3)は当該列の要素("えええ"、"おおお"、"かかか"、"ききき")の4種類をそれぞれ 左側の組み合わせ数2回繰り返したものを、右側の組み合わせ数2回出力する。 →(えええ を2回、おおお を2回、かかか を2回、ききき を2回)を2回 D列(列番号4)は当該列の要素("くくく"、"けけけ")の2種類をそれぞれ左側の組み合わせ数 8回繰り返したものを、右側の組み合わせ数1回出力する。 →くくく を8回、けけけ を8回 列数がNで、n列目の出力を考えた場合、 要素数は 配列(n) 左側の組み合わせ数は 配列(0)×配列(1)×・・・×配列(n−1) A列の場合も配列(0)=1があるので計算に支障なし 右側の組み合わせ数は 配列(n+1)×・・・配列(N−1)×配列(N) 最右列の場合も配列(N+1)=1があるので計算に支障なし
159 名前:157 mailto:sage [2009/07/25(土) 17:35:38 ] >158の続き >152の例だと「項目3」が えええ、おおお、かかか、ききき、えええ、・・・という 順番だけど、えええ、えええ、おおお、おおお、かかか、かかか、ききき、ききき・・・の 並びの方が組み合わせ順としては自然だと思う。項目4も同様に同じものが8回ずつ繰り返す ことになります。 >152 ここまで示したらできますか?
160 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 18:55:00 ] よくわからないけど、列ごとにソートしたいのか? 格納用の配列(65534、254)を用意 ソート用の配列(65534、0)を用意 列をカウントする変数iを用意 for i=0to254 ソート用の配列に列データを格納、ソート 格納用の配列(65534、i)にソートしたデータを格納 最後にシートに格納した配列を流し込む
161 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 20:12:03 ] >>152 死ぬほど遅いけどこういうことか? Sub test() For Each c In Range(Cells(1, 1), Cells(65535, 255)) If (c.Value = Empty And c.Rows > 1) Then c.Value = c.Offset(-1, 0).Value End If Next End Sub
162 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 21:10:28 ] >>152 1.まず、項目1...nの要素を数える 2.数えた要素を掛け算、K1xK2x...xKn 3.2.で得られた数値が必要な行数なので、 各項目ごとに各要素で必要行数だけ埋める
163 名前:162 mailto:sage [2009/07/25(土) 21:13:15 ] すまそ 2.数えた要素の、最小公倍数を求める
164 名前:162 mailto:sage [2009/07/25(土) 21:16:14 ] すまそ だれか、2.の正解を頼む
165 名前:162 mailto:sage [2009/07/25(土) 21:18:27 ] ああ、最初の162で正解でした
166 名前:162 mailto:sage [2009/07/25(土) 21:22:58 ] >>152 の質問で あああ, ううう, おおお, くくく の組み合わせが必要かどうかで答えが変わるね スレよごし、すまそ
167 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 00:54:28 ] 環境 ・WindowsVista ・Excel2002 A1〜A10の合計をC2に表示させるマクロを作りたいのですが上手くいきません。 自分で作ったのは以下の通りです。 Sub practice() Dim i As Integer For i = 1 To 10 Cells(2, 3) = Cells(i, 1) + Cells(i, 1) + Cells(i, 1) + Cells(i, 1) + Cells(i, 1) + Cells(i, 1) + Cells(i, 1) + Cells(i, 1) + Cells(i, 1) + Cells(i, 1) Next i End Sub アドバイスを頂けると助かります。 よろしくお願いします。
168 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 01:01:07 ] どううまく動かないか説明もせずにアドバイスとな
169 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 01:12:49 ] 説明不足で申し訳ありません。 上手くいかないというのは合計の値がオートSUMで計算した合計と一致しないということです。
170 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 01:21:21 ] やりたいことはコレか? Sub practice() Dim i As Integer Dim sum as Integer sum = 0 For i = 1 To 10 sum = sum + Cells(i, 1) Next i Cells(2, 3) = sum End Sub
171 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 01:26:42 ] >>167 元マクロ無視して書けばこういうこと? Sub practice() range("c2") = worksheetfunction.sum(range("a1:a10")) End Sub
172 名前:167 mailto:sage [2009/07/26(日) 01:28:41 ] >>170 値が一致しました。ありがとうございました。
173 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 03:50:40 ] どうせ小数をintegerで計算したってオチだろ
174 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 08:32:13 ] セルを各々9回余分に加算してたんだろ
175 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:25:18 ] 動かないとかエラーが出てるとか書く時はどう望んだ風に動かないとかどんなエラーメッセージが出てるとか書け と>>1 に書いたとしても、読みもしないんだろうなぁ。
176 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:33:22 ] エスパーだけどループ処理を使ってSUMさせる課題か何かだな
177 名前:デフォルトの名無しさん [2009/07/26(日) 13:48:35 ] よろしくお願いしますm(__)m Excelで店舗の営業日報を作れるデータを作成しました。 他人がそのデータを使うワケなのですが、 データに打ち込んで、上書き保存などはできるが、 データそのものを複製やコピーする事を防止する事は可能ですか? また、暗証番号機能などで、その複製のロックを管理する事は可能でしょうか? あるとすればどのような手段でデータをその人に預ければよいのでしょうか。 わかりずらいかも知れませんが よろしくお願いしますm(__)m
178 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 14:00:33 ] >>177 マルチ 芯でください
179 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 16:08:32 ] できる で、マルチならどこなのか晴れYO
180 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 16:09:31 ] 54 :名無しさん@そうだ選挙にいこう :2009/07/26(日) 13:28:31 よろしくお願いしますm(__)m Excelで店舗の営業日報を作れるデータを作成しました。 他人がそのデータを使うワケなのですが、 データに打ち込んで、上書き保存などはできるが、 データそのものを複製やコピーする事を防止する事は可能ですか? また、暗証番号機能などで、その複製のロックを管理する事は可能でしょうか? あるとすればどのような手段でデータをその人に預ければよいのでしょうか。 わかりずらいかも知れませんが よろしくお願いしますm(__)m
181 名前:デフォルトの名無しさん [2009/07/26(日) 17:25:08 ] 自分>>177 です。 マルチとは 『他でも質問してる』 って意味なのですね。 すみませんm(__)m ドコで質問すればベストか、また、 色んな人に聞けばもしかしたら、と思い書き込みしてしまいましたm(__)m ご迷惑おかけしましたm(__)m さしつかえ無ければ>>179 さん、簡単にでも教えていただけませんでしょうか? よろしくお願いしますm(__)m
182 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:29:37 ] ↑ 女子大生or女子高生なら、即解決w
183 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:53:50 ] ☆質問例☆ Excelで店舗の営業日報を作れるデータを作成しました。 他人がそのデータを使うワケなのですが、 都内の中学校にかよう15歳の女子中学中学生ですが、最近中学1年の妹の胸が大きくなってきて困ります。 まだ中学生なのに私よりも膨らみが目立っているのが少し悲しいです。 一緒にお風呂に入るとよくわかります。 妹は私の気持ちに気がつくどころか、ことあるごとにさわったりもんだりしてくるのです・・・。 データに打ち込んで、上書き保存などはできるが、 データそのものを複製やコピーする事を防止する事は可能ですか? また、暗証番号機能などで、その複製のロックを管理する事は可能でしょうか? あるとすればどのような手段でデータをその人に預ければよいのでしょうか。 今日もスポーツブラの下から手を入れてきて、声を堪えるのに大変でした。 わかりずらいかも知れませんが よろしくお願いしますm(__)m
184 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 18:13:54 ] 俺は貧乳でもOKだよ。
185 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 22:33:47 ] XP,OFFICE 2007 初心者&初カキコです。 いきなりすみません。 配列変数 A(3,100)があるとして、 A(2,0)〜A(2,100)や、A(3,0)〜A(3,100)といった各一次元配列の平均をそれぞれ出したいのですが、 全ての平均を出す場合は .Average(A) ですが、各次元毎だと、方法が解りません。 どなたか指導をお願いします。
186 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 22:48:03 ] 環境 ・WindowsVista ・Excel2007 SheetAに貼った画像の中から選択したものを一つSheetBに貼りたいんですが どうすればいいですか?
187 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 22:58:51 ] >186 マクロの自動記録は試してみましたか? 当方Excel2003ですが、自動記録してできたソースの1〜2行コメント化するだけで、できましたよ。