Excel VBA質問箱 IV

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

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


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

【78149】Sheet1で登録したグループ化を全てのシー...
質問  まゆみ  - 16/4/25(月) 15:06 -

引用なし
パスワード
   題名の通り、

"Sheet1で登録したグループ化を全てのシートに適用する"方法が
あれば教えてください。

すべてのシートを選択して、グループ化する事ができれば
問題解決なのですが、できません。

VBAを利用してできませんでしょうか。
・ツリー全体表示

【78148】Re:セルの表示幅一杯までで文字列を切り...
お礼  いのり  - 16/4/22(金) 14:09 -

引用なし
パスワード
   ▼きまぐれ さん:
>▼いのり さん:
>>でしたのでこの方法は実装しないと思いますが、参考までにセル
>> の width というのは ColumnWidth ですか?それとも Width
>>ですか?
>
>ColumnWidthではなく、Widthです。
了解しました。


>両端揃えはExcelが何文字入るか計算して、その文字数で
>切り分けているので、何文字入るかを手作業で1回やっておけば
>いいだけでしょ。と言う意味です。文字数が既知であれば
>あとは、関数なりVBAで切り分ければいいだけです。
>
>固定フォームでなく、どんなフォームにも対応したいと言うなら
>前に述べたように、力技でシコシコ文字数を割り出すしか
>ないと思います。
>
>どちらにしても、プロポーショナルフォントは駄目でしょう。
そういう意味でしたか。了解です。確かに、固定幅の文字なら、
一度手作業で文字数を調べておけば、後はその文字数で区切って
やればOKですね。今回は既に「両端ぞろえ」を使ったコードを
実装済みですのでこのままでいきますが、同じようなケースの
ときに参考にさせていただきます。

丁寧なご説明ありがとうございます。
・ツリー全体表示

【78147】Re:シートの名前をまとめたい
お礼  チャンポン E-MAIL  - 16/4/22(金) 10:06 -

引用なし
パスワード
   ありがとうございました
思っていた通りの事ができました
・ツリー全体表示

【78146】Re:シートの名前をまとめたい
発言  β  - 16/4/22(金) 4:33 -

引用なし
パスワード
   ▼チャンポン さん:

あぁ、そういったシート名も当然ありですね。
ハイパーリンク設定のところを以下に置き換えてください

           .Hyperlinks.Add Anchor:=.Cells(i, "A"), Address:="", SubAddress:= _
             "'" & sh.Name & "'!A1", TextToDisplay:=sh.Name
・ツリー全体表示

【78145】Re:シートの名前をまとめたい
質問  チャンポン E-MAIL  - 16/4/22(金) 0:39 -

引用なし
パスワード
   20160401文字この様なシート名です
理由がわかりません
・ツリー全体表示

【78144】Re:シートの名前をまとめたい
質問  チャンポン E-MAIL  - 16/4/21(木) 23:35 -

引用なし
パスワード
   確かにシート名は表示されたのですが
ハイパーリンクが、
参照が正しくありませんとメッセージボックスがでます。
ハイパーリンクの編集で一つずつ選択しなければいけない状態です。
何がいけないのでしょうか?
・ツリー全体表示

【78143】Re:隣のシートをコピー貼り付けたい
発言    - 16/4/21(木) 19:47 -

引用なし
パスワード
   こんにちは。

これは、マクロの記録でできますよ(^^
ポイントは、隣のシートを選択するときキーボードを使うこと。
右隣のシートならCtrl+PageDown
左隣のシートならCtrl+PageUp です。

キレイなコードではありませんが、できます。
よかったら試してみてください。


▼チャンポン さん:
>隣のシートの(シート名は毎回変わる)a14:k14のセルの範囲を集約と言うシートのa1に貼り付けしたい
>無知な質問で申し訳ないです
・ツリー全体表示

【78142】Re:シートの名前をまとめたい
発言  β  - 16/4/21(木) 17:36 -

引用なし
パスワード
   ▼チャンポン さん:

たとえば

Sub Test()
  Dim sh As Worksheet
  Dim i As Long
  
  With Sheets("集約")
    .Columns("A").Clear
    For Each sh In Worksheets
      If sh.Name <> .Name Then
        With Sheets("集約")
          i = i + 1
          .Hyperlinks.Add Anchor:=.Cells(i, "A"), Address:="", SubAddress:= _
            sh.Name & "!A1", TextToDisplay:=sh.Name
        End With
      End If
    Next
  End With
      
End Sub
・ツリー全体表示

【78141】Re:ファイルの削除
発言  β  - 16/4/21(木) 17:25 -

引用なし
パスワード
   ▼世田谷 さん:

質問です。

1.まず、削除というのは ブックの削除ですか?
 それとも、ブックを閉じるということですか?

2.で、マクロが書かれたブックが 123456.xls ですか?

3.そもそも、このコードで相手にしているブックはどちらですか?

4.このエクセル区画には、この2つ以外のブックは開かれていないのですか?
 であれば、987654.xls の名前を取得することはできますが、ちょっと状況依存になりますね。
 確実なのは、マクロブックの 123456.xls で、ダイアログを出して 987654.xls を選択させて、それを開く。
 開いたそのブックを相手に処理する。これが安全です。
・ツリー全体表示

【78140】シートの名前をまとめたい
質問  チャンポン E-MAIL  - 16/4/21(木) 15:25 -

引用なし
パスワード
   シートの名前を集約と言うシートの
a1から下にコピー?(シート名がわかればいい)されていくコードを教えてください
さらにハイパーリンクで貼り付けされるとなおいいです
自分なりに作ったのですがハイパーリンクにならないのです
ご教授おねがいします。
Sub シート名まとめ()
  Dim i As Long
  
  For i = 1 To Worksheets.Count
    Worksheets("集約").Cells(i + 1, 1).Value _
      = Worksheets(i).Name
    
    Worksheets("集約").Hyperlinks.Add _
      Anchor:=Cells(i + 1, 1) _
      , Address:=ThisWorkbook.FullName _
      , SubAddress:=Cells(i + 1, 1) & "!A1"
  Next
End Sub
・ツリー全体表示

【78139】ファイルの削除
質問  世田谷  - 16/4/21(木) 15:04 -

引用なし
パスワード
   123456.XLSファイルと987465.XLS二つを立ち上げて二つ並べて作業しております。
123456.XLSファイルの作業が終了した段階で
下記マクロを実行した場合、987465.XLSを削除したいのですが。
987465.XLS←ファイル名が都度変わります一定ではありません。
宜しくお願いいたします。
(コード)
Range("D9:G10").Select
  With Selection.Font
    .Name = "MS P明朝"
    .Size = 14
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = xlAutomatic
  End With
  Range("D9:G10").Select
・ツリー全体表示

【78138】Re:隣のシートをコピー貼り付けたい
発言  β  - 16/4/21(木) 8:12 -

引用なし
パスワード
   ▼チャンポン さん:

本来なら、元にするシートがどのシートかを明示したほうがいいのですが
とりあえずアクティブシートを元シートとします。
隣というのが、前なのか後ろなのかわからなかったので両方のサンプルを。

Test1,Test2 どちらでも同じ結果になります。

Sub Test1()
  Dim i As Long
  
  i = ActiveSheet.Index
  
  Range("A1:K14").Copy Sheets(i + 1).Range("A1") '次のシート
  Range("A1:K14").Copy Sheets(i - 1).Range("A1") '前のシート
  
End Sub

Sub Test2()
  
  Range("A1:K14").Copy ActiveSheet.Next.Range("A1")    '次のシート
  Range("A1:K14").Copy ActiveSheet.Previous.Range("A1")  '前のシート
  
End Sub
・ツリー全体表示

【78137】隣のシートをコピー貼り付けたい
質問  チャンポン E-MAIL  - 16/4/21(木) 7:45 -

引用なし
パスワード
   隣のシートの(シート名は毎回変わる)a14:k14のセルの範囲を集約と言うシートのa1に貼り付けしたい
無知な質問で申し訳ないです
・ツリー全体表示

【78136】Re:セルの表示幅一杯までで文字列を切り...
回答  きまぐれ  - 16/4/20(水) 16:29 -

引用なし
パスワード
   ▼いのり さん:
>でしたのでこの方法は実装しないと思いますが、参考までにセル
> の width というのは ColumnWidth ですか?それとも Width
>ですか?

ColumnWidthではなく、Widthです。


>フォントがプロポーショナルではなく「MS ゴシック」など
>固定幅のものなら固定文字数で切り分ければそれでOK・・・
> ということでしょうか?

両端揃えはExcelが何文字入るか計算して、その文字数で
切り分けているので、何文字入るかを手作業で1回やっておけば
いいだけでしょ。と言う意味です。文字数が既知であれば
あとは、関数なりVBAで切り分ければいいだけです。

固定フォームでなく、どんなフォームにも対応したいと言うなら
前に述べたように、力技でシコシコ文字数を割り出すしか
ないと思います。

どちらにしても、プロポーショナルフォントは駄目でしょう。
・ツリー全体表示

【78135】Re:セルの表示幅一杯までで文字列を切り...
発言  いのり  - 16/4/20(水) 14:23 -

引用なし
パスワード
   ▼きまぐれ さん:
>▼いのり さん:
>両端揃えの機能は、セル巾一杯に文字を分割しますので、
>印刷するとはみ出してしまいますね。
>今回は、セル巾1×35列の結合という事で、その誤差が
>幸いしたと言う事でしょうか?
誤差が幸いしたのかどうかはわかりませんが、テストした範囲では
印刷しても大丈夫なようです。

>印刷を考慮し、精度を求めるなら、作業セルに1文字ずつ
>追加しては列のAutofitを掛け、セルのwidthが元の結合セルの
>widthを超える直前の文字数をゲットする事になると思います。
>(この場合は等倍フォントでないと見た目が悪いです)
そのような方法もあるのですね。今回は「両端揃え」の方法でOK
でしたのでこの方法は実装しないと思いますが、参考までにセル
の width というのは ColumnWidth ですか?それとも Width
ですか?

>
>でも、良く考えれば固定された定型フォームのようですので、
>手作業で何文字入るか一度テストしておけば、その文字数で
>関数やVBAを使ってで区切れば良いような気もしますが。
フォントがプロポーショナルではなく「MS ゴシック」など
固定幅のものなら固定文字数で切り分ければそれでOK・・・
ということでしょうか?
・ツリー全体表示

【78134】Re:VBA >mouseover >click >mo...
お礼  Ishizo E-MAIL  - 16/4/20(水) 11:25 -

引用なし
パスワード
   りすりすさん
他の先生様

本件取り下げます。色々ぐじゅぐじゅやっていると解決しました。問題は全く別のところにありました。ありがとうございました。

Ishizo

▼Ishizo さん:
>りすりすさん 又は どなたか教えてください。
>
>【21578】- 05/1/24(月) 15:48 -
>Re:IEへのアクセスについて
>kawataさんのりすりすさん宛の質問
>>mouseover
>>click
>>mouseout
>のところを詳しく教えてください。お願いします。定年後株をやっていますが、注文と返済をボタンを押すと自動でできるようにしたいと思っています。次のHTMLに対し、次のVBAを書きました。テーブルのセルには入るのですが、注文確認ボタンを押すと消えてしまい、数量がありませんとエラーになります。これはたぶん>mouseover >click >mouseoutの設定がないためですね。どのように書けばいいか全くわかりません。教えていただけないでしょうか。よろしくお願いします。ishizo
>
>  ' 一日信用返済注文入力画面で返済注文確認画面に行く
>  
>  Set objFRAME = objIE.document.frames
>  Set objDOC = objFRAME("CT").document
>  Dim objTD As Object
>  Set objTD = objDOC.all.tags("TD")
>  Dim n As Integer
>  For n = 0 To objTD.Length - 1 。
>    If objTD(n).innerText = "返済数" Then Exit For
>  Next
>  '注文数量を入れる
>  For i = n + 6 To objTD.Length - 1 Step 5
>    If Left(objTD(i).innerText, 1) <> "株" Then Exit For
>      objTD(i).innerText = objTD(i - 4).innerText
>  Next
>
>
><TR align="center" bgcolor="#EBF1E4">
><TD nowrap width="10%">建区分<BR>(種類)</TD>
><TD nowrap width="10%">建株数<BR>[株]</TD>
><TD nowrap width="15%">建単価<BR>[円]</TD>
><TD nowrap width="15%">建日<BR>期日</TD>
><TD nowrap width="17%">評価損益<BR>[円]</TD>
><TD nowrap width="33%">返済数</TD>
></TR>
><TR align="right" bgcolor="#FFFFFF">
><TD nowrap align="center" bgcolor="#FFFFFF" rowspan="1">売建<BR>(一日)</TD>
><TD nowrap align="right">100</TD>
><TD nowrap>160.7</TD>
><TD nowrap align="center" bgcolor= "#FFFFFF">16/04/18<BR>16/04/18</TD>
><TD nowrap>10</TD>
><TD>
><INPUT type="text" name="nominal_18411020160418172160.7" maxlength="9"
>size="12" value="" style="ime-mode:disabled">株
><SPAN name="btn_up" style="{border:1px gray solid;background-color:
>#ffffff;position:relative;top:3px;text-align:center;padding-bottom:
>1px;padding-top:1px;height:18px;width:18px;cursor:pointer;-moz-border-radius:
>3px;}" onClick="javascript:orderNominalCalculate('form' ,
>'nominal_18411020160418172160.7', 'orderNominalData0', 1);
>" onMouseover="javascript:inEffect(this);" onMouseout="javascript:
>outEffect(this);"><img src="/static/image/bt_up.gif" width="12"
>height="12" border="0"></SPAN>
><SPAN name="btn_down" style="{border:1px gray solid;background-color:
>#ffffff;position:relative;top:3px;text-align:center;padding-bottom:
>1px;padding-top:1px;height:18px;width:18px;cursor:pointer;
>-moz-border-radius:3px;}" onClick="javascript:orderNominalCalculate
>('form' , 'nominal_18411020160418172160.7', 'orderNominalData0', 2);
>" onMouseover="javascript:inEffect(this);" onMouseout="javascript:
>outEffect(this);"><img src="/static/image/bt_down.gif" width="12"
>height="12" border="0"></SPAN>
><DIV id='orderNominalData0' style="display:none;">[{key:"INITDATA",
>value:"100"},{key:"UNITDATA",value:"100"},{key:"MINDATA",value:"100"},
>{key:"MAXDATA",value:"100"}]</DIV><BR>
></TD>
></TR>
・ツリー全体表示

【78133】Re:セルの表示幅一杯までで文字列を切り...
回答  きまぐれ  - 16/4/19(火) 9:33 -

引用なし
パスワード
   ▼いのり さん:
両端揃えの機能は、セル巾一杯に文字を分割しますので、
印刷するとはみ出してしまいますね。
今回は、セル巾1×35列の結合という事で、その誤差が
幸いしたと言う事でしょうか?

印刷を考慮し、精度を求めるなら、作業セルに1文字ずつ
追加しては列のAutofitを掛け、セルのwidthが元の結合セルの
widthを超える直前の文字数をゲットする事になると思います。
(この場合は等倍フォントでないと見た目が悪いです)

でも、良く考えれば固定された定型フォームのようですので、
手作業で何文字入るか一度テストしておけば、その文字数で
関数やVBAを使ってで区切れば良いような気もしますが。
・ツリー全体表示

【78132】VBA >mouseover >click >mouse...
質問  Ishizo E-MAIL  - 16/4/19(火) 9:08 -

引用なし
パスワード
   りすりすさん 又は どなたか教えてください。

【21578】- 05/1/24(月) 15:48 -
Re:IEへのアクセスについて
kawataさんのりすりすさん宛の質問
>mouseover
>click
>mouseout
のところを詳しく教えてください。お願いします。定年後株をやっていますが、注文と返済をボタンを押すと自動でできるようにしたいと思っています。次のHTMLに対し、次のVBAを書きました。テーブルのセルには入るのですが、注文確認ボタンを押すと消えてしまい、数量がありませんとエラーになります。これはたぶん>mouseover >click >mouseoutの設定がないためですね。どのように書けばいいか全くわかりません。教えていただけないでしょうか。よろしくお願いします。ishizo

  ' 一日信用返済注文入力画面で返済注文確認画面に行く
  
  Set objFRAME = objIE.document.frames
  Set objDOC = objFRAME("CT").document
  Dim objTD As Object
  Set objTD = objDOC.all.tags("TD")
  Dim n As Integer
  For n = 0 To objTD.Length - 1 。
    If objTD(n).innerText = "返済数" Then Exit For
  Next
  '注文数量を入れる
  For i = n + 6 To objTD.Length - 1 Step 5
    If Left(objTD(i).innerText, 1) <> "株" Then Exit For
      objTD(i).innerText = objTD(i - 4).innerText
  Next


<TR align="center" bgcolor="#EBF1E4">
<TD nowrap width="10%">建区分<BR>(種類)</TD>
<TD nowrap width="10%">建株数<BR>[株]</TD>
<TD nowrap width="15%">建単価<BR>[円]</TD>
<TD nowrap width="15%">建日<BR>期日</TD>
<TD nowrap width="17%">評価損益<BR>[円]</TD>
<TD nowrap width="33%">返済数</TD>
</TR>
<TR align="right" bgcolor="#FFFFFF">
<TD nowrap align="center" bgcolor="#FFFFFF" rowspan="1">売建<BR>(一日)</TD>
<TD nowrap align="right">100</TD>
<TD nowrap>160.7</TD>
<TD nowrap align="center" bgcolor= "#FFFFFF">16/04/18<BR>16/04/18</TD>
<TD nowrap>10</TD>
<TD>
<INPUT type="text" name="nominal_18411020160418172160.7" maxlength="9"
size="12" value="" style="ime-mode:disabled">株
<SPAN name="btn_up" style="{border:1px gray solid;background-color:
#ffffff;position:relative;top:3px;text-align:center;padding-bottom:
1px;padding-top:1px;height:18px;width:18px;cursor:pointer;-moz-border-radius:
3px;}" onClick="javascript:orderNominalCalculate('form' ,
'nominal_18411020160418172160.7', 'orderNominalData0', 1);
" onMouseover="javascript:inEffect(this);" onMouseout="javascript:
outEffect(this);"><img src="/static/image/bt_up.gif" width="12"
height="12" border="0"></SPAN>
<SPAN name="btn_down" style="{border:1px gray solid;background-color:
#ffffff;position:relative;top:3px;text-align:center;padding-bottom:
1px;padding-top:1px;height:18px;width:18px;cursor:pointer;
-moz-border-radius:3px;}" onClick="javascript:orderNominalCalculate
('form' , 'nominal_18411020160418172160.7', 'orderNominalData0', 2);
" onMouseover="javascript:inEffect(this);" onMouseout="javascript:
outEffect(this);"><img src="/static/image/bt_down.gif" width="12"
height="12" border="0"></SPAN>
<DIV id='orderNominalData0' style="display:none;">[{key:"INITDATA",
value:"100"},{key:"UNITDATA",value:"100"},{key:"MINDATA",value:"100"},
{key:"MAXDATA",value:"100"}]</DIV><BR>
</TD>
</TR>
・ツリー全体表示

【78131】Re:セルの表示幅一杯までで文字列を切り...
お礼  いのり  - 16/4/19(火) 8:15 -

引用なし
パスワード
   ▼きまぐれ さん:
>▼いのり さん:
>結合していない作業用セルの列巾を同じにして、両端揃え。
>分割されたデータをVBAで転記では駄目ですか。
このやり方で実現できました。よいご助言をありがとうございます。
・ツリー全体表示

【78130】Re:セルの表示幅一杯までで文字列を切り...
お礼  いのり  - 16/4/18(月) 17:07 -

引用なし
パスワード
   ▼佳 さん:
>こんにちは。
>
>>結合されたセルは「列の幅」が1のセル35個分なのに、結合して
>>いない「列の幅」35のセルの方が幅が小さいのはなぜなんでしょうね。
>
>この疑問点だけ。
>たとえばA列とB列のあいだに、灰色の縦線がありますね。
>セルの枠線ですが、枠線にはわずかですが幅がありますね。
>ちりも積もれば山となる。
>34本分の枠線の幅の分だけ結合セルのほうが幅広になります。
なるほど、遊びの部分がちりも積もれば・・・ということなんですね。


>>55.88でほぼ同じになったのですが、納得がいきません。
>うーん、ちょっと数字が大きすぎる感じがします。
>
>わたしだったら、新規ブックを2つ上下に並べて表示して
>上側をセル幅1にして35コ結合し、
>下側でマウスを使って列幅をズリズリ広げて
>上下同じ幅になったときの列幅を見ますが。
いいやり方ですね。参考にさせ4ていただきます。

>55.88ですかぁ...列幅1ってよほど狭いのでしょうか。
列幅1はかなり狭いと思います。だから遊びの部分が大きくなるんでしょうかね。
・ツリー全体表示

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