質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

4回答

4274閲覧

Excel vbaの数値入れ替え方法

todo293

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

2クリップ

投稿2020/11/01 05:21

A1に"123",B1が"456"だとすると
ボタンを実行するたびに
B1が"456",A1に"123"と交互になるにはどのようなプログラムを書けばいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

あなたが提示したSub Rensyu15()を交互に呼び出せばよいのではないでしょうか。
1回目 call 上のRensyu15()
2回目 call 下のRensyu15()
3回目 call 上のRensyu15()
4回目 call 下のRensyu15()
以降同様

それとも、こういうことでしょうか?

VBA

1Public Sub 行列転置() 2 Worksheets("Sheet3").Range("A1:J10").Value = WorksheetFunction.Transpose(Worksheets("Sheet3").Range("A1:J10").Value) 3End Sub 4

投稿2020/11/01 23:43

編集2020/11/02 01:36
tatsu99

総合スコア5493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

todo293

2020/11/02 12:09

解決方法が分かりました。 ありがとうございました!
guest

0

ベストアンサー

次のコードでいかがでしょうか。

VBA

1Sub Rensyu15() 2 Static k As Long 3 Dim i As Integer, j As Integer, Keisan As Integer 4 For i = 1 To 10 5 For j = 1 To 10 6 Keisan = k * (10 * (i - 1) + j) + (1 - k) * (10 * (j - 1) + i) 7 Worksheets("Sheet3").Cells(i, j) = Keisan 8 Next j 9 Next i 10 k = 1 - k 11End Sub

投稿2020/11/01 19:09

kitasue

総合スコア314

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

todo293

2020/11/02 12:13

そういう事です! 解決しました、ありがとうございました!!
todo293

2020/11/02 12:29

簡単な質問で申し訳ないのですがkに数値を格納していない場合は0になるということでしょうか?
kitasue

2020/11/02 12:58

はい。数値型の変数の初期値は0です。
todo293

2020/11/02 13:53

ありがとうございます!
guest

0

ExcelVBA

1Sub Macro1() 2 Range("B1").Cut 3 Range("A1").Insert Shift:=xlToRight 4End Sub 5 6Sub Macro2() 7 Cells(2).Cut 8 Cells(1).Insert Shift:=xlToRight 9End Sub 10 11Sub test1() 12 Dim Rng As Range 13 Dim tmp As Variant 14 15 Set Rng = Range("A1:B1") 16 tmp = Rng(1).Value 17 Rng(1).Value = Rng(2).Value 18 Rng(2).Value = tmp 19End Sub 20 21Sub test2() 22 Dim c As Range 23 Dim v As Variant 24 25 Set Rng = Range("A1").Resize(, 2) 26 v = Rng.Value 27 Rng(1).Value = v(1, 2) 28 Rng(2).Value = v(1, 1) 29End Sub 30

エクセル的にセルを切り取って挿入するか、
セルの値を一時的に変数に退避しておいて書き直すか、
やり方は2種類ですかね?

セルの位置の表現のしかた、変数の使い方で、様々に書けます。

投稿2020/11/01 06:05

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

todo293

2020/11/01 10:33

Sub Rensyu15() Dim i As Integer, j As Integer, Keisan As Integer For i = 1 To 10 For j = 1 To 10 Keisan = 10 * (i - 1) + j Sheet3.Cells(i, j) = Keisan Next j Next i End Sub というコードを Sub Rensyu15() Dim i As Integer, j As Integer, Keisan As Integer For i = 1 To 10 For j = 1 To 10 Keisan = 10 * (j - 1) + i Sheet3.Cells(i, j) = Keisan Next j Next i End Sub というコードを交互に実行するようになるコードを作りたいのです。 よろしくお願いします????
mattuwan

2020/11/02 03:35

話が全然違うと思いますが、その点についてどう思われてますか? また、コードを考えても話がうまくこちらに伝わってなければ、 時間の無駄ですよね?その点についてどう思われますか? マクロ実行前の前提条件として、 セルA1:J10の範囲にはすでに何かしらの値が入っているのですか? それとも、今までの入力はクリアして、 「連番」を横優先で振ったり、 縦優先で振ったりしたいのですか? まずはやりたいことを日本語で伝えるところから、 プログラミングを始めましょう。 日本語で作業内容を論理立てて順序良く説明し、 それをVBA語に翻訳してエクセル君に伝えばよいかと思いますが、 そのことについてどう思われますか?
todo293

2020/11/02 12:11

伝達能力の低さにより気分を害してしまったのでしたらすいませんでした。 解決方法が分かりました。 ありがとうございました。
mattuwan

2020/11/03 03:27

別に気分など害しても損ねてもいません。 todo293さんにちゃんと考えていただいて、 そして自分で気づいて、言葉にして発して頂けたらと思います。 今回の件も、ちゃんと言葉にできていたら、自分でコードを書けたのでは? と思ってます。 こういう時はこうするという暗記みたいな勉強法は進歩がないですよ。 どうやったら、自分のやりたいことが相手に伝わるか、 3時間でも4時間でもかけて考えを整理し、言葉にしてみるということが、 一番の勉強法だと思います。 VBAに時間を使いたくないのであれば、一生、他人に作ってもらうことになるかと思います。
guest

0

  1. なにか変数を用意しておく
  2. 変数にA1のナカミを代入
  3. A1にB1のナカミを代入
  4. B1に変数を代入
  5. おしまい

投稿2020/11/01 05:45

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

todo293

2020/11/01 05:55

その事は分かっているのですが、実行するたびにセルに出力した数値が変わるにはどうしたらよいのでしょうか? 失礼ですいません。よろしくお願いします????
y_waiwai

2020/11/01 06:12

ちと意味がよくわかりませんが、 セルに出力した数値が変わらないってのはまた話が違ってきますが。。 どういうコードで実行した時に値が変わらないって話なんでしょうか
todo293

2020/11/01 10:32

Sub Rensyu15() Dim i As Integer, j As Integer, Keisan As Integer For i = 1 To 10 For j = 1 To 10 Keisan = 10 * (i - 1) + j Sheet3.Cells(i, j) = Keisan Next j Next i End Sub というコードを Sub Rensyu15() Dim i As Integer, j As Integer, Keisan As Integer For i = 1 To 10 For j = 1 To 10 Keisan = 10 * (j - 1) + i Sheet3.Cells(i, j) = Keisan Next j Next i End Sub というコードを交互に実行するようになるコードを作りたいのです。 よろしくお願いします????
vann_2921

2020/11/01 10:37

同じコードが2個書かれていますけど書き間違いではないですか? コードではなくイメージしている結果を教えてもらえますか?
todo293

2020/11/01 13:06

2個目では10 * ( i - 1 ) + 1のiとjの値が逆になっています。 イメージとしてはセルのA1からJ10まで自然数の1-100までを出力して A B C D E F G H I J 1 1 2 3 4 5 6 7 8 9 10 2 11 12 13..... 20 3 21..... 4 5 6 7 8 9 10 100 というものがiとjをいれかえて A B C D E F G H I J 1 1 11 21 31 41 51 61 71 81 91 2 2 12 3 3 13 4 4 14... 5 5 6 6 7 7 8 8 9 9 10 10 100 とVBAを実行する度に列と行が入れ替わるように設定したいのです。
todo293

2020/11/02 12:12

解決方法が分かりました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問