Excel VBA 質問スレ Part33
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/17(木) 22:04:40.64___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
前スレ
Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151717/
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人はこちらのスレへ
http://toro.2ch.net/test/read.cgi/tech/1381151995/l50
0131デフォルトの名無しさん
2013/12/08(日) 01:00:28.87Option Explicit
Implements ISheetParameterEntity
Dim mTargetRange As range
Const SORT_ITEM1 As Long = 0
Const SORT_ITEM2 As Long = 1
Const GROUP_COLUMN As Integer = 2
Const SUMMARY_ITEM As Integer = 3
'対象シート取得
Public Function ISheetParameterEntity_GetTargetSheet() As Worksheet
Set ISheetParameterEntity_GetTargetSheet = Sheet2
End Function
'対象範囲取得
Public Function ISheetParameterEntity_GetTargetRange() As range
Set ISheetParameterEntity_GetTargetRange = mTargetRange
End Function
'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub
0132デフォルトの名無しさん
2013/12/08(日) 01:01:16.16Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet2, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet2, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function
'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function
'対象合計項目取得
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function
0133デフォルトの名無しさん
2013/12/08(日) 01:03:07.08Option Explicit
Implements ISheetParameterEntity
Dim mTargetRange As range
Const SORT_ITEM1 As Long = 3
Const SORT_ITEM2 As Long = 0
Const GROUP_COLUMN As Integer = 4
Const SUMMARY_ITEM As Integer = 3
'対象シート取得
Public Function ISheetParameterEntity_GetTargetSheet() As Worksheet
Set ISheetParameterEntity_GetTargetSheet = Sheet3
End Function
'対象範囲取得
Public Function ISheetParameterEntity_GetTargetRange() As range
Set ISheetParameterEntity_GetTargetRange = mTargetRange
End Function
'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub
0134デフォルトの名無しさん
2013/12/08(日) 01:03:56.94Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function
'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function
'対象合計項目
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function
0135デフォルトの名無しさん
2013/12/08(日) 01:06:09.64'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub
'対象ソート項目取得
Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function
'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function
'対象合計項目
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function
0136デフォルトの名無しさん
2013/12/08(日) 01:15:14.00モジュール:SheetParameterFactory
'シートパラメタエンティティ作成クラス
Public Function makeSheetParameter(ByVal targetSheet As Worksheet) As ISheetParameterEntity
Dim instance As ISheetParameterEntity
Select Case targetSheet.Name
Case Sheet2.Name
Dim sht2Para As Sheet2ParameterEntity
Set sht2Para = New Sheet2ParameterEntity
Set instance = sht2Para
Case Sheet3.Name
Dim sht3Para As Sheet3ParameterEntity
Set sht3Para = New Sheet3ParameterEntity
Set instance = sht3Para
Case Else
Set instance = Nothing
End Select
Set makeSheetParameter = instance
End Function
0137デフォルトの名無しさん
2013/12/08(日) 01:36:17.38が、>>130の部分がインターフェースで
、
>>123でそのインターフェースの型を用意して、>>136でSheet2ParameterEntityか、Sheet3ParameterEntityの
どちらかを生成して>>123で用意した型に設定しています。
後は生成される二つのクラスの中以外は差異なくコードが走るため、
クラスの違いによる分岐は有りません。
この様に違うクラスで生成したものを同じクラスの型で扱えるようにする
仕組みが、中に何も書かれていない関数の正体です。
0138デフォルトの名無しさん
2013/12/08(日) 01:39:18.23ごめんなさいもう二度としません。
0139デフォルトの名無しさん
2013/12/08(日) 07:58:29.03へー、面白いな、これ。
「Width」って「うぃどぅす」って呼ぶのが一般的なんだ。
今までずーっと「ワイズ」だと思ってた。
0140デフォルトの名無しさん
2013/12/08(日) 08:27:53.85「Vba、インターフェース、ストラテジーパターン」あたりで
ググれと言えば一発で分かることだろ。
どうしても長いコード書きたかったら前
桃臼が晒してたコード書き場があったから
そこを使え。
どこだったかは忘れたけど。
0141デフォルトの名無しさん
2013/12/08(日) 09:52:33.48京都人「うぃどす」
0142デフォルトの名無しさん
2013/12/08(日) 10:19:44.06いばらきと
いばらぎで僅差なんだね。
本当はどっち?
0143デフォルトの名無しさん
2013/12/08(日) 11:10:35.20ちばらき
0144デフォルトの名無しさん
2013/12/08(日) 11:30:50.96なぜか合ってるのか不安になる音です
0145デフォルトの名無しさん
2013/12/08(日) 12:26:13.530146デフォルトの名無しさん
2013/12/08(日) 12:42:17.43キュートなお声ですよね
0147デフォルトの名無しさん
2013/12/08(日) 15:06:03.17最初のAAAからして読み方の
西恋ケ窪とかどこだよ。
IEnumerableって何なんだよ。
0148デフォルトの名無しさん
2013/12/08(日) 15:34:26.830149デフォルトの名無しさん
2013/12/08(日) 18:05:50.91Javaもやっている私の同僚はインデント階層切替わりの単位で変数宣言をします。
関数内のどこで変数宣言しても特に動きが変わらないのは知っていますが、
同僚に言わせるとその方が分かり易いし、いずれObject指向言語に手を付けるなら、
そっちの方に慣れておいた方がいいと言います。
そう言うものなんでしょうか?
0150デフォルトの名無しさん
2013/12/08(日) 19:32:44.84>関数内のどこで変数宣言しても特に動きが変わらない
VBAではそうでも、Javaではそうではない
言語に合わせて宣言するべきで、VBAではプロシジャの先頭での宣言が薦められてたはず
まあ、どこで宣言しても良いんだが、ルールを決めてそれを守る方が大事
先頭で宣言したり使う直前に宣言したり、混在させるのが最悪
0151デフォルトの名無しさん
2013/12/08(日) 20:55:04.75vbaはやっぱり頭で合わせるもんだと思う。
無理してjavaなんぞに合わせなくても
object指向ので作る時にそうすればいいじゃない。
0152デフォルトの名無しさん
2013/12/08(日) 21:01:29.51冗談で言ってるのかと思ったら
本当でビビったw
0153デフォルトの名無しさん
2013/12/08(日) 21:07:26.86DimとPrivateの違いって何なの?
0154デフォルトの名無しさん
2013/12/08(日) 21:37:29.33モジュールレベルで宣言したときのスコープ(参照できる範囲)が違う
と思ったけど、モジュールレベルで使うとDimと同じスコープか
プロシジャレベルで使えるかどうかの違いだけで同じだな
VBではPublicかPrivate書いたらDimを省略できる出来るだけだったと記憶してるが
VBAではそうじゃないっぽいな
0155デフォルトの名無しさん
2013/12/09(月) 20:52:31.18Dimは遠い昔の、それこそVBじゃない頃、
N-Basicとかで配列をDim(dimension)で
宣言してた頃の名残りで盲腸みたいなもんだから、
出来ればPrivateで宣言した方がいいと、個人的には思う。
コメントをアポストロフィで付けないで、REMで書く様なもん。
0156デフォルトの名無しさん
2013/12/10(火) 01:13:10.320157デフォルトの名無しさん
2013/12/10(火) 01:51:33.240158デフォルトの名無しさん
2013/12/10(火) 02:05:44.25引用符(コーテーションマーク、クォーテーションマーク)は、前と後の一対で使うもの
0159デフォルトの名無しさん
2013/12/10(火) 02:09:15.25日本語ではあまり使われない
(中国語や韓国語では普通に使われるらしい)
0160デフォルトの名無しさん
2013/12/10(火) 02:38:21.76もともともコメント記号としてどっちの意図で使われたのかはわからんしなぁ
俺もこの文脈なら'はアポストロフィって言うんだが、ヘルプみると
>コメントを入力するには、先頭にクォーテーション (') を入力するか、Rem ステートメントで指定します。
とか
>コメント行は、先頭にクォーテーション (') または Rem ステートメントのいずれかと、
とか書いてあるから、あれはクォーテーションと呼ぶのが正しいのかもしれん
0161デフォルトの名無しさん
2013/12/10(火) 03:14:25.20英語的な解釈をするなら、アポストロフィはコメント行の先頭に使っていい記号ではない
本来はクォーテーションで前後を囲ったであろう物を、8bit時代のMS-BASICのリソース的な制約から
後半を省略可能にしたと見るのが妥当
0162デフォルトの名無しさん
2013/12/10(火) 04:19:23.00そのJIS企画の当該ページのリンクが貼られたらこの話は終わりにしよう。
それまでは存分に語らい合いましょう!
ってExcel VBAスレじゃないですか。
おわり。
0163デフォルトの名無しさん
2013/12/10(火) 04:33:44.43お前のキーボードはjIS規格配列なのか?
VBAはいつからJIS規格になったんだ
違う規格の定義をあてはめて議論の余地がないとか笑わせる
0164デフォルトの名無しさん
2013/12/10(火) 04:42:38.53これは確かにと言わざるを得ない。
これで結論はもう出たということか。
VBAのオフィシャルドキュメントで、
コメントには何を使うと記載されているのか?
で、この話に執着する者達が終着できそうだ。
公式文書のリンクが貼られたらこの話は終わりにしよう。
それまでは存分に語らい合いましょう!
って略
0165桃白白 ◆9Jro6YFwm650
2013/12/10(火) 05:26:36.90語らうには語り合うという意味があるから合うを付ける必要ないんじゃないかな。
語らいましょう、または、語り合いましょうでいいと思うんだよね。
0166デフォルトの名無しさん
2013/12/10(火) 05:33:56.97うっせーばーか
いいと思うんだよねってなんだよ
いいんだよって言い切れないのかよ
もっと自信もてよボケカス
早くVBAの公式文書のリンク持ってこいや
0167桃白白 ◆9Jro6YFwm650
2013/12/10(火) 05:38:24.57/ つ⊂ \ 怖いー
0168デフォルトの名無しさん
2013/12/10(火) 05:57:51.45\ U /
/ ̄ ̄ ヽ,
/ ', / _/\/\/\/|_
\ ノ//, {0} /¨`ヽ {0} ,ミヽ / \ /
\ / く l ヽ._.ノ ', ゝ \ < バーカ! >
/ /⌒ リ `ー'′ ' ⌒\ \ / \
(  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄
` ̄ ̄`ヽ /´ ̄
| |
−−− ‐ ノ |
/ ノ −−−−
/ ∠_
−− | f\ ノ  ̄`丶.
| | ヽ__ノー─-- 、_ ) − _
. | | / /
| | ,' /
/ / ノ | ,' \
/ / | / \
/_ノ / ,ノ 〈 \
( 〈 ヽ.__ \ \
ヽ._> \__)
0169デフォルトの名無しさん
2013/12/10(火) 19:53:40.33「'」に変わりはないんだろうし。
0170デフォルトの名無しさん
2013/12/13(金) 00:23:21.08それに音程付けてボーカロイドみたいにすることってできますか?
0171デフォルトの名無しさん
2013/12/13(金) 05:55:28.560172デフォルトの名無しさん
2013/12/15(日) 07:52:32.98可能
0173デフォルトの名無しさん
2013/12/15(日) 20:26:43.18マクロが使用できないか、全てのマクロが無能になっている可能性があります、と出ます
どうすれば多変量解析を実行できるでしょうか?
0174デフォルトの名無しさん
2013/12/15(日) 20:39:43.00excel2007以降なら信頼できる場所に置いてあるのかいないのかなどなど情報を一切書かず
0175デフォルトの名無しさん
2013/12/15(日) 20:45:23.66他のブックのVBAでも同じ状態?
ググって見つかった下記などは試してみたのかな
http://answers.microsoft.com/ja-jp/office/forum/office_2007-excel/%E7%AA%81%E7%84%B6%E3%83%9E%E3%82%AF%E3%83%AD/b9379ad8-40f6-4415-b490-3090a900a8a0?msgId=122645e7-040b-400b-8f7e-77bddfa6e101
0176デフォルトの名無しさん
2013/12/17(火) 22:47:10.17同じ質問になると思いますが
日付で今日より1年前のデータで、最古のデータ行を拾いたいのです
WorksheetFunction.Matchで照合の型を-1で、降順に並び替えれば
うまくいきますが、データは昇順の状態で
一年前の最古のデータ行を拾う方法ありますか?
昇順のままで照合の型を-1だと当然失敗します
(最新のデータを拾ってしまいます)
いろいろ調べたのですが、いい方法がみつかりませんでした
どなたかいい方法ありませんか?
0177デフォルトの名無しさん
2013/12/17(火) 23:20:52.18マルチ
どちらかを質問終了するべし
0178176
2013/12/19(木) 01:49:09.750179デフォルトの名無しさん
2013/12/19(木) 18:30:09.13作りたいのですが、
たとえば1つ目のtextの1行目をA-1に 2行目の記述をB-1に …
と6行を6列のに読み込み、さらにファイル名(文字列)を7列目のG-1に読み込み、
2つ目のtextの1行目をA-2に、2行目の記述をB-2に …
と読み込ませることはできませんでしょうか?
0180デフォルトの名無しさん
2013/12/19(木) 19:30:34.700181デフォルトの名無しさん
2013/12/19(木) 19:40:28.240182デフォルトの名無しさん
2013/12/19(木) 19:52:46.930183デフォルトの名無しさん
2013/12/19(木) 21:54:28.52とりあえず書いてみたけど、やっつけなのでエラー処理とかは書いてません
以下のマクロを書いたブックと同じフォルダに"text"フォルダを作って
その中に読み込ませたいテキストファイルを入れてください。
マクロを実行すると、マクロと同じフォルダに"test.xlsx"というファイルが作成されます。
既に"test.xlsx"が存在する場合、上書きするか聞いてきます。
"text"フォルダ内には不要なファイルは入れないでください。
Option Explicit
Sub test()
Dim f As Object
Dim w As Workbook
Dim t As Workbook
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set w = Workbooks.Add
With w.Sheets(1)
For Each f In fso.GetFolder(ThisWorkbook.Path & "\text").Files
Set t = Workbooks.Open(f)
t.Sheets(1).UsedRange.Copy
If .Cells(1, 1) = "" Then
.Cells(1, 1).PasteSpecial Transpose:=True
Else
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Transpose:=True
End If
t.Close
Next f
End With
w.Close SaveChanges:=True, Filename:=ThisWorkbook.Path & "\test.xlsx"
End Sub
0184183
2013/12/19(木) 22:08:35.180185183
2013/12/19(木) 22:22:52.58t.Close
の行の前に
.Cells(.Rows.Count, 1).End(xlUp).End(xlToRight).Offset(, 1) = t.Name
ってのを一行入れてください。
0186デフォルトの名無しさん
2013/12/20(金) 09:18:25.34あなたは救世主です!
本当にたすかりました。
0187デフォルトの名無しさん
2013/12/20(金) 16:20:17.72いつ切り捨てするのかよくわかりませんでした。
計算は1度計算したのをさらにかけたり割ったりします。
ここで、
最初にかけ算→小数点切り捨て→かけ算
なのか
かけ算→かけ算→割り算など全部した後いっきに切り捨てた方が良いのか
前者でやっていたんですがこの2つだと当然答えも違ってきますよね
普通どっちが正解なんですか?
0188デフォルトの名無しさん
2013/12/20(金) 18:55:18.13http://toro.2ch.net/test/read.cgi/tech/1381151995/236
0189デフォルトの名無しさん
2013/12/20(金) 22:31:06.750190デフォルトの名無しさん
2013/12/21(土) 23:30:15.40スレ立て自体がマルチなんだからしゃーない
0191デフォルトの名無しさん
2013/12/22(日) 06:22:28.690192デフォルトの名無しさん
2013/12/30(月) 19:22:49.48来年もお力をお借りするかもしれませんが宜しくお願いいたします
机周りの掃除が終りましたので帰ります
皆様良いお年を!@22歳OL
0193デフォルトの名無しさん
2013/12/31(火) 00:00:44.710194デフォルトの名無しさん
2014/01/01(水) 11:34:15.700195デフォルトの名無しさん
2014/01/03(金) 13:54:51.990196デフォルトの名無しさん
2014/01/03(金) 22:44:38.740197デフォルトの名無しさん
2014/01/04(土) 02:37:30.74ピラフ知らない?
0198デフォルトの名無しさん
2014/01/04(土) 05:04:21.8723歳OL
0199デフォルトの名無しさん
2014/01/14(火) 15:36:02.26適当に1〜100までとか1〜20までとかの数字から無作為に実数の数字を抽出
するのはどうしたらいいのでしょうか。
0200デフォルトの名無しさん
2014/01/14(火) 16:31:22.93VBA 乱数 とかでググるといいと思うよ
0201デフォルトの名無しさん
2014/01/14(火) 18:59:00.73Rnd でどう?
0202デフォルトの名無しさん
2014/01/16(木) 02:21:35.14らんだまいずもわすれずにね
0203デフォルトの名無しさん
2014/01/17(金) 15:26:54.710204デフォルトの名無しさん
2014/01/19(日) 02:44:28.45同じファイルにある他のマクロはちゃんと起動するのですが、
同じファイルにある、とあるマクロを実行しようと
ユーザーフォームの実行(▲を右90度傾けたボタン)を押しても
うんともすんともいいません。
エラーも出ません。
何が原因だと思いますか?
0205デフォルトの名無しさん
2014/01/19(日) 03:11:26.69一瞬で計算が終わって、動いてるのに気付いてないだけの可能性
0206デフォルトの名無しさん
2014/01/19(日) 09:29:19.72具体的なコードを貼らないと、なんとも言えん。
具体的なコードを晒すのが嫌なら、自力でなんとかするか諦めよう。
というか、コード全部は晒さないにしても、ステップ実行とかして
どの関数やステートメントで想定外の動作が起きてるか調べて
もうちょっと詳しい状況書けば、憶測も少しは煮詰まるかもだけどな。
そもそもデバッグ出来ないってのはVBA使えないのと同義だからね。
不都合が起こったところでお手上げでいいなら、コード書くだけは
パソコンで文字入力できる全ての人に可能な行為だからな。
0207204
2014/01/19(日) 19:45:55.40すみません。正解です。
最初のfornextの、終了回の変数名の打ち間違いで、
どうやら0回ループになっていたようです。
>>206
すみませんでした。
0208デフォルトの名無しさん
2014/01/19(日) 22:34:06.31「プログラムは決して思った通りには動かない。書いた通りに動くだけだ。」
0209デフォルトの名無しさん
2014/01/21(火) 10:55:48.330210デフォルトの名無しさん
2014/01/23(木) 04:13:29.39この場合どのようにPDFファイルのmediaboxを参照すれば良いか教えてください。
0211デフォルトの名無しさん
2014/01/23(木) 04:17:34.570212デフォルトの名無しさん
2014/01/23(木) 19:06:40.970213デフォルトの名無しさん
2014/01/23(木) 20:00:12.850214デフォルトの名無しさん
2014/01/23(木) 21:15:12.64なんて言うと、例のキチガイがまたうるさそうだけど
0215デフォルトの名無しさん
2014/01/23(木) 21:32:49.29「VBA pdf」でググれば情報が見つかる
0216デフォルトの名無しさん
2014/01/25(土) 18:18:15.20(1)特定の文字列を持つセルを詮索する。
(2)(1)で検索したセルの2セル下までの行から、特定の文字列を持つセルを検索する。
(※2セルは結合されているセルがある)
ということをしたいです。
(1)で取得したセルの行や列番号を+するなりして、Findかけてやれば(2)はいいのかなぁ、と思い、
Range(Cells(......),Cells(......)).Find()〜とかやっているのですが、うまくいきません。
どう指定して検索をかけてやればでしょうか?
0217デフォルトの名無しさん
2014/01/25(土) 18:23:51.19Resize使えよとは思うが、それでもできなくはないと思うが
動かんっていうコード張れ
0218デフォルトの名無しさん
2014/01/25(土) 18:34:03.11セルの結合は使うなよ
Excelは表計算だけではなくワープロ的な機能も多くて
自由度が高いけど、その自由度の高さで不適切なデータの作り方をして
不適切なデータ形式によって自分の首を絞めるバカが多すぎる
0219デフォルトの名無しさん
2014/01/25(土) 18:47:48.99素早い反応ありがとうございます。
こんな感じです。
Dim cell_a As Range
Dim cell_b As Range
Set cell_a = Worksheets("Sheet1").Range("B:B").Find(What:="target1")
Set cell_b = Worksheets("Sheet1").Range(Cells(cell_a.Row + 1, 1), Cells(cell_a.Row + 2, 1)).EntireRow.Find(What:="target2")
セルの結合に関しては、そういう風なフォーマットになっているものからデータ取り出せ、って言うことなので、自分にはどうしようもないです……
0220デフォルトの名無しさん
2014/01/25(土) 19:33:28.55どうしようもないってことはないはずだけどね
会社とかでも、改善の提案提言はできるんだからさ
単にそれをしないで、頭を使わずサルのように与えられたモノをそのまま使うことに慣れきっちゃってるだけで
そんで、本題はおそらく
Set cell_b = Worksheets("Sheet1").Range(Cells(cell_a.Row + 1, 1), Cells(cell_a.Row + 2, 1)).EntireRow.Find(What:="target2")
↓
Set cell_b = cell_a.MergeArea.Cells(1).EntireRow.Offset(1).Resize(2).Find(What:="target2")
ってことじゃないかな?
シート見てないから憶測でしかコード書けないけど、これでダメだってならシートうpね
漏らしちゃまずいデータは、"target1"みたいに適当な語句に置き換えていいからさ
0221デフォルトの名無しさん
2014/01/25(土) 20:06:06.50うぉぉぉ……
無事に動きました
どうもありがとうございます
フォーマットについては掛け合って見ます
0222デフォルトの名無しさん
2014/01/25(土) 22:39:14.10Do While 特定のセル.Value <> ""
で特定のセルが空白だったら終了する、という処理をしようとしています。
この特定のセルが使用中とは別シートのセルだった時の記述を教えて下さい。
データを転記&計算してデータ用のシートの中身がこれ以上ない場合に止める、ということをやりたいのですが
0223デフォルトの名無しさん
2014/01/25(土) 22:53:52.87Do While 別のシート.特定のセル.Value <> ""
0224デフォルトの名無しさん
2014/01/25(土) 22:58:19.12Set cell_b = cell_a.EntireRow.Offset(1).Resize(2).Find(What:="target2")
じゃないのか
というか>>219のコードでも動いてるっぽいけど
target1が(横方向の)結合セルの場合もあるのか?
だったら>>220のコードでもダメだと思うが
0225デフォルトの名無しさん
2014/01/25(土) 23:12:51.30素早いご回答ありがとうございます。
更にご質問いたしますが、特定のセル(別シート)をアクティブセルと同一座標から選びたいという時はどうすればいいでしょうか
処理を繰り返した時のアクティブセルがたまたま成績表シートC3なら、
にちゃん太郎シートC3(たまたま決まった座標)が空白の時に処理を止めるという具合です
相対参照を使うのかな?とは思うのですが……
0226デフォルトの名無しさん
2014/01/25(土) 23:59:30.440227デフォルトの名無しさん
2014/01/26(日) 00:19:28.82データシートの設計
名前 性別 国語 算数 理科 社会
愛 女 80 60 75 90
誠
0228222
2014/01/26(日) 00:28:45.75データシートの状態
出席番号 名前 性別 国語 算数 理科 社会
1 愛 女 80 60 75 90
2 誠 男 50 72 68 85
(以下何人も続くと思って下さい)
表示用シートは
出席番号 名前 性別 国語 算数 理科 社会 合計点 平均点
1
だけ入力してある状態で、
名前をデータ用から引っ張る→性別を(中略)→平均点を出す→次の行に移る→上の数字に1足した数字を入力→以下繰り返し
上記の操作を生徒のデータを全員分入力できたら(名前が空白セルになったら)終わりたいわけです
わかるでしょうか?
Do Whileさえうまく行けば入力自体はうまくいくことは確認済みです。
なお、上記のはやりたいことを単純化して一例で出したので、コピペしろとかそういうのはなしにしてくださいw
0229デフォルトの名無しさん
2014/01/26(日) 00:38:45.97別のシート.Cells(特定のセル.Row(), 特定のセル.Column()).Value
0230デフォルトの名無しさん
2014/01/26(日) 00:39:26.01■ このスレッドは過去ログ倉庫に格納されています