Excel VBA質問箱 IV

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

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


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

【78473】Re:文字入力すると次のセルに移動するVBA
発言  β  - 16/9/29(木) 13:59 -

引用なし
パスワード
   ▼洋子 さん:

>VBAをお願いします

>マクロ以外でお願いします。

・・・・・・

VBAってマクロなんですが?
・ツリー全体表示

【78472】文字入力すると次のセルに移動するVBA
質問  洋子  - 16/9/29(木) 12:28 -

引用なし
パスワード
   A1セルに文字を入力するとC2へ移動するようなVBAをお願いします。
入力課所は7か所ぐらいです。
マクロ以外でお願いします。
・ツリー全体表示

【78471】Re:セルに文字列が入力されたらマクロの...
お礼  北風  - 16/9/27(火) 11:34 -

引用なし
パスワード
   ▼β さん:
>▼北風 さん:
>
>1つのモジュールに同じ名前のプロシジャを書くことはできません。
>今、2つ(あるいはもっとたくさん?)あるWorksheet_Changをすべてアップしてください。

β さんお力沿い有難うございます。

Workshee Opendeで問題解決できました。
お手数かけました有難うございます・
・ツリー全体表示

【78470】Re:セルに文字列が入力されたらマクロの...
発言  β  - 16/9/27(火) 11:04 -

引用なし
パスワード
   ▼北風 さん:

1つのモジュールに同じ名前のプロシジャを書くことはできません。
今、2つ(あるいはもっとたくさん?)あるWorksheet_Changをすべてアップしてください。
・ツリー全体表示

【78469】Re:セルに文字列が入力されたらマクロの...
回答  北風  - 16/9/27(火) 10:03 -

引用なし
パスワード
   ▼独覚 さん:
>▼北風 さん:
>>『コンパイルエラー
>>名前が適切ではありません Worksheet_Chang』 となります。
>
>おなじワークシートモジュール内に
>Private Sub Worksheet_Change(ByVal Target As Range)
>が複数ありませんか?

セルに入力したら次の指定セルに移動するコードがあります。
回避方法がわかりません
・ツリー全体表示

【78468】Re:セルに文字列が入力されたらマクロの...
発言  独覚  - 16/9/27(火) 9:49 -

引用なし
パスワード
   ▼北風 さん:
>『コンパイルエラー
>名前が適切ではありません Worksheet_Chang』 となります。

おなじワークシートモジュール内に
Private Sub Worksheet_Change(ByVal Target As Range)
が複数ありませんか?
・ツリー全体表示

【78467】Re:セルに文字列が入力されたらマクロの...
回答  北風  - 16/9/27(火) 9:13 -

引用なし
パスワード
   ▼β さん:
> ▼北風 さん:
>
> 横から失礼します。
>
>>「XXX」はマクロ実行名(標準モジュールで作成)「削除」となります。
> >エラーというか
> >Private Sub Worksheet_Change(ByVal Target As Range)←ここで停止して動きません。
>
> 停止して動かないという状態で、何もメッセージはでていないのですか?

『コンパイルエラー
名前が適切ではありません Worksheet_Chang』 となります。
>
> それと、標準モジュールに書かれた xxx のコードを見たいですねぇ。
> γさんも示唆しておられますがイベント連鎖による再入が発生しているのかもしれませんので。
(標準モジュール)
Sub 削除()
Dim rng As Range
 Dim txt As String

 For Each rng In Range("Q10")
  txt = rng.Value
  txt = Replace(txt, " ", "")
  txt = Replace(txt, " ", "")
  rng.Value = txt
 Next rng
 Range("D5:G6").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("Q15:V15").Select
  ActiveCell.FormulaR1C1 = "未定"
  ActiveCell.Characters(1, 2).PhoneticCharacters = "ミテイ"
  Range("IS15").Select
  Range("S2").Value = Date
  End Sub
・ツリー全体表示

【78466】Re:セルに文字列が入力されたらマクロの...
発言  β  - 16/9/26(月) 18:01 -

引用なし
パスワード
    ▼北風 さん:

横から失礼します。

>「XXX」はマクロ実行名(標準モジュールで作成)「削除」となります。
>エラーというか
>Private Sub Worksheet_Change(ByVal Target As Range)←ここで停止して動きません。

停止して動かないという状態で、何もメッセージはでていないのですか?

それと、標準モジュールに書かれた xxx のコードを見たいですねぇ。
γさんも示唆しておられますがイベント連鎖による再入が発生しているのかもしれませんので。
・ツリー全体表示

【78465】Re:セルに文字列が入力されたらマクロの...
質問  北風  - 16/9/26(月) 15:49 -

引用なし
パスワード
   ▼γ さん:
>エラー内容の説明も、XXXの説明もないので、質問として未完了です。
>このままいくら待っていても、回答は出てこないと思います。
不慣れな質問で申し訳ありません。
「XXX」はマクロ実行名(標準モジュールで作成)「削除」となります。
エラーというか
Private Sub Worksheet_Change(ByVal Target As Range)←ここで停止して動きません。
宜しくお願いします
・ツリー全体表示

【78464】Re:数字の出てくる確率を変更したいので...
お礼  m  - 16/9/25(日) 13:30 -

引用なし
パスワード
   γ さん:

返信ありがとうございます。
2つの投稿とも読ませていただきました。

>まずはインデントをしっかりつけることをお勧めします。
>理解しやすさ、デバッグのしやすさが断然違うはずです。

なるほど。そうですね!
インデントするのが面倒だなぁと思っていたのですが
インデントしてある方が見やすいですね。
次からはきちんとインデントするようにします。


>結果が得られることが最大の目的ですので、これはこれでよいのですが、
>細かいことを申し上げれば、次の2点が浮かびます。
>
>(1)Cells(n - 2, 1).Value とCells(n - 1, 1).Valueがたくさん出てきて見にくいです。
>  Don't Repeat Yourself(同じ事を繰り返すな)ということを言いますが、
>  例えば、変数でいったん受けてから、判定をすれば、もっと見やすくなるでしょう。
>
>    a = Cells(n - 2, 1).Value
>    b = Cells(n - 1, 1).Value
>    If a = 3 And b = 2 Then Cells(n, 1).Value = 4
>    If a = 3 And b = 4 Then Cells(n, 1).Value = 2
>    ・・・・・

私自身も、
同じのばっかりで見にくいなぁと思っていました。
なるほど、そういう風に変数に代入してしまうと、すっきりして見やすくなるのですね!

 
>(2)マッチしたとしても、その後も続けて最後まで判定するので無駄です。
>  なにか工夫が必要でしょう。

そうなのです。
でも、今の私では、これが精一杯でした…。
どのように改善したらいいのか、今後VBAを勉強して、調べたいと思います。


>Dictionaryを使わない版も示しておきましょう。
>たぶん、こちらのほうが理解し易いでしょうし、
>追加の加工もし易いはずです。


わざわざDictionaryを使わないバージョンまで作っていただいて…
本当にありがとうございます!
そうですね。私としては、Dictionaryを使わない方が
どんなふうにプログラムが組まれているのか見やすいなと思いました!


なにからなにまで、
本当にありがとうございました。
・ツリー全体表示

【78463】Re:数字の出てくる確率を変更したいので...
回答  γ  - 16/9/25(日) 12:26 -

引用なし
パスワード
   Dictionaryを使わない版も示しておきましょう。
たぶん、こちらのほうが理解し易いでしょうし、
追加の加工もし易いはずです。

Option Explicit

Sub test()     ' 繰り返し判定版
  Dim i As Long
  Dim j As Long
  Dim n As Long
  Dim m As Long
  Dim a As Long
  Dim b As Long
  Dim k As Long
  Dim seq As Long
    
  Range("A1").CurrentRegion.Clear
  
  For k = 1 To 50
    '最初の二つをランダムにセット(そのままにしてあります)
    For i = 1 To 2
      j = Int(((4 - 1 + 1) * Rnd) + 1)
      If i = 2 Then
        Do While Cells(i - 1, k).Value = j
          j = Int(((4 - 1 + 1) * Rnd) + 1)
        Loop
      End If
      Cells(i, k).Value = j
    Next i
    
    '使用する系列
    seq = WorksheetFunction.RandBetween(1, 2)

    For n = 3 To 100
      a = Cells(n - 2, k).Value
      b = Cells(n - 1, k).Value
      
      ' 特定の組み合わせのとき、系列を再検討
      If (a = 4 And b = 3) Or (a = 1 And b = 4) Or (a = 2 And b = 1) Then
        seq = whichSequence(0.85)
      End If
      
      '次の数値を得る
      If seq = 1 Then
        Cells(n, k).Value = nextByA(a, b)
      Else
        Cells(n, k).Value = nextByB(a, b)
        Cells(n, k).Interior.Color = 15773696  '背景色をつけました
      End If
    Next n
  Next k

End Sub
Function whichSequence(v As Double) As Long
  If Rnd < v Then
    whichSequence = 1
  Else
    whichSequence = 2
  End If
End Function

Function nextByA(a As Long, b As Long) As Long
  Select Case True
    Case a = 3 And b = 2: nextByA = 4
    Case a = 3 And b = 4: nextByA = 2
    Case a = 4 And b = 1: nextByA = 3
    Case a = 1 And b = 2: nextByA = 1
    Case a = 2 And b = 4: nextByA = 1
    Case a = 4 And b = 3: nextByA = 2
    Case a = 3 And b = 1: nextByA = 2
    Case a = 1 And b = 4: nextByA = 3
    Case a = 4 And b = 2: nextByA = 3
    Case a = 2 And b = 1: nextByA = 4
    Case a = 1 And b = 3: nextByA = 4
    Case a = 2 And b = 3: nextByA = 1 '■追加
  End Select
End Function

Function nextByB(a As Long, b As Long) As Long
  Select Case True
    Case a = 3 And b = 2: nextByB = 3
    Case a = 3 And b = 4: nextByB = 1
    Case a = 4 And b = 1: nextByB = 2
    Case a = 1 And b = 2: nextByB = 4
    Case a = 2 And b = 4: nextByB = 3
    Case a = 4 And b = 3: nextByB = 1
    Case a = 3 And b = 1: nextByB = 4
    Case a = 1 And b = 4: nextByB = 2
    Case a = 4 And b = 2: nextByB = 1
    Case a = 2 And b = 1: nextByB = 3
    Case a = 2 And b = 3: nextByB = 4 '■修正
    Case a = 1 And b = 3: nextByB = 2 '■追加
  End Select
End Function
・ツリー全体表示

【78462】Re:数字の出てくる確率を変更したいので...
発言  γ  - 16/9/25(日) 12:24 -

引用なし
パスワード
   少し時間ができましたので、コメントしておきます。

まずはインデントをしっかりつけることをお勧めします。
理解しやすさ、デバッグのしやすさが断然違うはずです。

Sub 配列A()
  Dim i As Integer
  Dim j As Integer
  Dim n As Integer
  Dim m As Integer

  For i = 1 To 2
    j = Int(((4 - 1 + 1) * Rnd) + 1)
    If i = 2 Then
      Do While Cells(i - 1, 1).Value = j
        j = Int(((4 - 1 + 1) * Rnd) + 1)
      Loop
    End If
    Cells(i, 1).Value = j
  Next i

  For n = 3 To 24
    If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 2) Then
      Cells(n, 1).Value = 4
    End If
    If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 4) Then
      Cells(n, 1).Value = 2
    End If

    If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 1) Then
      Cells(n, 1).Value = 3
    End If

    If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 2) Then
      Cells(n, 1).Value = 1
    End If

    If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 4) Then
      Cells(n, 1).Value = 1
    End If

    If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 3) Then
      Cells(n, 1).Value = 2
    End If

    If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 1) Then
      Cells(n, 1).Value = 2
    End If

    If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 4) Then
      Cells(n, 1).Value = 3
    End If

    If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 2) Then
      Cells(n, 1).Value = 3
    End If

    If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 1) Then
      Cells(n, 1).Value = 4
    End If

    If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 3) Then
      Cells(n, 1).Value = 4
    End If
  Next n
End Sub

結果が得られることが最大の目的ですので、これはこれでよいのですが、
細かいことを申し上げれば、次の2点が浮かびます。

(1)Cells(n - 2, 1).Value とCells(n - 1, 1).Valueがたくさん出てきて見にくいです。
  Don't Repeat Yourself(同じ事を繰り返すな)ということを言いますが、
  例えば、変数でいったん受けてから、判定をすれば、もっと見やすくなるでしょう。

    a = Cells(n - 2, 1).Value
    b = Cells(n - 1, 1).Value
    If a = 3 And b = 2 Then Cells(n, 1).Value = 4
    If a = 3 And b = 4 Then Cells(n, 1).Value = 2
    ・・・・・
 
(2)マッチしたとしても、その後も続けて最後まで判定するので無駄です。
  なにか工夫が必要でしょう。

次の投稿を見て参考にしてください。
・ツリー全体表示

【78461】Re:見出しの下側に「二本線」
発言    - 16/9/25(日) 10:30 -

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

宿題ですか?
もしそうなら、教科書をひっくり返して見れば
正解か大ヒントが載っているんじゃないですか?


> ・Withステートメントを使用し、参照したオブジェクトに対する処理を簡潔に記述する
ここに出てくる【参照したオブジェクト】とは、問題文で1行上にあるコレ↓ですよね。
> ・セル「A2」を基準に「End」プロパティで右の終端セルまでを見出し範囲として参照する

となると
>With Range("A2")
Range("A2")は違うんじゃないですか。問題文をそのまま当てはめたら
 With 参照したオブジェクト
 With セル「A2」を基準に「End」プロパティで右の終端セルまで
 With 見出し範囲
こういう形にならないと、出題の意図に合いません。
出題の意図に合わなければ、たとえコードは動いても、宿題としては×です。

二重線を引くところも
>「Borders」プロパティで「二本線」罫線
Bordersという語はコードの中で絶対に使わないといけません。


というのを念頭に、βさんご推奨のマクロの記録をやってみたらいいんじゃないですか?
記録するのは下罫線の部分だけで十分かなとおもいます。
・ツリー全体表示

【78460】Re:数字の出てくる確率を変更したいので...
お礼  m  - 16/9/24(土) 23:56 -

引用なし
パスワード
   γ さん


載せていただいていたプログラムを
動かしてみました。

私が思っていた通りの数字の配列になっており大変驚きました。

本当にありがとうございました。

また、
ランダムな位置からスタートバージョンも作成していただいていて、
本当にありがとうございました。

論文の内容を確認したところ、「スタートはランダムな数字から」と書かれていたので、ランダムスタートバージョンを使用させていただきたいと思います。

本当に何から何まで…

感謝の言葉が思いつきません…


本当にありがとうございました。
・ツリー全体表示

【78459】Re:数字の出てくる確率を変更したいので...
お礼  m  - 16/9/24(土) 23:32 -

引用なし
パスワード
   γ さん


一番大切な系列がループするという条件を書き忘れていて、
本当に申し訳ありませんでした。
伝えないといけないことがたくさんあり、何を伝えたか、伝えられていないかきちんと把握できておらず、軽くパニックになってしまっていました。


ちなみになのですが、
一応以下のようなプログラムを組んでみていました。

ですが、A系列のみ、B系列のみの刺激提示しかできず、
ここで止まってしまっていました。

また、今動かしてみたところ、
どちらも途中で数字が止まってしまっていたので、
どこか間違えているところがあるのかもしれません。


本当にたくさんご足労をおかけしました。
いろいろと丁寧に対応していただき、本当にありがとうございました!


Sub 配列A()

Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim m As Integer


For i = 1 To 2

j = Int(((4 - 1 + 1) * Rnd) + 1)

If i = 2 Then

Do While Cells(i - 1, 1).Value = j
j = Int(((4 - 1 + 1) * Rnd) + 1)
Loop

End If
Cells(i, 1).Value = j

Next i


For n = 3 To 24

If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 4
End If


If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 2
End If

If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 3
End If

If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 1
End If

If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 1
End If

If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 3) Then
Cells(n, 1).Value = 2
End If

If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 2
End If

If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 3
End If

If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 3
End If

If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 4
End If

If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 3) Then
Cells(n, 1).Value = 4
End If

Next n


End Sub


Sub 配列B()

Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim m As Integer


For i = 1 To 2

j = Int(((4 - 1 + 1) * Rnd) + 1)

If i = 2 Then

Do While Cells(i - 1, 1).Value = j
j = Int(((4 - 1 + 1) * Rnd) + 1)
Loop

End If
Cells(i, 1).Value = j

Next i


For n = 3 To 24

If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 3
End If

If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 1
End If

If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 2
End If

If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 4
End If

If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 3
End If

If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 3) Then
Cells(n, 1).Value = 1
End If

If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 4
End If

If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 2
End If

If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 1
End If

If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 3
End If

If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 3) Then
Cells(n, 1).Value = 3
End If

Next n


End Sub
・ツリー全体表示

【78458】Re:数字の出てくる確率を変更したいので...
お礼  m  - 16/9/24(土) 22:41 -

引用なし
パスワード
   γ さん

返信ありがとうございます。
すいません。バイト中だったのでずっと返信できずにいました。申し訳ございません。


プログラムをここまで組んでいただいていたんですね!
本当にありがとうございます!


まだVBAを始めて1週間の私なので、
加工がうまくできるかわかりませんが、頑張ってやってみます!


至らないところや、言葉の足りないことなどが多々あり、
大変ご迷惑をおかけしました。


11月までには実験に取り掛かれるようにしたかったので
本当に助かりました。


自分で加工する中で、わからないところなどあれば、また相談させていただければ…と思っています。


本当にありがとうございます!!
・ツリー全体表示

【78457】Re:数字の出てくる確率を変更したいので...
発言  γ  - 16/9/24(土) 19:46 -

引用なし
パスワード
   時間がとれなくなったので、こちらのものをそちらで加工してください。

Sub test()
  Dim s1 As String: s1 = "1→2→1→4→3→2→4→1→3→4→2→3→1→2"
  Dim s2 As String: s2 = "1→2→4→3→1→4→2→1→3→2→3→4→1→2"
  
  Dim dic1 As Object
  Dim dic2 As Object
  Dim dic As Object
  
  Dim j  As Long
  Dim k  As Long
  Dim ss As String
  Dim s  As String
 
  Columns("A:A").NumberFormatLocal = "@"
  
  Set dic1 = CreateObject("Scripting.Dictionary")
  Set dic2 = CreateObject("Scripting.Dictionary")
  
  s1 = Replace(s1, "→", "")
  s2 = Replace(s2, "→", "")
  
  For k = 1 To Len(s1) - 2
    dic1(Mid(s1, k, 2)) = Mid(s1, k + 2, 1)
    dic2(Mid(s2, k, 2)) = Mid(s2, k + 2, 1)
  Next
  ' このDictionaryというのは、"12"→"1","21"→"4","14"→ "3" 、・・・のような、
  ' 直前二つの数値に対応する次の数値の組み合わせを管理するもので、
  ' dic1("12") とすると "1" が返るようなデータ構造です。
    
  For j = 1 To 10         'トライアルの数
  
    ss = "12"          '作成文字列(固定の文字列を指定)
    Set dic = dic1       'スタートは系列Aで。
    
    'ランダムな位置からスタート
    'If WorksheetFunction.RandBetween(1, 2) = 1 Then
    '  Set dic = dic1
    '  ss = Mid(s1, WorksheetFunction.RandBetween(1, 12), 2)
    'Else
    '  Set dic = dic2
    '  ss = Mid(s2, WorksheetFunction.RandBetween(1, 12), 2)
    'End If
  
    For k = 1 To 100 - 2    '100 個からなる数字作成のため繰り返し
      s = Right(ss, 2)
      If s = "43" Or s = "14" Or s = "21" Then ' regime switching
        If whichSequence(0.85) = 1 Then
          Set dic = dic1
        Else
          Set dic = dic2
        End If
      End If
      ss = ss & dic(s)  '次の数字を連結する
    Next
    
    '結果出力
    Cells(j, 1).Value = ss
  Next
  
  Columns("A:A").EntireColumn.AutoFit

End Sub
Function whichSequence(v As Double) As Long
  If Rnd < v Then
    whichSequence = 1
  Else
    whichSequence = 2
  End If
End Function
・ツリー全体表示

【78456】Re:数字の出てくる確率を変更したいので...
発言  γ  - 16/9/24(土) 19:08 -

引用なし
パスワード
   >「2つの数字の組み合わせで次が決定する」というプログラムをVBAでやってみて、
>A系列だけ、B系列だけであれば、うまく動かすことができました。
これの提示をお願いします。

それに追加する形で回答しようと思います。
・ツリー全体表示

【78455】Re:見出しの下側に「二本線」
発言  β  - 16/9/24(土) 16:31 -

引用なし
パスワード
   ▼くまはち さん:

>.Range("A2".xlToRight).xlEdgeBottom
>
>にエラーが発生してしまいましたが原因がわかりません。

でしょうね。エラーになります。
私が申し上げたのは、まず操作をマクロ記録する。そうすると必要な設定コードが自動生成される。
それを参考にして、コードを書いてみる。
で、それを実行してみる。

ということです。

.Range("A2".xlToRight).xlEdgeBottom

という記述そのものが、VBA記述ルールから見るとめちゃくちゃですので。
マクロ記録で出来上がるコードを見れば正しい書き方がわかるはずです。

あとは、固定で操作をした A2:●2 という領域を変数化すればいいんですよ。
ここがわからなければお手伝いしますが、まず、できるところ(できるはずです)までやってみましょう。
・ツリー全体表示

【78454】Re:見出しの下側に「二本線」
質問  くまはち  - 16/9/24(土) 16:26 -

引用なし
パスワード
   ▼β さん:
実行してみたところ

.Range("A2".xlToRight).xlEdgeBottom

にエラーが発生してしまいましたが原因がわかりません。


>▼くまはち さん:
>
>>3.表の2行目(A2:I2)の見出し行の体裁(書式)を変更するステートメントを次の条件で作成してください。
>
>提示の条件通りにシート上の操作を行うことはできますよね?
>(最終列については、まずは固定でもいいです)
>それをマクロ記録してみましたか?
>どういう設定コードになるかがわかるはずですが?
>
>>以下の式であってますか?
>
>仮に、間違ったコードのマクロを実行しても、PCが爆発することはありません。
>実際に実行してどうなるかを確かめてみてはいかがですか?
>
>●質問は、上記2点を行ったうえで、コードを組み立て、実行して、
>
> 結果が思わしくない、このコードでこのエラーになった。どうしたらいいか。
>
> こうされてはいかがですか?
>
>
・ツリー全体表示

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