Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


174 / 3841 ページ ←次へ | 前へ→

【78975】Re:別ウィンドウのワークシート間コピー
回答  γ  - 17/4/3(月) 7:13 -

引用なし
パスワード
   SheetB.Range(SheetB.Cells(1, 1), SheetB.Cells(4, 4)) = OutData
とするのではないでしょうか。

SheetB.Range(Cells(1, 1), Cells(4, 4)) = OutData
だと、中のCellsによるセル指定は、
コード実行中のExcelのアクティブワークブックの
アクティブワークシートが前提とされてしまうからです。
・ツリー全体表示

【78974】別ウィンドウのワークシート間コピー
質問  エリエール  - 17/4/3(月) 3:16 -

引用なし
パスワード
    別ウィンドウのワークシート間コピーをしようと下記のコードを
書きましたが、エラーと書き直しの繰り返しで分からなくなり質問させて
いただきました。どなたかご教授下さいませ。

 目的:シートAのデータ(1,007行×7列の数値)を別ウィンドウで既に開かれて
いるシートBにコピーすることです。
シートAとシートBを別ウィンドウにした理由は、シートAのデータはOntimeで1秒間隔でデータを記録していますが、そのデータを元に他の場所でデータ加工するときにセルが入力状態にあるとOntimeで行っている記録が止まってしまうからです。

 コード:実際のデータ数より少なくしています。

Sub WriteData() 'イベントはSheetAのボタンを押します

Dim OutData As Variant 'データ格納用の変数です

Dim App As Object
Dim SheetA As Worksheet
Dim SheetB As Worksheet

Set SheetA = ActiveSheet

OutData = SheetA.Range(Cells(1, 1), Cells(4, 4))

Set App = GetObject("C:\Users\SheetB.xlsm")
Set SheetB = App.Worksheets("Data")

SheetB.Activate

SheetB.Range(Cells(1, 1), Cells(4, 4)) = OutData

SheetA.Activate

End Sub

環境等:Excel2010を使用しています。
    VBA初級者です。

よろしくお願いします。
・ツリー全体表示

【78973】Re:抽出の一種かと思いますが、ご質問で...
発言  β  - 17/3/31(金) 13:08 -

引用なし
パスワード
   ▼素人事務員 さん:

>マクロを登録しているテキストボックス

テキストボックスですか?
ボタンやCommandButtonではなく?

で、この図形はフォームコントトールですか?
ActiveX ですか?

表示場所は別の場所ですか、元の場所ですか?

データが5行目からあるようですが 4行目はどうなっていますか?
・ツリー全体表示

【78972】抽出の一種かと思いますが、ご質問です。
質問  素人事務員  - 17/3/31(金) 11:29 -

引用なし
パスワード
   A列に数値を記入しています。(A9〜A500まで)

A4に「7」と入力した後に、マクロを登録しているテキストボックス(以下『検索ボタン』と言います。)をクリックすると、9行から500行の内、A列の数値が7以上の行のみを表示するようにしたいです。
また、A4に「10」と入力した後に同検索ボタンをクリックすれば、9行から500行の内、A列の数値が10以上の行のみを表示する、といったA4に記入する数値によって結果を変更できるようにしたいです。

お知恵を拝借頂きたくお願い申し上げます。
・ツリー全体表示

【78971】Re:左端の列番号
お礼  トキノハジメ  - 17/3/27(月) 20:10 -

引用なし
パスワード
   ▼マナ さん:
返事遅くなりすみません。

上手く治りました。有難うございました。

今後とも、宜しくお願い致します。
・ツリー全体表示

【78970】Re:左端の列番号
発言  マナ  - 17/3/24(金) 19:25 -

引用なし
パスワード
   ▼トキノハジメ さん:
行が非表示設定になっている可能性大です

1) 86行と88行を選択
2)右クリックメニューで「再表示」
・ツリー全体表示

【78969】左端の列番号
質問  トキノハジメ  - 17/3/24(金) 19:05 -

引用なし
パスワード
   左端の列番号が1から順番に降りていくと思うのですが私のが計算が合わないので

よく見ると 86の下が88になっています。これはどうすれば直せるのでしょうか。エクセルは2010て゜゛す。
・ツリー全体表示

【78968】Re:OAUTH ヘッダーの取得でタイムアウト...
お礼  okamurin  - 17/3/17(金) 9:58 -

引用なし
パスワード
   すみません、解決しました 会社のネットワークの問題でした

宣伝ではありません


▼γ さん:
>当該会社にお尋ねください。
>それだけの情報ではわかりかねます。
>ExcelVBAとは殆ど無関係でしょう。
># ひょっとして宣伝か何かですか?
・ツリー全体表示

【78967】Re:OAUTH ヘッダーの取得でタイムアウト...
発言  γ  - 17/3/16(木) 23:01 -

引用なし
パスワード
   当該会社にお尋ねください。
それだけの情報ではわかりかねます。
ExcelVBAとは殆ど無関係でしょう。
# ひょっとして宣伝か何かですか?
・ツリー全体表示

【78966】OAUTH ヘッダーの取得でタイムアウトエラ...
発言  okamurin  - 17/3/16(木) 10:44 -

引用なし
パスワード
   お世話になります

現在GAのAPIを叩いて、情報を取得するというミッションがありまして

ミカイハックという会社が無料で提供しているツールを使っています

API CallをRequest Headerにセットするとことろでタイムアウトエラーが起こってしまい

タイムアウトの設定を長くしたいのですが、わかりません

どなたか、タイムアウトの設定を長くする方法を教えていただける方がいましたら

よろしくお願いいたします
・ツリー全体表示

【78965】Re:OnKeyでAltを含むKeyを割り当てたい
お礼  M.E  - 17/3/16(木) 0:39 -

引用なし
パスワード
   γ様

お世話になっております。
やっと、問題なくKeyを割り当てることが出来ました。

今まで、VBAは主にFunctionプロシージャーでユーザー関数を作ることに使用しておりましたが、最近 Subプロシージャーも少しずつ組むようになってまいりました。
改めて、VBAの入門書を読み返してみようと思います。

様々、ご教示いただき、
ありがとうございます。
・ツリー全体表示

【78964】Re:フォルダ内ファイル複製
発言  γ  - 17/3/15(水) 22:11 -

引用なし
パスワード
   > s = "xcopy "D:\A\* D:\B\ /D /Y" 

 s = "xcopy D:\A\* D:\B\ /D /Y" 
の間違いでした。
・ツリー全体表示

【78963】Re:slope関数など
発言  γ  - 17/3/15(水) 21:00 -

引用なし
パスワード
   VBAのなかでワークシート関数を使うなら、
Slopeの頭に WorksheetFunction.をつければよいはずですが?
VBAのなかのコードの話ですよね。
・ツリー全体表示

【78962】Re:vlookup,index関数他について
発言  γ  - 17/3/15(水) 20:53 -

引用なし
パスワード
   私は日中は職務専念義務がありますので、こちらへの投稿などできません。

大分詳細に書いていただいたので明確になった気がします。
きちんと書こうとすると、ご本人にとっても構造がよくわかってくる
という副作用も期待できることが理解いただけたと思います。
(アウトプットのフォーマットが少しわかりにくいです。
 maxがどうこうというのは説明ですか、それとも実際に求められているのか。
 行番号列番号の表示があるともっとよくなるとは思いますが・・・もういいでしょう。)

もう目処が立ったのであれば必要ないでしょうね。
サブプロシージャを使って同じ事は何度も書かないようにされたとのことですから、私の指摘したいことは既に自力で達成されたようです。


なお、私でしたら、ごく素直に以下のような感じでコードを書くと思います。
疑似コードですが、参考になりますか。

Sub test()

For j = 1 to 最終行
  ・j行の各列の値をそれぞれ変数に取り込む
  ・s6(6列目の値をこう表記)が"他"を含んでいたら数値をとりだし、
   そうでなければ 1 とする。
  
  ・もし、s2が 1 なら、ページを更新。(書込行を進めて更新する)
  
  ・s5 が "K" "L" "M"のどれに一致するか判定
  
  If "L" または "M"なら
    ・そのブロックの中での書込行番号を +1 加算。
    ・s7 をもとに(I,II,IIIなどで判定して)それぞれのブロックの列位置を決定
    ・行番号と列番号に従って、s2を書き込む。
    ・また、s6からの算定した値も書き込む   
  End If 
Next

End Sub
・ツリー全体表示

【78961】slope関数など
質問  VBA初心者  - 17/3/15(水) 20:31 -

引用なし
パスワード
   slope関数やLINEST関数で、A1方式でのサンプルコードはたくさん見られますが、
cells方式が全くといっていいほど見ることがありません。

簡単に、
= slope(range(cells(〇,〇),cells(〇,〇) , ・・・・
という風にしたいのですが、できません。

おしえていただけないでしょうか。
・ツリー全体表示

【78960】Re:vlookup,index関数他について
お礼  vba勉強中  - 17/3/15(水) 15:17 -

引用なし
パスワード
   申し訳ないです!
複雑であったためのケアレスミスが目立っていたようです。
サブルーチン化し一つずつこなすことでなんとかなりそうです。

お騒がせ致しました。
γさん、ありがとうございました。
人に伝わるようなことを考えるとミスに気付けるものだと痛感致しました。

ここで質問した工程についてはなんとかなりそうですが、おそらくまた詰まってしまいますのでその時は改めてよろしくお願いします。

完成したらこちらに貼り付けようかと思いますのでそのときはもしよければ無駄な繰り返しについて等ご指摘いただければと思います。
・ツリー全体表示

【78959】得たい結果について
発言  vba勉強中  - 17/3/15(水) 11:41 -

引用なし
パスワード
   ▼γ さん:
得たい結果について示します。
以下データベースです。
start    1    tes    tes    K    tes    I
start    2    tes    tes    L    tes    III
start    3    tes    tes    L    tes    III
1    1    tes    tes    M    他5箇所    III
1    2    tes    tes    L    tes    III
2    1    tes    tes    M    tes    I
2    2    tes    tes    K    tes    I
2    3    tes    tes    L    tes    I
3    1    tes    tes    M    tes    III
4    1    tes    tes    L    tes    III
4    2    tes    tes    K    tes    III
end    1    tes    tes    M    tes    III

以下挿入先です。

K        L                M
         n I IIb IIa III IV       nI IIb IIa III IV 
         2       1
         3       1


max       max               max
I       III                I

        (2ページ目)
K        L                M
         n I IIb IIa III IV       nI IIb IIa III IV 
         2       1         1      6


max       max               max
I       III                III


        (3ページ目)
K        L                M
         n I IIb IIa III IV       nI IIb IIa III IV 
         3 1              1 1


max       max               max
I       I                I

        (4ページ目)
K        L                M
         n I IIb IIa III IV       nI IIb IIa III IV 
                         1      1


max       max               max
I       I                III


        (5ページ目)
K        L                M
         n I IIb IIa III IV       nI IIb IIa III IV 
         1       1


max       max               max
III       III                I

        (6ページ目)
K        L                M
         n I IIb IIa III IV       nI IIb IIa III IV 
                         1      1


max       max               max
I       I                III
・ツリー全体表示

【78958】可能な限り正確な仕様を書きます
発言  vba勉強中  - 17/3/15(水) 11:15 -

引用なし
パスワード
   ▼γ さん:
データベースについての記述です。
start    1    tes    tes    K    tesp    I
start    2    tes    tes    L    tesp    III
start    3    tes    tes    L    tesp    III
1    1    tes    tes    M    tesp    III
1    2    tes    tes    L    tesp    III
2    1    tes    tes    M    tesp    I
2    2    tes    tes    K    tesp    I
2    3    tes    tes    L    tesp    I
3    1    tes    tes    M    tesp    III
4    1    tes    tes    L    tesp    III
4    2    tes    tes    K    tesp    III
end    1    tes    tes    M    tesp    III

1列目は最初と最後は文字列、その間には数字が入ります。ここが変わると挿入先のページがきりかわります。(今回自分は参照していません)
2列目は数列nです。ここに[1]が現れる毎に挿入先のページが変わります。数列nの最大値の数だけ挿入先ページに挿入されることになります。(この例では各ページに3,2,3,1,2,1個挿入されていき、挿入先は6ページとなります。)
3,4列目は今回不要なデータです。
5,7列目が挿入先のどのセルに[1]もしくは[x+1]を入れるか特定することに使われます。挿入先は7列6行が2つ並んでいます。縦に数列n(n<7を想定しています)横にはI〜IVが並んでいます。
6列目では[(他x箇所)]と書かれている場合は挿入先の数字が1ではなくx+1が挿入されます。

なので自分はK,L,Mについてifを用いて3パターン、その中でI〜IVについての5パターンをcaseで分けました。caseの中で6列目に[他x箇所]がある場合についてifを用いています。(他x箇所)について出現する位置は不定であるのでまず場所をinstrで特定し、特定した場所からmidで抜き出すようにしました。

その前に数列nについての最大値を求めています。最大値分挿入を繰り返したら次のページに進むようにしたつもりです。
また挿入先のテンプレートが7行までしかないのでひとまず7行以下であることをcountifで確認しています。実際は7行以上になることはよくあるのですがその前に詰まってしまったため、ぼろぼろと表現させていただきました。

挿入先について1ページ目と2ページ目との表の間隔は一定ですのでページが切り替わるたびに定数(37行)あけています。
・ツリー全体表示

【78957】仕様の追記について
発言  vba勉強中  - 17/3/15(水) 10:55 -

引用なし
パスワード
   ▼vba勉強中 さん:
>▼γ さん:
>こんにちは、データベースと、その貼り付け先の例についてここに貼り付けますね。
>start    1    tes    tes    K    tes    I
>start    2    tes    tes    L    tes(他6箇所)    III
>start    3    tes    tes    L    tes    III
>1    1    tes    tes    M    tes    III
>1    2    tes    tes    L    tes    III
>2    1    tes    tes    M    tes    I
>2    2    tes    tes    K    tes    I
>2    3    tes    tes    L    tes    I
>3    1    tes    tes    M    tes    III
>4    1    tes    tes    L    tes    III
>4    2    tes    tes    K    tes    III
>end    1    tes    tes    M    tes    III
>
>上記がデータベースの様式になります。範囲の関係上必要部分のみをコピーしました。[tes]に関しては参照不要です。
>start~endは直接参照はしませんでしたが、実際はその部分が変わるたびにページが切り替わります。2列目の部分が数列n、最終列は5パターンあります。このデータでは2パターンでした。唯一[tes(他6箇所)]とある部分ですがこれがある場合は挿入先の数字が7に変わります。(これがない場合は1が挿入されます)
>
>次に貼り付け先を示します。
>K    L                        M                    
>    N    tes                    N    tes                
>        I   IIb   IIa   III   IV        I   IIb   IIa   III   IV
>max
>
>
>    max                        max                    
>I    I                        I

これが挿入先の各ページに存在します。初期設定ではmaxはIを入れています。
Nには数列nの各項が入ります。またI〜IV(これが最終列5パターンのどれかであるときにその列に挿入されます)の下に[1]もしくは([他x箇所]があった場合に限り)x+1が挿入されます。
・ツリー全体表示

【78956】Re:vlookup,index関数他について
発言  vba勉強中  - 17/3/15(水) 10:48 -

引用なし
パスワード
   ▼γ さん:
>>2~5,8~12列目にはほとんどの場合1が入りますが
>その列には、何がどんなルールで入るのか説明されていない。
>"ほとんど"ではコードは組めない。
これについてですが先ほどの例ですと6列目(実際は14列目)において[他x箇所]と含まれている場合に限りx+1が入りますが、それ以外では1が入ります。

>また、"ぼろぼろ"というコードが謙遜なのか本当にぼろぼろなのか
>よく見ていないが、要件が不明のなかで、
>これを回答者に分析しろというのは酷に過ぎる。
申し訳ありません、切羽詰まりすぎて回答者の方に対する配慮が全く到っておりませんでした。


>・正確な仕様を説明すること
これについては分かるように練って再度投稿したいと思います。
>・具体的な例を示すこと
このことに関しましては先ほどのものでなんとかお願いしたいですが、どうでしょうか?
>がなければ、いくら待っていても適切な回答はつきにくいと思います。
>一発逆転の関数では対応できない複雑なルールなのでは?
複数の条件で特定のセルに挿入したいところであります。
nは任意ですが小さい順に,K,L,M及びI〜IVで挿入先の位置を特定し、挿入します。
それをnが1になるたびに挿入先のページが1ページ進む、ということをしたいです。

仕様について少しでもわかりやすいように練って参ります。
・ツリー全体表示

174 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free